Mon lecteur audio idéal: MPD et ses copains

mpdOn est geek ou on l’est pas. Moi pareil, des fois je suis un bon gros geek, parfois non.

Bon ben là, je pense que je penche plus du côté geek que du côté de la population qui a un cerveau sain.

Je ne peux pas vivre sans musique. Mon autoradio a un port USB pour que j’y mette ma clef USB de 8Go avec mes mp3 choisis consciencieusement. J’ai constamment de la musique dans les oreilles au boulot. Idem à la maison où je peux également pianoter sur mon clavier ou grattouiller la guitare électrique de ma chère et tendre. Parfois je crée de la musique aussi… mais c’est une autre histoire.

Depuis que j’ai quitté KDE (depuis Ubuntu 8.10) et l’arrivée d’Amarok 2, je n’ai jamais trouvé de lecteur audio qui me convenait. J’en ai essayés pourtant. J’ai finalement choisi Exaile que je pensais prometteur (qui l’est peut-être toujours, mais le développement est trop lent à mon goût).

Je viens de tester MPD et je l’ai adopté.

MPD ? C’est quoi ça ?

MPD (Music Player Daemon) est, comme son nom l’indique, un démon qui sert à jouer de la musique. Et ma foi, ça le fait très bien.

L’approche de MPD est particulière. Contrairement à tous les autres lecteurs, MPD est constitué d’au moins 2 logiciels: 1 serveur et au moins 1 client.

Le serveur s’occupe de gérer la bibliothèque de fichiers musicaux, les playlists, d’envoyer sur la sortie la musique jouée et de mettre à disposition une API qui permet à qui le veut de communiquer avec ce serveur.

Du coup, il existe tout un tas de clients plus ou moins complets, plus ou moins jolis, certains même sont en ligne de commande.

Ma configuration

J’ai réfléchi (oui, ça m’arrive) et je me suis posé la question suivante: qu’est-ce que j’attends de mon lecteur audio:

  • il doit lire ma musique (oui… c’est curieux, hein?), dans l’ordre ou aléatoirement,
  • il doit gérer les queues de plusieurs titres que je souhaite écouter à la file,
  • il doit me permettre de faire des recherches dans ma bibliothèque facilement,
  • il doit me permettre de faire play/pause/suivant/précédent grâce à des raccourcis clavier globaux, c’est à dire depuis n’importe quelle application sans avoir besoin d’utiliser ma souris et sans avoir besoin d’afficher mon lecteur audio à l’écran,
  • il doit utiliser les notifications du système pour m’avertir du titre écouté,
  • Il doit afficher mes fichiers musicaux comme je le désire, c’est à dire par le nom du fichier car j’ai déjà renommé mes fichiers comme je veux,
  • il doit envoyer les titres que j’écoute sur ma page last.fm.

En résumé, je n’ai pas besoin d’avoir une interface lourde. Le choix de MPD me parait pertinent. En avant l’installation.

Tout d’abord, installons le serveur:

sudo aptitude install mpd

Une fois installé, modifions le fichier de configuration (/etc/mpd.conf) afin qu’il trouve nos fichiers:

music_directory    "/media/data/audio"
playlist_directory "/media/data/audio"

De plus, il faut configurer la sortie audio. Sur Ubuntu 9.10, commentez les lignes « audio_output » concernant ALSA et décommentez les lignes pour Pulse Audio pour avoir ceci:

#audio_output {
#       type            "alsa"
#       name            "My ALSA Device"
#       device          "hw:0,0"        # optional
#       format          "44100:16:2"    # optional
#       mixer_device    "default"       # optional
#       mixer_control   "PCM"           # optional
#       mixer_index     "0"             # optional
#}
...
audio_output {
        type            "pulse"
        name            "My Pulse Output"
#       server          "remote_server"         # optional
#       sink            "remote_server_sink"    # optional
}

Sauvegardez le fichier et relancez le serveur:

sudo /etc/init.d/mpd restart

Il faut également installer un petit logiciel qui permet de paramétrer Pulse Audio, puis le lancer:

sudo aptitude install paprefs
paprefs

Puis, dans l’onglet « Network Server », cochez « Activez l’accès réseau aux périphériques de son locaux » et enfin « Don’t require authentification ».
Enfin, relancez pulse audio pour que ces paramètres soient pris en compte:

sudo /etc/init.d/pulseaudio restart

Maintenant, nous allons installer un client. C’est peut-être là que nos chemins se séparent. Une liste de clients MPD existe sur le wiki du logiciel.

Moi, je vais vous parler de ncmpcpp un client ncurses écrit C++ qui fait (presque) tout ce que je veux. La version des dépôts n’est pas franchement à jour, aussi, si vous savez ce que vous faites, vous pouvez configurer ce PPA qui propose la dernière version, sinon contentez-vous de la version (tout a fait fonctionnelle) des dépôts.

sudo aptitude install ncmpcpp

Une fois installé, vous pouvez lancer le client en tapant:

ncmpcpp

