Précédent: Configurer NGINX avec Lua, Monter: Configuration du système [Table des matières][Index]
MPD, le démon lecteur de musique, est une application serveur flexible pour jouer de la musique. Les programmes clients sur différentes machines du réseau — un téléphone portable, un ordinateur portable, un ordinateur de bureau — peuvent s’y connecter pour contrôler la lecture de fichiers audio de votre collection musicale locale. MPD décode les fichiers audio et les joue sur une ou plusieurs sorties.
Par défaut MPD jouera sur le périphérique audio par défaut. Dans l’exemple ci-dessous nous rendons les choses un peu plus intéressantes en configurant un serveur de musique sans affichage. Il n’y aura pas d’interface graphique, pas de démon Pulseaudio, ni de sortie audio locale. Au lieu de cela, nous configurons MPD avec deux sorties : un haut-parleur bluetooth et un serveur web pour servir des flux audio à n’importe quel lecture de musique.
Le Bluetooth est souvent frustrant à configurer. Vous devrez appairer vos
périphériques Bluetooth et vous assurer que le périphérique se connecte
automatiquement dès qu’il est branché. Le service système Bluetooth renvoyé
par la procédure bluetooth-service
fournit l’infrastructure requise
pour cette configuration.
Reconfigurez votre système avec au moins les services et les paquets suivants :
(operating-system
;; …
(packages (cons* bluez bluez-alsa
%base-packages))
(services
;; …
(dbus-service #:services (list bluez-alsa))
(bluetooth-service #:auto-enable? #t)))
Démarrez le service bluetooth
puis utilisez bluetoothctl
pour scanner les périphériques Bluetooth. Essayez d’identifier votre
haut-parleur Bluetooth et choisissez son ID de périphérique dans la liste de
périphériques qui est indubitablement polluée par une armée de gadgets
connectés chez votre voisin. Vous ne devrez le faire qu’une seule fois :
$ bluetoothctl [NEW] Controller 00:11:22:33:95:7F BlueZ 5.40 [default] [bluetooth]# power on [bluetooth]# Changing power on succeeded [bluetooth]# agent on [bluetooth]# Agent registered [bluetooth]# default-agent [bluetooth]# Default agent request successful [bluetooth]# scan on [bluetooth]# Discovery started [CHG] Controller 00:11:22:33:95:7F Discovering: yes [NEW] Device AA:BB:CC:A4:AA:CD My Bluetooth Speaker [NEW] Device 44:44:FF:2A:20:DC My Neighbor's TV … [bluetooth]# pair AA:BB:CC:A4:AA:CD Attempting to pair with AA:BB:CC:A4:AA:CD [CHG] Device AA:BB:CC:A4:AA:CD Connected: yes [My Bluetooth Speaker]# [CHG] Device AA:BB:CC:A4:AA:CD UUIDs: 0000110b-0000-1000-8000-00xxxxxxxxxx [CHG] Device AA:BB:CC:A4:AA:CD UUIDs: 0000110c-0000-1000-8000-00xxxxxxxxxx [CHG] Device AA:BB:CC:A4:AA:CD UUIDs: 0000110e-0000-1000-8000-00xxxxxxxxxx [CHG] Device AA:BB:CC:A4:AA:CD Paired: yes Pairing successful [CHG] Device AA:BB:CC:A4:AA:CD Connected: no [bluetooth]# [bluetooth]# trust AA:BB:CC:A4:AA:CD [bluetooth]# [CHG] Device AA:BB:CC:A4:AA:CD Trusted: yes Changing AA:BB:CC:A4:AA:CD trust succeeded [bluetooth]# [bluetooth]# connect AA:BB:CC:A4:AA:CD Attempting to connect to AA:BB:CC:A4:AA:CD [bluetooth]# [CHG] Device AA:BB:CC:A4:AA:CD RSSI: -63 [CHG] Device AA:BB:CC:A4:AA:CD Connected: yes Connection successful [My Bluetooth Speaker]# scan off [CHG] Device AA:BB:CC:A4:AA:CD RSSI is nil Discovery stopped [CHG] Controller 00:11:22:33:95:7F Discovering: no
Félicitations, vous pouvez maintenant vous connecter automatiquement à votre haut-parleur Bluetooth !
Il est maintenant temps de configurer ALSA pour utiliser le module Bluetooth
bluealsa, pour que vous puissiez définir un périphérique pcm ALSA
correspondant à votre haut-parleur Bluetooth. Un serveur sans affichage
utilisant bluealsa avec un périphérique fixe est probablement plus
facile à configurer que Pulseaudio et son comportement de changement de
flux. Nous configurons ALSA en créant un alsa-configuration
personnalisé pour le service alsa-service-type
. La configuration
déclarera un type pcm
bluealsa
du module bluealsa
fournit par le paquet bluez-alsa
, puis définira un périphérique
pcm
de ce type pour le haut-parleur Bluetooth.
Tout ce qui reste à faire est de faire en sorte que MPD envoie les données audio à ce périphérique ALSA. Nous ajoutons aussi une sortie MPD secondaire qui rend les fichiers audio en lecture disponibles en streaming sur un serveur web sur le port 8080. Lorsque la sortie est activée, un appareil sur le réseau peut écouter le flux audio en se connectant avec n’importe quel lecteur multimédia au serveur HTTP sur le port 8080, indépendamment du statut du haut-parleur Bluetooth.
Voici les grandes lignes d’une déclaration operating-system
qui
devrait accomplir les tâches sus-mentionnées :
(use-modules (gnu)) (use-service-modules audio dbus sound #;… etc) (use-package-modules audio linux #;… etc) (operating-system ;; … (packages (cons* bluez bluez-alsa %base-packages)) (services ;; … (service mpd-service-type (mpd-configuration (user "your-username") (music-dir "/path/to/your/music") (address "192.168.178.20") (outputs (list (mpd-output (type "alsa") (name "MPD") (extra-options ;; Utilisez le même nom que dans la configuration ;; ALSA plus bas. '((device . "pcm.btspeaker")))) (mpd-output (type "httpd") (name "streaming") (enabled? #false) (always-on? #true) (tags? #true) (mixer-type 'null) (extra-options '((encoder . "vorbis") (port . "8080") (bind-to-address . "192.168.178.20") (max-clients . "0") ;no limit (quality . "5.0") (format . "44100:16:1")))))))) (dbus-service #:services (list bluez-alsa)) (bluetooth-service #:auto-enable? #t) (service alsa-service-type (alsa-configuration (pulseaudio? #false) ;we don't need it (extra-options #~(string-append "\ # Déclare un type de périphérique audio Bluetooth \"bluealsa\" du module bluealsa pcm_type.bluealsa { lib \"" #$(file-append bluez-alsa "/lib/alsa-lib/libasound_module_pcm_bluealsa.so") "\" } # Déclare un type de périphérique de contrôle \"bluealsa\" du même module ctl_type.bluealsa { lib \"" #$(file-append bluez-alsa "/lib/alsa-lib/libasound_module_ctl_bluealsa.so") "\" } # Définie le périphérique Bluetooth audio. pcm.btspeaker { type bluealsa device \"AA:BB:CC:A4:AA:CD\" # unique device identifier profile \"a2dp\" } # Définie un contrôleur associé. ctl.btspeaker { type bluealsa } "))))))
Profitez de votre musique avec le client MPD de votre choix ou un lecteur multimédia capable de streamer en HTTP !
Précédent: Configurer NGINX avec Lua, Monter: Configuration du système [Table des matières][Index]