Music Player Daemon (Français)
MPD (music player daemon) est un lecteur audio doté d'une architecture client-serveur. Il lit des fichiers audio, organise des listes de lecture et maintient une base de données musicale, tout en utilisant très peu de ressources. Afin de s'interfacer avec lui, un client séparé est nécessaire.
Installation
Installez le paquet mpd, ou mpd-gitAUR pour la version de développement.
Configuration
MPD peut fonctionner en mode #Configuration par utilisateur ou #Configuration à l'échelle du système (les paramètres s'appliquent à tous les utilisateurs). Il est également possible d'exécuter plusieurs instances de MPD dans une #Configuration de Multi-MPD. Le mode de configuration de MPD dépend de la façon dont il est destiné à être utilisé : une configuration locale par utilisateur est plus facile à mettre en place et peut s'avérer plus adaptée sur un système de bureau. La configuration à l'échelle du système peut être plus adaptée à un serveur audio toujours actif avec plusieurs utilisateurs mais une instance MPD partagée.
Pour que MPD soit capable de lire de l'audio, ALSA, éventuellement avec PulseAudio ou PipeWire, doit être configuré et fonctionner. La section #Configuration audio ci-après décrit les paramètres nécessaires pour ALSA, PulseAudio ou PipeWire.
MPD est configuré dans le fichier mpd.conf(5) qui peut se trouver à différents endroits selon la configuration choisie (système ou par utilisateur). En résumé, les deux emplacements couramment utilisés sont :
-
~/.config/mpd/mpd.conf
en mode de configuration par utilisateur, c'est le premier emplacement recherché, -
/etc/mpd.conf
en mode de configuration système.
Voici quelques-unes des options de configuration les plus couramment utilisées :
-
pid_file
- Le fichier où MPD stocke son ID de processus -
db_file
- La base de données musicale -
state_file
- L'état actuel de MPD est noté ici -
playlist_directory
- Le répertoire dans lequel les listes de lecture sont enregistrées -
music_directory
- Le répertoire dans lequel MPD recherche la musique -
sticker_file
- La base de données des autocollants
Configuration par utilisateur
MPD peut être configuré par utilisateur. L'exécuter en tant qu'utilisateur normal présente les avantages suivants :
- Regroupement dans un seul répertoire
~/.config/mpd/
(ou tout autre répertoire sous$HOME
) tous les fichiers de configuration de MPD. - Éviter les erreurs imprévues de permission des répertoires et des fichiers.
Configurer l'emplacement des fichiers et des répertoires
En mode utilisateur, la configuration est lue depuis $XDG_CONFIG_HOME/mpd/mpd.conf
.
Nous supposerons ici que $XDG_CONFIG_HOME
est sa valeur par défaut de ~/.config
.
Pour construire la configuration utilisateur, l'exemple de configuration MPD inclus dans le paquet est un bon point de départ, copiez-le en utilisant les lignes suivantes :
$ mkdir ~/.config/mpd $ cp /usr/share/doc/mpd/mpdconf.example ~/.config/mpd/mpd.conf
Une bonne pratique est d'utiliser ce répertoire nouvellement créé ~/.config/mpd/
pour stocker, avec le fichier de configuration, d'autres fichiers liés à MPD comme la base de données ou les listes de lecture. L'utilisateur doit avoir un accès en lecture et écriture à ce répertoire.
Ensuite, éditez le fichier de configuration afin de spécifier les fichiers et répertoires requis et optionnels :
~/.config/mpd/mpd.conf
# Recommended location for database db_file "~/.config/mpd/database" # Logs to systemd journal log_file "syslog" # The music directory is by default the XDG directory, uncomment to amend and choose a different directory #music_directory "~/music" # Uncomment to refresh the database whenever files in the music_directory are changed #auto_update "yes" # Uncomment to enable the functionalities #playlist_directory "~/.config/mpd/playlists" #pid_file "~/.config/mpd/pid" #state_file "~/.config/mpd/state" #sticker_file "~/.config/mpd/sticker.sql"
Si les listes de lecture sont activées dans la configuration, le répertoire de listes de lecture spécifié doit être créé :
$ mkdir ~/.config/mpd/playlists
MPD peut maintenant être lancé (un emplacement personnalisé facultatif pour le fichier de configuration peut être spécifié) :
$ mpd [fichier_de_configuration].
Afin de construire le fichier de base de données, MPD doit effectuer une recherche dans le music_directory
défini ci-dessus. Pour demander cette tâche, l'un des clients de MPD doit être utilisé. Par exemple avec mpc la commande est :
$ mpc update
ou bien on peut définir l'option auto_update
à "yes"
dans la configuration pour rafraîchir la base de données chaque fois que des fichiers sont modifiés dans music_directory
.
Configuration audio
Si ALSA est utilisé, l'autodétection du périphérique par défaut devrait fonctionner dès le départ sans réglage particulier. Si ce n'est pas le cas, la syntaxe pour la définition de la sortie audio ALSA est fournie par la suite ; le paramètre obligatoire name
spécifie un nom unique pour la sortie audio.
Le périphérique exact tel qu'il est affiché à l'aide de aplay --list-pcm
du paquet alsa-utils peut éventuellement être indiqué avec l'option device
.
~/.config/mpd/mpd.conf
sortie_audio { type "alsa" name "Carte son ALSA" # Optional #device "iec958:CARD=Intel,DEV=0" #mixer_control "PCM" }
Les utilisateurs de PulseAudio devront effectuer la modification suivante :
~/.config/mpd/mpd.conf
sortie_audio { type "pulse name "pulse audio" }
La sortie audio avec PipeWire peut être également configurée :
~/.config/mpd/mpd.conf
sortie_audio { type "pipewire name "PipeWire Sound Server" }
Démarrage automatique avec systemd
Le paquet mpd fournit un fichier de service utilisateur. Le service démarre le processus en tant qu'utilisateur, il n'est pas nécessaire de modifier les permissions ni d'utiliser les variables user
et group
dans le fichier de configuration MPD.
Démarrez et activez l'unité utilisateur mpd.service
(c'est-à-dire avec le paramètre --user
).
~/.config/mpd/mpd.conf
, consultez Systemd (Français)#Modifier les unités fournies si vous souhaitez indiquer un chemin de fichier de configuration personnalisé.Démarrage automatique à la connexion du tty
Pour démarrer MPD à la connexion, ajoutez ce qui suit à ~/.profile
ou à un autre fichier de démarrage automatique :
# Démarrage du daemon MPD (si aucune autre instance utilisateur n'existe) [ ! -s ~/.config/mpd/pid ] && mpd
Configuration scriptée
L'outil mpd-configure crée une configuration MPD optimisée pour la lecture audio sans perte, sans rééchantillonnage ni conversion, en utilisant l'adresse matérielle de l'interface ALSA (hw:x,y).
Configuration à l'échelle du système
Par défaut, /etc/mpd.conf
conserve la configuration dans /var/lib/mpd
qui est assignée à l'utilisateur ainsi qu'au groupe primaire MPD.
Répertoire de musique
Le répertoire de musique est défini par l'option music_directory
dans le fichier de configuration /etc/mpd.conf
.
MPD doit avoir les droits d'exécution sur tous les répertoires parents de la collection de musique et aussi les droits de lecture sur tous les répertoires contenant des fichiers de musique. Cela peut entrer en conflit avec la configuration par défaut du répertoire utilisateur, comme ~/Music
, où la musique est stockée.
Bien qu'il existe plusieurs solutions à ce problème, l'une d'entre elles devrait être la plus pratique :
- Passez plutôt en mode #Configuration par utilisateur.
- Ajoutez l'utilisateur
mpd
au groupe de l'utilisateur et accordez au groupe le droit d'exécuter le répertoire de l'utilisateur. De cette façon, l'utilisateurmpd
a le droit d'ouvrir le répertoire utilisateur :
# gpasswd -a mpd groupe_de_l'utilisateur $ chmod 710 /home/ user_directory (répertoire utilisateur)
- Stockez la collection de musique dans un chemin différent, soit :
- en la déplaçant entièrement,
- avec un mount bind,
- ou avec Btrfs (Français)#Sous-volumes (vous devez rendre ce changement persistant avec une entrée dans
/etc/fstab
).
Le fichier de configuration MPD doit définir un seul répertoire de musique. Si la collection de musique est contenue dans plusieurs répertoires, créez des liens symboliques sous le répertoire de musique principal dans /var/lib/mpd
. N'oubliez pas de définir les permissions en conséquence sur les répertoires liés.
Pour exclure un ou plusieurs fichiers de la mise à jour, créez un fichier appelé .mpdignore
dans son répertoire parent. Chaque ligne de ce fichier peut contenir une liste de caractères génériques du shell. Les fichiers correspondants dans le répertoire actuel et tous les sous-répertoires sont alors exclus des mises à jour suivantes.
Démarrer avec systemd
MPD peut être contrôlé avec mpd.service
et systemd. Le premier démarrage peut prendre un certain temps car MPD va scanner votre répertoire de musique.
Testez tout en démarrant une application client (ncmpc est un client léger et facile à utiliser), et jouez de la musique !
Activation de socket
mpd fournit une unité mpd.socket
. Si mpd.socket
est activée (et mpd.service
est désactivée), systemd ne lancera pas MPD immédiatement, il écoutera simplement les sockets appropriés. Ensuite, chaque fois qu'un client MPD tentera de se connecter à l'un de ces sockets, systemd lancera mpd.service
et transmettra de manière transparente le contrôle de ces ports au processus MPD.
Si vous préférez écouter différents sockets UNIX ou ports réseau (même plusieurs sockets de chaque type), ou si vous préférez ne pas écouter les ports réseau du tout, éditez l'unité mpd.socket
de manière appropriée et modifiez /etc/mpd.conf
pour qu'elle corresponde à la configuration (consultez mpd.conf(5) pour plus de détails).
Processus de démarrage de mpd avec un id utilisateur
MPD ne doit jamais être exécuté en tant que root ; vous pouvez utiliser l'option user
dans la configuration pour que MPD change son identifiant après l'initialisation. N'utilisez pas cette option si vous démarrez MPD en tant qu'utilisateur non privilégié.
Pour décrire comment MPD abandonne ses privilèges de super-utilisateur et passe à ceux de l'utilisateur défini dans la configuration, les étapes d'un démarrage normal de MPD sont listées ci-après :
- MPD étant démarré en tant que root par systemd, il lit d'abord le fichier
/etc/mpd.conf
. - MPD lit la variable
user
dans la configuration, et passe de root à cet utilisateur. - MPD lit ensuite le reste du fichier de configuration et se configure en conséquence. L'utilisation de
~
dans le fichier de configuration pointe vers le répertoire de l'utilisateur principal, et non vers le répertoire de root.
Configuration de Multi-MPD
Exécution d'un serveur Icecast
Pour un deuxième MPD (par exemple avec une sortie Icecast pour partager de la musique sur le réseau) utilisant la même musique et la même liste de lecture que celui ci-dessus, il suffit de copier le fichier de configuration ci-dessus et de créer un nouveau fichier (par ex, /home/username/.mpd/config-icecast
) et ne modifiez que les paramètres log_file
, error_file
, pid_file
et state_file
(par exemple, mpd-icecast.log
, mpd-icecast.error
, etc.) L'utilisation des mêmes chemins de répertoire pour les répertoires de musique et de liste de lecture garantit que ce second MPD utilise la même collection de musique que le premier, c'est-à-dire que la création et la modification d'une liste de lecture sous le premier daemon affectent également le second daemon. Les utilisateurs n'ont pas besoin de créer à nouveau les mêmes listes de lecture pour le second daemon. Appelez ce second daemon de la même manière qu'avec ~/.xinitrc
ci-dessus - mais assurez-vous d'avoir un numéro de port différent, pour éviter un conflit avec le premier daemon MPD.
Configuration du satellite
La méthode décrite dans #Exécution d'un serveur Icecast fonctionne, mais au moins en théorie, elle peut entraîner des problèmes avec la base de données, lorsque deux instances MPD essaient d'écrire simultanément dans le même fichier de base de données. MPD dispose d'un mode satellite dans lequel une instance peut recevoir la base de données d'une instance MPD déjà en cours d'exécution.
Dans votre config-icecast
, ajoutez ceci, où l'hôte et le port reflètent votre serveur MPD principal :
database { plugin "proxy" host "localhost" port "6600" }
Clients
Un client séparé est nécessaire pour contrôler MPD. Vous pouvez consulter une longue liste de clients sur le site mpd website. Les options populaires sont :
Ligne de commande
- mpc — Interface utilisateur en ligne de commande pour le serveur MPD écrite en C.
Console
- clerk — Client MPD utilisant Rofi.
- FMUI — Console interface utilisateur créée avec fzf et mpc.
- ncmpc — Client en ncurses pour MPD écrit en C++.
- ncmpcpp — Clone presque exact de ncmpc, écrit en C++ avec quelques fonctionnalités supplémentaires (éditeur de balises, moteur de recherche).
- ncmpy — Client MPD basé sur curses et écrit en Python.
- nncmpp — Encore un autre client MPD. Il s'agit en fait d'une version TUI simplifiée de Sonata.
- pms — Client ncurses hautement configurable et accessible écrit en Go.
- vimpc — Client MPD basé sur ncurses avec des raccourcis clavier de type vi.
- gomp — Client MPD inspiré de ncmpcpp avec affichage intégré de la couverture et intégration de LastFM.
Graphique
- Ario — Un client GUI GTK3 très riche en fonctionnalités pour MPD, inspiré de Rhythmbox.
- Cantata — Client Qt5 riche en fonctionnalités pour MPD avec une interface très configurable.
- CoverGrid — Client GUI GTK3 se concentrant sur les albums plutôt que sur les pistes individuelles.
- GMPC — Gnome Music Player Client. Interface GTK pour MPD. Elle est conçue pour être légère et facile à utiliser, tout en offrant un accès complet à toutes les fonctionnalités de MPD. Les utilisateurs disposent de plusieurs méthodes différentes pour naviguer dans leur musique. Il peut être étendu par des plugins, dont beaucoup sont disponibles.
- mpdevil — Un petit client GTK MPD écrit en python.
- pymp'd — Un client avec une interface GTK pour le daemon de lecture de musique MPD.
- QMPDClient — Qt5 GUI client.
- https://bitcheese.net/QMPDClient/ || {AUR}}
- Quimup — Frontend Qt5 simple pour MPD écrit en C++.
- RompЯ — Client Web pour MPD.
- SkyMPC — Client MPD simple, optimisé par Qt5.
- Sonata — Client Python élégant en GTK.
- Xfce MPD Panel Plugin — Plugin MPD pour le pannel de Xfce4
- Xfmpc — Client graphique GTK MPD axé sur un faible encombrement.
- ympd — Standalone MPD Web GUI écrite en C, utilisant Websockets et Bootstrap/JS.
- https://ympd.org/ || ympdAUR
- Ymuse — Front-end (client) GTK facile, fonctionnel et accrocheur pour Music Player Daemon écrit en Go.
Voir aussi
- Forum MPD
- Manuel de l'utilisateur MPD
- MPD article Wikipedia
- Dépôt GitHub de MPD.
- mopidy est une alternative à MPD écrite en Python. Notez qu'il ne s'agit pas d'un remplacement complet de MPD, son avantage est qu'il dispose de plug-ins pour lire de la musique à partir de services «cloud» comme Spotify, SoundCloud et Google Play Music.