MPD (Music Player Daemon) est un lecteur qui utilise une architecture client/serveur, ce qui permet de le contrôler à distance. De nombreux clients sont disponibles. Il reste néanmoins un lecteur de choix pour une machine de bureau, léger et efficace. <> = Configuration = A l'installation, le paquet créé un service init pour le lancer au démarrage. La configuration se fait dans le fichier /etc/mpd.conf. == Lancement en tant qu'utilisateur == Le service est lancé par root. Il est préférable de lancer mpd en tant qu'utilisateur. Pour le lancer en tant que l'utilisateur « foo », il suffit de mettre dans le mpdconf : {{{ user "foo" }}} On peut aussi désactiver le service, soit en éditant /etc/default/mpd : {{{ START_MPD=false }}} soit en désactivant le service : {{{ # update-rc.d -f mpd remove }}} Dans ce cas, la configuration se fait dans le fichier ~/.mpdconf. == Chemins == Il faut définir différents chemins pour pouvoir utiliser mpd : * music_directory : dossier où se trouvent les musiques ; * playlist_directory : dossier où se trouvent les playlists ; * db_file : fichier de la base de données ; * log_file : fichier de log ; * error_file : fichier de log des erreurs. * pid_file : fichier contenant le pid (pour pouvoir fermer proprement le programme) Par exemple : {{{ music_directory "~/Musique" playlist_directory "~/.mpd/playlists" db_file "~/.mpd/mpd.db" log_file "~/.mpd/mpd.log" error_file "~/.mpd/mpd.error" pid_file "~/.mpd/mpd.pid" }}} N'oubliez pas de créer les dossiers si nécessaire. Il vous faudra créer une base de données pour pouvoir l'utiliser. Pour cela, il suffit de lancer : {{{ mpd --create-db }}} Il faut renouveler l'opération à chaque fois que le catalogue de musique change. == Sortie Audio == === Alsa simple === Pour pouvoir lire le son via alsa, il faut rajouter une section dans mpdconf : {{{ audio_output { type "alsa" name "my ALSA device" } }}} Il faut aussi définir le mixer. Par exemple, pour utiliser PCM : {{{ mixer_type "alsa" mixer_device "default" mixer_control "PCM" }}} === Alsa avec mixer séparé === Vous pouvez aussi définir un mixer « virtuel » pour contrôler le volume de MPD séparément. Pour cela, il faut créer un fichier /etc/asound.conf : {{{ # the sound card pcm.real { type hw card 0 device 0 } # the ipc stuff is needed for permissions, etc. pcm.dmixer { type dmix ipc_key 1024 ipc_perm 0666 slave.pcm "real" slave { period_time 0 period_size 1024 buffer_size 8192 rate 44100 } bindings { 0 0 1 1 } } ctl.dmixer { type hw card 0 } # software volume pcm.softvol { type softvol slave.pcm "dmixer" control { name "Software" card 0 } } # mpd volume control pcm.mpdvol { type softvol slave.pcm "dmixer" control { name "MPD" card 0 } } # ctrl for mpd volume ctl.mpdvol { type hw card 0 } # input pcm.input { type dsnoop ipc_key 3129398 ipc_key_add_uid false ipc_perm 0660 slave.pcm "810" } # duplex device pcm.duplex { type asym playback.pcm "softvol" capture.pcm "input" } # default devices pcm.!default { type plug slave.pcm "duplex" } # for oss devices pcm.dsp0 { type plug slave.pcm "duplex" } }}} Ensuite, dans le mpdconf, on définit la sortie Alsa, ainsi que le mixer {{{ # Sortie Alsa : audio_output { type "alsa" name "Alsa Software Volume" device "mpdvol" format "44100:16:2" # optional } # Mixer : mixer_type "alsa" mixer_device "mpdvol" mixer_control "MPD" }}} On peut aussi utiliser d'autres périphériques audio (OSS, ESD, Jack, PulseAudio). La configuration est détaillée dans le wiki mpd : http://mpd.wikia.com/wiki/Configuration#Audio_Outputs == Autres options == Vous pouvez définir un mot de passe pour certaines fonctions : {{{ password "XXXX@read,add,control,admin" }}} Si vous avez des problèmes avec les accents dans les noms de fichiers, rajoutez : {{{ filesystem_charset "UTF-8" }}} D'autres options existent, vous trouverez un fichier de configuration détaillé dans /usr/share/doc/mpd/mpdconf.example. = Utilisation = Il faut d'abord lancer le serveur. Si vous utilisez le service init : {{{ /etc/init.d/mpd restart }}} Sinon, en tant qu'utilisateur : {{{ mpd }}} Pour le contrôler il existe de nombreux clients à notre disposition : * mpc : client en ligne de commande (très utile pour faire des lanceurs, des raccourcis claviers ou des scripts) ; * ncmpc : un client simple en console ; * ncmpcpp : un clone de ncmpc avec quelques options supplémentaires (recherche avancée, édition de tags,...) ; * sonata : un très bon client en GTK ; * ario : un client avec une interface proche de Rythmbox ; * gmpc : un client graphique pour Gnome. Il en existe plein d'autres : http://mpd.wikia.com/wiki/Clients = Utilisation en webradio = MPD peut se commander à distance. Mais il peut aussi service de source pour un serveur ShoutCast ou Icecast. Pour installer un serveur Icecast : http://www.andesi.org/admin:installer-un-serveur-icecast Il suffit alors de définir une sortie audio supplémentaire pour le serveur Icecast : {{{ audio_output { type "shout" name "example.org" host "localhost" port "8000" mount "/mpd.ogg" password "XXXXXX" quality "5.0" # bitrate "128" format "44100:16:1" user "source" # description "My Stream Description" # optional # genre "jazz" # optional # public "no" # optional } }}} Avec : * name : nom du serveur Icecast ; * host : nom ou IP du serveur Icecast (localhost, s'il est sur la même machine) ; * passwd : le mot de passe définit pour la source dans la configuration de Icecast. * quality ou bitrate : il faut définir un seul des deux * description, genre et public : informations supplémentaires qui apparaitront dans le lecteur audio qui lit le flux. Attention : Si vous ne configurez pas d'autre sortie (alsa, par exemple), vous aurez probablement un message d'erreur « cannot open mixer ». Il vous suffit alors de créer une sortie « null » pour pallier le problème : {{{ audio_output { type "ao" driver "null" name "Dummy output" } }}} Si vous avez un serveur web avec support du php, vous pouvez utiliser des clients comme phpMp+ : http://mpd.wikia.com/wiki/Client:PhpMpplus Ainsi vous pourrez commander MPD à distance à l'aide d'un simple navigateur. = Ressources = * Wiki MPD (en) : http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki