ncmpc ne vous suffit pas ? Essayez ncmpcpp !

le 10/09/2011 dans Linux #console#Linux#mpd#terminal

ncmpcpp est un autre client pour MPD, ressemblant fort à ncmpc (interface en ncurse, navigation similaire) mais apportant de nouvelles fonctionnalités parmi lesquelles la visualisation, l'édition des tags, la recherche avec des expressions régulières, une véritable navigation au sein de votre collection… Bref un logiciel plus qu'intéressant si vous vous sentez limité avec ncmpc.

ncmpcpp est disponible dans les dépôts d'Ubuntu dans sa version 0.3.4, pour l'installer :

$ sudo aptitude install ncmpcpp

Pour le lancer, la commande suivante suffit :

$ ncmpcpp

La configuration se fait, comme pour ncmpc, à la main dans le fichier ~/.ncmpcpp/config. On commence par créer le répertoire ~/.ncmpcpp puis on copie le ficher d'exemple avant de l'éditer :

$ mkdir ~/.ncmpcpp
$ cp /usr/share/doc/ncmpcpp/config.gz ~/.ncmpcpp/
$ gzip -d ~/.ncmpcpp/config.gz
$ nano ~/.ncmpcpp/config

Si vous avez des difficultés pour configurer ncmpcpp, penchez-vous sur la documentation :

$ man ncmpcpp

ll faut relancer ncmpcpp pour que les modifications du fichier de configuration soient prises en compte. Si ce n'est pas le cas, avez-vous bien pensé à supprimer le # en début de ligne ? De plus, vous trouverez mon fichier de configuration en bas de page.

Je vais tout de même aborder deux points :

  1. pour pouvoir éditer les tags depuis ncmpcpp, il vous faut impérativement renseigner le champ mpd_music_dir (ligne 14) qui correspond au répertoire de votre musique (celui que vous avez indiqué dans la configuration de MPD) ;
  2. pour profiter de la visualisation, il faut commencer par modifier la configuration de MPD (fichier /etc/mpd.conf – cf. cette page). Ainsi, dans la section Audio Output, rajouter ces lignes :
audio_output {
 type "fifo"
 name "My FIFO"
 path "/tmp/mpd.fifo"
 format "44100:16:1"
}

Voici à quoi ressemble cette section Audio Output de mon /etc/mpd.conf :

audio_output {
 type "pulse"
 name "My MPD PulseAudio Output"
}
mixer_type "software"
audio_output {
 type "fifo"
 name "My FIFO"
 path "/tmp/mpd.fifo"
 format "44100:16:1"
} 

Il faut ensuite éditer certaines options dans le fichier ~/.ncmpcpp/config ; les voici :

visualizer_fifo_path = "/tmp/mpd.fifo"
visualizer_output_name = "My MPD PulseAudio Output"
visualizer_sync_interval = "30"
visualizer_type = "spectrum" (spectrum/wave)

Pensez à relancer mpd avec l'une des deux commandes suivantes :

$ sudo /etc/init.d/mpd restart
$ sudo service mpd restart

et voilà ! Vous n'avez plus qu'à admirer le résultat en lançant ncmpcpp et vous rendre au neuvième onglet (pensez à lancer la lecture, sinon vous ne verrez rien…).

