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 :

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 :

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 :

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