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/

Jochen
Geschrieben von Jochen am 6. Mai 2021

Richtig tolle Serie! Danke dafür!

Bin noch etwas am hadern, mpd und Co. manuell aufzusetzen: vorgefertigte Images wie "Moode" oder "Rune" nutzen Realtime-Kernel und weitere "Tweaks", um das maximale an Tonqualität herauszuholen. Allerdings finde ich ein Webinterfaces einfach zu viel overhead für einen einfachen Musik-Server/Player.

PS: wer wissen möchte was am Ende "digital raus kommt", kann es mit folgendem Befehl prüfen: $ cat /proc/asound/card0/pcm0p/sub0/hw_params

R.Sato
Geschrieben von R.Sato am 25. April 2021

Wie genau darf ich "Daher empfiehlt es sich die neuste Version zu installieren." das verstehen. Welche Version wird empfohlen?

arno nym
Geschrieben von arno nym am 8. Mai 2021

"Note: Debian and Ubuntu are infamous for shipping heavily outdated software. The MPD version in their respective stable releases are usually too old to be supported by this project. Ironically, the MPD version in Debian “unstable” is more stable than the version in Debian “stable”. Installing on Android."

Quelle: https://mpd.readthedocs.io/en/stable/user.html

Peter V.
Geschrieben von Peter V. am 24. April 2021

Vielen Dank für Deine ausführliche Beschreibung zu Deinem Projekt. Fragen hätte ich zur Konfiguration: …etwa, welche Geräte sind angeschlossen … Die verfügbaren Audio-Devices ermittelt man so, schreibst Du: Karte 0 HDMI 1 Karte 1 HDMI 2 Karte 2 Headphones Karte 3 USB Audio [USB Audio] Für Aussenstehende, wie mich, ist Deine Konfiguration nicht so verständlich. Welchen Audio Ausgang ("USB-Audio") verwendest Du? Geht das Signal über USB an Deine Aktiv-Lautsprecherbox? Oder, wie ist "Karte 2 Headphones" zu verstehen. Auch da, welchen angeschlossenen Ausgang meinst Du da? Etwa den vielleicht über Bluetooth angeschlossenen Kopfhörer? Plus, die beiden HDMI-Ausgängen, spielen die da eine Rolle? Vielleicht würde eine Ergänzung zu den direkt angeschlossenen Geräten hilfreich sein. Würde eine herkömmliche Hifi-Anlage angeschlossen, müsste es ja noch analog erfolgen. In einem Kommentar ist auf den hochwertigen Hifiberry-Hat verwiesen worden. Multiroom könnte auch noch von Interesse sein, etwa eine weitere, analoge, Hifi-Anlage in einem weiteren Raum, etwa mit einem Raspberry über WLAN verbunden und Analog-Audio über einen Hifiberry-Hat-Ausgang.

Ralf Admin
Geschrieben von Ralf am 24. April 2021

Hallo Peter. Mir war es wichtig, die Sache so klar zu beschreiben, dass sie möglichst gut nachvollzogen werden kann. Ich habe nun einige Anpassungen am Text gemacht, die Deine Fragen beantworten. Um es kurz zu machen: Karte 0, 1 und 2 sind die Standardanschlüsse des Raspis; Karte 3 ist die Soundkarte in meinen per USB-Kabel an den Raspi angeschlossenen Aktivboxen. Wann immer möglich sollte man den analogen Umweg vermeiden. Der DAC im Raspi ist superschlecht und auch Aufsätze wie die von Hifiberry sind auch nicht die beste Lösung. Eine direkte digitale Verbindung (USB-Kabel) liefert die hörbar besten Ergebnisse. Voraussetzung ist natürlich, dass Du ein Endgerät hast, das einen digitalen Eingang bietet.

duckenfeld
Geschrieben von duckenfeld am 2. Mai 2021

Hallo Ralf, du schreibst, dass du Hifiberry nicht empfehlen kannst. Ich bin momentan in der Lage, an meinem nuconnect Verstärker (der vom raspi ebenfalls als Soundkarte verwendet wird wie deine Boxen) einen raspi über USB, einen über Hifiberry analog und einen über hifiberry digital zu verwenden. Das ganze ebenfalls an nubert Boxen (nuline284). Um da einen Unterschied zu hören, muss man schon verdammt gute Ohren haben ;-) Ich kann die Hifiberrys empfehlen, vor allem als gute und günsitge Alternative um aus einem (hermumliegenden) raspi eine gute Musikabspiellösung zu bauen.

Deine Artikelreihe zum raspi-NAS Server gefällt mir gut! Allerdings hab ich bisher immer sehr gern auf vorgefertigte Distros zurückgegriffen (dietpi und nextcloudpi), da das doch sehr zeitsparend ist. Andererseits lernt man dabei nicht so sehr viel. Beste Grüsse duckenfeld

chris_blues
Geschrieben von chris_blues am 23. April 2021

Dazu kann man noch den Hifiberry-Hat empfehlen. Macht echt einen Unterschied im Klang! (ich habe ein ähnliches Setup, nur mit Kodi (und z.Bsp Kore als Android App) statt MPD und Fileserver über SSH/SFTP)

Ralf Admin
Geschrieben von Ralf am 24. April 2021

Siehe auch meinen anderen Kommentar. Ich kann Hifiberry nicht empfehlen. Alles Analoge macht den Klang nicht besser, sondern schlechter. Idealerweise hat man Aktiv-Lautsprecher, die das digitale Signal erst kurz vor den Lautsprecher-Chassis wandeln.

chris_blues
Geschrieben von chris_blues am 23. April 2021

Geht MPD eigentlich auch für Videos?

Ralf Admin
Geschrieben von Ralf am 24. April 2021

Hallo Chris. Nein, MPD ist ein reiner Musik-Server. Der kann nur Audio-Files und Streams in Playlisten (m3u). Dafür macht MPD seine Sache aber gut und schnell. Wichtig zu wissen ist auch, dass MPD keine Musik an Clients streamt. Du kannst damit keine Musik auf Deinem Handy hören, sondern nur fernsteuern. Die Ausgabe erfolgt an Geräte, die direkt am Raspi angeschlossen sind.