Pour commencer, il faut faire une mise à jour de la bibliothèque musicale de MPD en tapant sur la lettre U de votre clavier. « Database update started » s’affiche dans le coin inférieur gauche. Une fois la mise à jour terminée, vous verrez « Database update finished ! » apparaitre au même endroit. La mise à jour de la bibliothèque dépend évidemment de la taille de celle-ci. Plus vous avez de fichiers musicaux, plus ça prendra de temps.

En appuyant sur F1, vous aurez la liste intégrale des raccourcis claviers de ncmpcpp.

Appuyez maintenant sur F3 pour parcourir votre bibliothèque. Vous pouvez naviguer avec les flèches et la touche entrée (pour rentrer dans un répertoire) et enfin ajouter le répertoire ou le fichier musical sélectionné, dans la playlist courante, en appuyant sur la barre espace.

Appuyez sur F2 pour revenir à la playlist courante. Vous pouvez trier les fichiers musicaux grâce à CTRL+V, écouter un titre en appuyant sur entrée, aller au suivant grâce à > et au précédent grâce à <.

Vous pouvez modifier quantité de paramètres de ncmpcpp en créant/modifiant le fichier de configuration ~/.ncmpcpp/config. Vous pouvez récupérer un fichier de config exemple depuis /usr/share/doc/ncmpcpp/config.gz:

cp /usr/share/doc/ncmpcpp/config.gz ~/.ncmpcpp/
gunzip ~/.ncmpcpp/config.gz

Voici, d’ailleurs, mon fichier de configuration (mes fichiers musicaux sont renommés exactement comme je le désire, je ne m’embête donc pas des tags pour l’affichage, mais vous pouvez configurer comme bon vous semble ou laisser la configuration par défaut):

mpd_music_dir = "/media/data/audio"
mpd_crossfade_time = "0"
song_list_format = "%f$R$3%l$9"
song_status_format = "%f"
song_library_format = "%f"
song_window_title_format = "%f"
song_columns_list_format = "(25)[cyan]{a} (40)[]{t} (30)[red]{b} (7f)[green]{l}"
autocenter_mode = "yes"
clock_display_seconds = "yes"
display_bitrate = "yes"

Bien, maintenant que nous avons un lecteur audio, configurons nos raccourcis clavier en lançant les commandes suivantes:

gconftool -s /apps/metacity/keybinding_commands/command_1 -t string "ncmpcpp toggle"
gconftool -s /apps/metacity/keybinding_commands/command_2 -t string "ncmpcpp next"
gconftool -s /apps/metacity/keybinding_commands/command_3 -t string "ncmpcpp prev"
gconftool -s /apps/metacity/keybinding_commands/command_4 -t string "gnome-terminal --maximize --hide-menubar --window -e ncmpcpp"
gconftool -s /apps/metacity/global_keybindings/run_command_1 -t string "<Super>c"
gconftool -s /apps/metacity/global_keybindings/run_command_2 -t string "<Super>b"
gconftool -s /apps/metacity/global_keybindings/run_command_3 -t string "<Super>z"
gconftool -s /apps/metacity/global_keybindings/run_command_4 -t string "<Super>p"

Vous pouvez maintenant faire play/pause avec Super+C, passer au titre suivant avec Super+B, au précédant avec Super+Z et afficher le lecteur dans un nouveau terminal grâce à Super+P. « Super », c’est la touche « windows », le drapeau entre Ctrl et Alt.

Installons maintenant de quoi envoyer nos écoutes à last.fm:

sudo aptitude install mpdscribble

Éditez le fichier /etc/mpdscribble.conf afin de mettre vos login/pass last.fm, puis éditez le fichier /etc/default/mpdscribble en mettant 1 à MPD_SYSTEMWIDE. Enfin, relancez le client:

sudo /etc/init.d/mpdscribble restart

Pour finir, nous allons faire afficher une notification à chaque modification de titre. J’ai créé 1 petit script qui va faire tout ça pour nous. Il y a également quelques dépendances à installer et le démarrage automatique à l’ouverture de la session à paramétrer:

sudo aptitude install python-mpd python-notify
wget http://dl.mattlab.com/mpdnotify/mpdnotify.desktop -O ~/.config/autostart/mpdnotify.desktop
sudo wget http://dl.mattlab.com/mpdnotify/mpdnotify -O /usr/bin/mpdnotify
sudo chmod +x /usr/bin/mpdnotify
mpdnotify &

Vous devriez voir apparaitre une belle notification du titre en cours :)

Pour plus d’informations, sur l’affichage des jaquettes par exemple, allez sur la page du projet.

Ce petit script permet également d’afficher une notification en lançant:

mpdnotify notify

Nous allons d’ailleurs nous en servir pour afficher une notification sur le raccourci Super+O en exécutant ces 2 lignes:

gconftool -s /apps/metacity/keybinding_commands/command_5 -t string "mpdnotify notify"
gconftool -s /apps/metacity/global_keybindings/run_command_5 -t string "<Super>o"

Voilà, vous avez maintenant un lecteur audio léger mais pleinement fonctionnel… ou presque… en effet, MPD n’implémente pas un système de queue. Les développeurs ne souhaitent d’ailleurs pas l’implémenter car ils estiment que c’est très similaire aux playlists déjà implémentées.

Bonne écoute !

Vus : 815
Publié par Renaud Littolff : 27