Serie: Raspi als NAS und Musikmaschine - Teil 3

Fr, 23. April 2021, Ralf Hersel

Meine alte NAS musste einer Raspi-basierten Lösung weichen, um als Allround-Gerät verschiedene Bedürfnisse zu erfüllen. Im ersten Teil dieser Serie habe ich die Hardware beschrieben, im zweiten Teil ging es um die Konfiguration des Raspberry Pi als File-Server, und in diesem dritten Teil kümmere ich mich um die Musikmaschine.

Ziel dieser Übung ist es, eine Musikverwaltung auf dem Raspberry Pi 4 bereitzustellen, die an eine Audio-Anlage übertragen kann und von beliebigen Endgeräten gesteuert werden kann. Es geht nicht darum, Audio an Endgeräte zu streamen, sondern diese als Fernsteuerung für den Raspi zu verwenden. Zu den bisherigen Artikeln dieser Serie gab es viele Vorschläge, die Appliances für den Raspi vorgeschlagen haben (LibreELEC, Navidrom, Volumio). Das ist nicht mein Ziel; ich möchte den Raspberry Pi als vollwertigen PC behalten, anstatt ihn nur einer Aufgabe zu widmen.

Deshalb habe ich mich für den Music Player Daemon (MPD) entschieden. Dieser Musik-Server verwaltet eine Musiksammlung und Streams, z.B.: Internet-Radiosender, kann den Sound an angeschlossene Lautsprecher senden und bietet einige Remote-Clients.

Die Installation

Erstes Problem: das MPD-Paket (0.21.5) für das Raspberry Pi OS (Debian Buster) ist völlig veraltet; es hängt 27 Releases hinter der aktuellen Version (0.22.6) zurück. Daher empfiehlt es sich die neuste Version zu installieren. Das habe ich mithilfe dieser Anleitung versucht und bin dabei gescheitert; fehlende Pakete und Abhängigkeiten waren der Grund dafür. Dann habe ich es mit einem nicht offiziellen Paket in der Version 0.22.3 versucht. Das hat funktioniert und geht so:

Schlüssel hinzufügen:
wget -O /etc/apt/trusted.gpg.d/deb.kaliko.me.gpg https://media.kaliko.me/kaliko.gpg

Quelle hinzufügen:
sudo nano /etc/apt/sources.list.d/deb.kaliko.me.list
deb https://deb.kaliko.me/raspbian-backports/ stable-backports main

Package Index aktualisieren:
apt update

MPD installieren:
apt install mpd/stable-backports

Die Installation hat bei mir ohne Probleme funktioniert. Als Nächstes gilt es, MPD zu konfigurieren.

Die Konfiguration

Bevor man den Music Player Daemon konfigurieren kann, müssen ein paar Informationen eingeholt werden: wo liegt die Musik, wo liegen die Playlisten und welche Geräte sind angeschlossen. Bezüglich der Musik-Bibliothek und des Playlist-Verzeichnisses sieht das bei mir so aus (siehe auch Teil 2 der Serie):

/mnt/nas/Musik
/mnt/nas/Playlists

Die verfügbaren Audio-Devices ermittelt man so:

pi@raspi4:~ $ aplay -l
**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 0: b1 [bcm2835 HDMI 1], Gerät 0: bcm2835 HDMI 1 [bcm2835 HDMI 1]
  Sub-Geräte: 4/4
  Sub-Gerät #0: subdevice #0
  Sub-Gerät #1: subdevice #1
  Sub-Gerät #2: subdevice #2
  Sub-Gerät #3: subdevice #3
Karte 1: b2 [bcm2835 HDMI 2], Gerät 0: bcm2835 HDMI 2 [bcm2835 HDMI 2]
  Sub-Geräte: 2/2
  Sub-Gerät #0: subdevice #0
  Sub-Gerät #1: subdevice #1
Karte 2: Headphones [bcm2835 Headphones], Gerät 0: bcm2835 Headphones [bcm2835 Headphones]
  Sub-Geräte: 2/2
  Sub-Gerät #0: subdevice #0
  Sub-Gerät #1: subdevice #1
