Un serveur mpd sur une freebox ultra
|
2 päivää sitten | |
---|---|---|
.gitignore | 3 päivää sitten | |
README.md | 2 päivää sitten | |
mpd.conf | 4 päivää sitten | |
radio.m3u | 2 päivää sitten |
Les notes ci-dessous s'appliquent principalement à la création d'un serveur mpd sur une machine virtuelle Debian, dans une Freebox Ultra, mais elles s'appliquent aussi à la création d'un serveur sur une machine physique, par exemple un Raspberry, parfaitement adapté. L'installation sur la machine virtuelle est un peu plus complexe.
Les freebox ultra permettent l'installation de machines virtuelles linux et l'ajout, nécessaire ici, d'un disque NVMe. La box fait tourner un processeur ARM, et ce sont donc des versions ARM des systèmes linux qu'on peut installer comme VM. On part ici d'une VM Debian stable (bookworm au moment où ces lignes ont été écrites). Des VMs toutes prêtes peuvent être installées en quelques secondes depuis l'interface de la box.
Insistons: un NVMe est nécessaire. Ici, on a mis un NVMe de 1 To.
L'auteur possède une grande quantité de CDs audio ; il achète aussi des fichiers audio (chez Qobuz) de qualité largement supérieure aux CDs audio. Les CDs sont convertis en fichiers de format (voir plus bas) .flac, qui est aussi le format des fichiers achetés.
L'installation audio comporte un convertisseur digital-analogique (DAC) qu'on peut attaquer par un câble USB.
On copiera les fichiers audio sur une machine (virtuelle) qui accédera au DAC par le serveur mpd, logiciel -libre bien sûr- présent sur toutes les distributions Linux raisonnables.
Le but est d'être "bit perfect", c'est à dire qu'aucune information ne doit être perdue entre les fichiers et le DAC (qualité audiophile). On rappelle que le format flac est un format de compression sans perte.
La box est dotée d'un NVMe (1 To).
Depuis le menu d'administration de la box (ultra) cliquer "machines virtuelles" et lancer la création.
En un instant la machine est créée.
Repérer l'adresse ip de la machine (le menu l'indique)
On peut alors faire
ssh moi@192...
(l'adresse ip de la machine). Ce n'est pas très
pratique, mais on va améliorer ça.
Une fois connecté, on peut faire sudo
sans donner de mot de passe.
Je propose de donner un mot de passe à l'utilisateur ("moi" ici):
sudo -i
passwd moi
etc. Cela permet de se connecter à la machine depuis l'interface de la Freebox, sans passer par ssh: utile en cas de problème avec le firewall. On peut le supprimer quand l'installation est terminée
La machine arrive avec très peu de choses installées. on fait:
sudo -i
apt update
apt full-upgrade
puis on installe les paquets nécessaires :
apt install mpd avahi-utils avahi-daemon ufw net-tools rsync alsa-utils usbutils
apt clean && apt autopurge
Il faut :
ufw pour modifier le firewall (je ne suis pas bon dans ce domaine et ufw simplifie les choses)
le reste est plus ou moins utile (mais ça ne fait pas de mal). rsync servira.
ufw
ufw allow 6600/tcp
ufw allow 6600/udp
nécessaire pour mpd
ufw allow 5353
ufw allow 53791
nécessaire pour Avahi.
Démarrer Avahi
systemctl enable avahi-daemon.service
systemctl start avahi-daemon.service
Ensuite depuis votre machine client (celle sur laquelle vous travaillez) vous devez pouvoir faire:
ssh moi@server.local
si bien sûr la machine virtuelle s'appelle server, ce qui est quand même mieux que de donner l'adresse ip.
Démarrer mpd
systemctl enable mpd.service
systemctl start mpd.service
Sur votre machine client installez un client mpd: je suggère cantata.
Dans les préférence de cantata, il y a possibilité de découvrir automatiquement le serveur mpd (glace à Avahi !). Si ça fonctionne, c'est bien, sinon mettez le nom de la machine virtuelle (ici server.local) ou son adresse ip et le port 6600.
Bien sûr à ce stade mpd n'est pas configuré, mais cantata doit reconnaître le serveur. Sinon, vous avez probablement un problème avec le firewall (redémarrer ufw peut être utile).
On utilise alsa. Voici le fragment correspondant de /etc/mpd.conf :
audio_output {
type "alsa"
name "My ALSA Device"
## device "hw:0,0" # optional
#
...
}
On verra plus loin qu'il faudra peut-être modifier la ligne "# device".
Évidemment, à chaque modification de /etc/mpdconf, il faut redémarrer le serveur mpd:
systemctl restart mpd.server
On veut que le serveur mpd n'altère en rien le signal (être bit perfect).
Par défaut, mpd n'est pas très bien configuré (/etc/mpd.conf
):
1- On doit supprimer ce qui permet de gérer le volume sonore: si mpd le fait, il va dégrader le signal. C'est à l'ampli audio de faire ça.
2- mpd peut interpoler entre les valeurs numériques: ce n'est pas à lui de faire ça mais au DAC. Le faire dans mpd est au mieux sans intérêt mais plus probablement nocif : mpd procède probablement par interpolation polynomiale, ce qui a de fortes chances de produire des oscillations lors des transitions rapides (les attaques sont particulièrement constitutives de la perception sonore : les perturber est très nocif). C'est connu sous le nom de phénomène de Gibbs. Les DACs ont développé des ruses de sioux pour s'en débarrasser : il faut donc leur laisser faire le travail, sauf peut-être avec un DAC médiocre.
Donc, mettre :
replaygain "off"
Depuis le client (cantata ou autre), on rappelle qu'il il faut indiquer le nom de la machine qui fait tourner mpd. Il arrive que Avahi propose directement la machine et le port; sinon,ici, la machine est server.local et le port 6600.
Normalement, le client (cantata) doit pouvoir se connecter au serveur.
Bien... il reste :
à fournir de la musique au serveur
à vérifier qu'un son sort et qu'il est de bonne qualité.
Quelque part (sur ma machine principale, sur un NAS, etc..) mes fichiers .flac sont dans un répertoire. On peut rendre ce répertoire accessible à la machine virtuelle ou le recopier dans la machine virtuelle : c'est là que rsync sera utile.
On peut aussi stocker les fichiers musicaux sur le disque NVMe de la box, en dehors de la machine virtuelle : lors de l'installation de la VM on peut activer un partage du disque sur la VM. Ça permet d'y accéder de partout sur le réseau local.
Dans /etc/mpd.conf, indiquer le chemin vers le répertoire de la musique., Puis redémarrer mpd :
systemctl restart mpd.service
Dans Cantata, on doit maintenant voir le répertoire des enregistrements .flac.
Il faut les décrire dans un ou plusieurs fichiers stockés à l'emplacement indiqué par "playlist_directory" dans /etc/mpd.conf
On peut utiliser le format m3u. Un exemple de fichier est donné ici
La liste des radios doit apparaître dans le client (cantata).
Il est possible d'ajouter d'autres sources réseau: voir le fichier /etc/mpd.conf.
Les CDs audio sont en 16 bits, 44 khz.
La radio (enfin celle que j'écoute) est en qualité 16 bits, 48 khz (mais ce n'est pas du flac !)
Mes enregistrements de qualité supérieure sont en 24 bits, 96 khz.
La radio passe impeccablement, les enregistrements en 24 bits, 96 khz aussi, mais ceux en 16 bits, 44 khz produisent d'affreux crachotements.
Après avoir consulté le support de mpd, aucune solution n'a été trouvée. Mais le 9 août 2023, Debian Trixie est devenue la version stable de Debian. Une mise à jour de la VM (Bookworm) vers Trixie a résolu le problème, qui devrait donc disparaître à l'avenir.
Il faut bien sûr que votre DAC soit connecté à la prise usb de la box, que l'usb soit activé (ça se règle sur l'interface de la freebox), et que le DAC soit en marche !
On peut deviner l'identifiant de la carte son (= le DAC) en regardant le fichier /proc.asound/cards. On peut utiliser utiliser la commande aplay -l sur le serveur.
Il faut alors modifier la ligne "device" dans
audio_output {
type "alsa"
name "My ALSA Device"
## device "hw:0,0" # optional
#
...
}
qui deviendra quelque chose comme :
````
device "hw:1,0"
...
et relancer mpd sur le serveur. On s'en sort facilement.
Il existe plusieurs outils dans les distributions Linux, par exemple :
Sound Juicer
abcde
Le dernier est en ligne de commande.
##
Ce texte et les prototypes de fichiers mpd.conf et radio.m3u sont disponibles ici .