####################################################
## this is example configuration file, copy it to ##
## ~/.ncmpcpp/config and set up your preferences  ##
####################################################
#
##### connection settings #####
#
## set it in order to make tag editor and renaming files work properly
#
mpd_host = "localhost"
#
mpd_port = "6600"
#
mpd_music_dir = "/Multimedia/Musique"
#
#mpd_connection_timeout = "5"
#
#mpd_crossfade_time = "5"
#
mpd_communication_mode = "notifications" (polling/notifications)
#
##### music visualizer #####
##
## Note: In order to make music visualizer work you'll
## need to use mpd fifo output, whose format parameter
## has to be set to 44100:16:1. Example configuration:
## (it has to be put into mpd.conf)
##
## audio_output {
##        type            "fifo"
##        name            "My FIFO"
##        path            "/tmp/mpd.fifo"
##        format          "44100:16:1"
## }
##
#
visualizer_fifo_path = "/tmp/mpd.fifo"
#
##
## Note: Below parameter is needed for ncmpcpp
## to determine which output provides data for
## visualizer and thus allow syncing between
## visualization and sound as currently there
## are some problems with it.
##
#
visualizer_output_name = "My MPD PulseAudio Output"
#
##
## Note: Below parameter defines how often ncmpcpp
## has to "synchronize" visualizer and audio outputs.
## 30 seconds is optimal value, but if you experience
## synchronization problems, set it to lower value.
## Keep in mind that sane values start with >=10.
##
#
visualizer_sync_interval = "30"
#
##
## Note: To enable spectrum frequency visualization
## you need to compile ncmpcpp with fftw3 support.
##
#
visualizer_type = "spectrum" (spectrum/wave)
#
##### system encoding #####
##
## ncmpcpp should detect your charset encoding
## but if it failed to do so, you can specify
## charset encoding you are using here.
##
## Note: You can see whether your ncmpcpp build
## supports charset detection by checking output
## of `ncmpcpp --version`.
##
## Note: Since MPD uses utf8 by default, setting
## this option makes sense only if your encoding
## is different.
##
#
#system_encoding = ""
#
##### delays #####
#
## delay after playlist highlighting will be disabled (0 = don't disable)
#
playlist_disable_highlight_delay = "5"
#
## defines how long various messages are supposed to be visible
#
message_delay_time = "5"
#
##### song format #####
##
## for song format you can use:
##
## %l - length
## %f - filename
## %D - directory
## %a - artist
## %A - album artist
## %t - title
## %b - album
## %y - year
## %n - track number (01/12 -> 01)
## %N - full track info (01/12 -> 01/12)
## %g - genre
## %c - composer
## %p - performer
## %d - disc
## %C - comment
## $R - begin right alignment
##
## you can also put them in { } and then it will be displayed
## only if all requested values are available and/or define alternate
## value with { }|{ } eg. {%a - %t}|{%f}
##
## Note: Format that is similar to "%a - %t" (i.e. without any additional
## braces) is equal to "{%a - %t}", so if one of the tags is missing,
## you'll get nothing.
##
## text can also have different color than the main window has,
## eg. if you want length to be green, write $3%l$9
##
## available values:
##
## - 0 - default window color (discards all other colors)
## - 1 - black
## - 2 - red
## - 3 - green
## - 4 - yellow
## - 5 - blue
## - 6 - magenta
## - 7 - cyan
## - 8 - white
## - 9 - end of current color
##
## Note: colors can be nested.
##
#
#song_list_format = "{%a - }{%t}|{$8%f$9}$R{$3(%l)$9}"
#
#song_status_format = "{{%a{ \"%b\"{ (%y)}} - }{%t}}|{%f}"
#
#song_library_format = "{%n - }{%t}|{%f}"
#
#tag_editor_album_format = "{(%y) }%b"
#
##
## Note: Below variables are for alternative version of user's interface.
## Their syntax supports all tags and colors listed above plus some extra
## markers used for text attributes. They are followed by character '$'.
## After that you can put:
##
## - b - bold text
## - u - underline text
## - r - reverse colors
## - a - use alternative character set
##
## If you don't want to use an attribute anymore, just put it again, but
## this time insert character '/' between '$' and attribute character,
## e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag or filename
## with reversed colors.
##
#
#alternative_header_first_line_format = "$b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b"
#
#alternative_header_second_line_format = "{{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}"
#
##
## Note: Below variables also supports
## text attributes listed above.
##
#
#now_playing_prefix = "$b"
#
#now_playing_suffix = "$/b"
#
#browser_playlist_prefix = "$2playlist$9 "
#
#selected_item_prefix = "$6"
#
#selected_item_suffix = "$9"
#
## colors are not supported for below variable
#
#song_window_title_format = "{%a - }{%t}|{%f}"
#
##### columns settings #####
##
## syntax of song columns list format is "column column etc."
##
## - syntax for each column is:
##
## (width of column)[column's color]{displayed tag}
##
## Note: Width is by default in %, if you want a column to
## have fixed size, add 'f' after the value, e.g. (10)[white]{a}
## will be the column that take 10% of screen (so the real column's
## width will depend on actual screen size), whereas (10f)[white]{a}
## will take 10 terminal cells, no matter how wide the screen is.
##
## - color is optional (if you want the default one, type [])
##
## Note: You can give a column additional attributes by putting appropriate
## character after displayed tag character. Available attributes are:
##
## - r - column will be right aligned
## - E - if tag is empty, empty tag marker won't be displayed
##
## E.g. {lr} will give you right aligned column of lengths.
##
#
song_columns_list_format = "(25)[cyan]{a} (40)[]{t} (30)[red]{b}(7f)[green]{l} "
#
##### various settings #####
#
##
## Note: Custom command that will be executed each
## time song changes. Useful for notifications etc.
##
## Attention: It doesn't support song format anymore.
## Use `ncmpcpp --now-playing SONG_FORMAT` instead.
##
#execute_on_song_change = ""
#
playlist_show_remaining_time = "yes"
#
playlist_display_mode = "classic" (classic/columns)
#
browser_display_mode = "columns" (classic/columns)
#
search_engine_display_mode = "columns" (classic/columns)
#
#discard_colors_if_item_is_selected = "yes"
#
#incremental_seeking = "yes"
#
#seek_time = "1"
#
autocenter_mode = "yes"
#
centered_cursor = "yes"
#
#progressbar_look = "=>"
#
#default_place_to_search_in = "database" (database/playlist)
#
user_interface = "classic" (classic/alternative)
#
#media_library_left_column = "a" (possible values: a,y,g,c,p, legend above)
#
#default_find_mode = "wrapped" (wrapped/normal)
#
#default_space_mode = "add" (add/select)
#
default_tag_editor_left_col = "dirs" (albums/dirs)
#
#default_tag_editor_pattern = "%n - %t"
#
#header_visibility = "yes"
#
#statusbar_visibility = "yes"
#
#header_text_scrolling = "yes"
#
#fancy_scrolling = "yes"
#
#cyclic_scrolling = "no"
#
#lines_scrolled = "2"
#
#follow_now_playing_lyrics = "no"
#
#ncmpc_like_songs_adding = "no" (enabled - add/remove, disabled - always add)
#
#show_hidden_files_in_local_browser = "no"
#
#display_screens_numbers_on_start = "yes"
#
##
## How shall key_screen_switcher work?
##
## - "previous" - switch between current and last used screen
## - "sequence: 2 -> 9 -> 5" - switch between given sequence of screens.
##
## Screen numbers you can use after 'sequence' keyword are:
##
## - 1 - help
## - 2 - playlist
## - 3 - browser
## - 4 - search engine
## - 5 - media library
## - 6 - playlist editor
## - 7 - tag editor
## - 8 - outputs
## - 9 - visualizer
## - 10 - clock
##
## As you can see, above example will switch between
## playlist, visualizer and media library screens.
##
#screen_switcher_mode = "sequence: 2 -> 3"
#
##
## Note: You can define startup screen for ncmpcpp
## by choosing screen number from the list above.
##
#startup_screen = "2"
#
#jump_to_now_playing_song_at_start = "yes"
#
#ask_before_clearing_main_playlist = "no"
#
clock_display_seconds = "yes"
#
#display_bitrate = "no"
#
#display_remaining_time = "no"
#
#regular_expressions = "basic" (basic/extended)
#
##
## Note: If below is enabled, ncmpcpp will ignore leading
## "The" word while sorting items in browser, tags in
## media library, etc.
##
#ignore_leading_the = "no"
#
#block_search_constraints_change_if_items_found = "yes"
#
#mouse_support = "yes"
#
#mouse_list_scroll_whole_page = "yes"
#
#empty_tag_marker = ""
#
#tag_editor_extended_numeration = "no"
#
#media_library_display_date = "yes"
#
#media_library_disable_two_column_mode = "no"
#
#enable_window_title = "yes"
#
##
## Note: You can choose default search mode for search
## engine. Available modes are:
##
## - 1 - use mpd built-in searching (no regexes, pattern matching)
## - 2 - use ncmpcpp searching (pattern matching with support for regexes,
##       but if your mpd is on a remote machine, downloading big database
##       to process it can take a while
## - 3 - match only exact values (this mode uses mpd function for searching
##       in database and local one for searching in current playlist)
##
#
search_engine_default_search_mode = "2"
#
##
## Note: These triggers will allow you to phisically remove
## files and directories from your hdd using ncmpcpp's
## browser screen.
##
#
#allow_physical_files_deletion = "no"
#
#allow_physical_directories_deletion = "no"
#
##### lyrics support #####
##
## supported lyrics databases:
##
## - 1 - lyricsplugin.com
##
#
#lyrics_database = "1"
#
#external_editor = ""
#
#use_console_editor = "no" (set to yes, if your editor is console app)
#
##### colors definitions #####
#
#colors_enabled = "yes"
#
#empty_tag_color = "cyan"
#
#header_window_color = "default"
#
#volume_color = "default"
#
#state_line_color = "default"
#
#state_flags_color = "default"
#
#main_window_color = "yellow"
#
#color1 = "white"
#
#color2 = "green"
#
#main_window_highlight_color = "yellow"
#
#progressbar_color = "default"
#
#statusbar_color = "default"
#
#alternative_ui_separator_color = "black"
#
#active_column_color = "red"
#
#window_border_color = "green"
#
#active_window_border = "red"
#