Karte 3: DAC [USB AUDIO    DAC], Gerät 0: USB Audio [USB Audio]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0

Wichtig ist, dass die Geräte eingeschaltet und verfügbar sind. Die Karten 0, 1 und 2 sind die Standardanschlüsse des Raspberry Pi. In meinem Beispiel ist die 'Karte 3' das gewünschte Gerät für die Audiowiedergabe. Es handelt sich um Nubert A-300 Aktivlautsprecher, die ich sehr empfehlen kann (die aktuelle Version sind die nuPro X-4000 RC). Die Lautsprecher sind direkt per USB-Kabel mit dem Raspi verbunden.

Die Konfiguration des MPD erfolgt in der Datei '/etc/mpd.conf'. Da die Datei etwas lang ist, beschreibe ich hier nur die relevanten Einträge:

sudo nano /etc/mpd.conf

music_directory        "/mnt/nas/Musik"
playlist_directory     "/mnt/nas/Playlists"
bind_to_address       "any"
audio_output {
        type            "alsa"
        name            "Nubert"
        device          "hw:3,0"
        ...
}

Die ersten beiden Einträge sollten klar sein. 'bind_to_address "any" ' sorgt dafür, dass MPD von jedem Client im Netzwerk erreichbar ist. Beim ALSA-Audio-Output ist der 'device' Eintrag wichtig. Die '3' verweist auf die 'Karte 3', die wir vorhin mit 'aplay -l' ermittelt haben.

Nachdem die Änderungen in der 'mpd.conf' mit 'Ctrl+o' und 'Ctrl+x' in Nano gespeichert wurden, kann MPD neu gestartet werden. Dies geschieht mit dem Befehl:

sudo systemctl restart mpd

Ob der Music Player Daemon wirklich läuft, kann man so ermitteln:

systemctl status mpd
   mpd.service - Music Player Daemon
   Loaded: loaded (/lib/systemd/system/mpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2021-04-22 19:11:48 CEST; 2h 50min ago

Um die Musik-Datenbank zu aktualisieren, verwendet man diesen Befehl des MPD-CLI Players namens 'mpc':

mpc update

Bei hunderttausend Titeln in der Musiksammlung braucht MPD eine Weile bis die Datenbank aufgebaut, bzw. aktualisiert ist, es geht aber auf jeden Fall schneller als bei Rhythmbox. Verliert hier auf keinen Fall die Geduld.

Die Clients

Nun geht es um die Wurst; spielt das Ding auch wirklich? Mit 'mpc' gibt es einen CLI-Player für MPD, den ich noch nicht richtig verstanden habe (ich werde später darüber berichten). Client-Apps für den MPD gibt es für alle Plattformen. Ich habe Clients für den Linux Desktop und Android getestet. Als Desktop-Player empfehle ich die Anwendung Ymuse und M.A.L.P für Android. Bei den Clients gibt man ganz einfach die IP-Adresse des Raspis ein, um eine Verbindung herzustellen. Ohne die Clients hier im Detail vorstellen zu wollen, möchte ich trotzdem ein paar grafische Eindrücke hinterlassen:

Ymuse - ein MPD-Player für den Linux Desktop

M.A.L.P - ein MPD-Player für Android

Fazit

Veraltete (bzw. gut abgehangene) Software gehört zum Konzept von Debian und damit auch zum Raspberry Pi OS. Falls die alten Versionen nicht mehr genügen, kann man sich nach neueren Quellen umschauen. Der Music Player Daemon ist eine tolle Musikverwaltung für den spezifischen Anwendungsfall: Musik zentral verwalten und über Remote-Clients steuern (nicht streamen). Das ist nicht jedermanns Use Case, funktioniert aber für meine Zwecke sehr gut.

Im vierten Teil der Serie gehe ich auf die Besonderheiten ein:

  • Internet-Radio mit MPD abspielen
  • Playlisten erstellen und für MPD verfügbar machen
  • MPC verwenden


Quellen:

https://www.musicpd.org/

https://bobrathbone.com/raspberrypi/documents/Compiling%20and%20installing%20MPD.pdf

https://www.musicpd.org/download-unoff-debian/