AA_PO-24567-123RF-ladyann.jpg

© ladyann, 123RF

Kompakte Jukebox

Raspberry Pi zur Miniatur-Musikzentrale ausbauen

21.06.2013
Der Music Player Daemon MPD macht aus dem RasPi eine kleine Jukebox. Die Konfiguration ist allerdings nicht immer geradlinig. Wir zeigen, worauf Sie dabei achten müssen.

Der Raspberry Pi kostet einschließlich eines kleinen Lautsprechers weit weniger als ein WLAN-Radio. Mit ein wenig Handarbeit macht der Music Player Daemon MPD [1] aus dem RasPi einen netzwerkfähigen Musikplayer, der sich hinter einem WLAN-Kofferradio nicht zu verstecken braucht. Mit einer App auf einem Smartphone lässt er sich zudem weit komfortabler bedienen als über das "Mäusekino", wie es einfache Stand-Alone-Geräte bieten.

Im Gegensatz zu einem Radio muss man dem RasPi das Musikabspielen aber erst beibringen. Die folgende Anleitung baut auf einem bereits mit dem Image des auf Debian 7 basierenden Raspbian "Wheezy" [2] eingerichteten Raspberry Pi auf [3]. Zum Einrichten der benötigten Komponenten setzen wir in der folgenden Beschreibung die Werkzeuge für die Kommandozeile ein. Der für eine Konfiguration von einem anderen Rechner benötigte SSH-Zugang sollte daher bereits ebenfalls auf dem RasPi vorhanden sein.

Die Hardware

Der RasPi besitzt einen analogen Sound-Ausgang. Dessen Klangqualität fällt zwar nicht gerade berauschend aus, aber ein kleiner Lautsprecher mit begrenzten Frequenzumfang verschluckt eben auch die meisten störenden Nebengeräusche. Das Ergebnis kann auf jeden Fall mit einem einfachen Kofferradio mithalten.

Das hier vorgestellte Low-Fi-System besteht in der Grundausbaustufe aus dem RasPi mit einem Netzwerkanschluss sowie einem Lautsprecher von Raikko [4], der trotz seines geringen Gewichts von nur 100 Gramm eine Lautstärke von mehr als 80 dB erzeugen kann (Abbildung 1). Die Musiksammlung kann sich auf einer externen Festplatte, im LAN auf einem Netzlaufwerk oder in einem Cloud-Speicher befinden. Sie steuern die Musikausgabe über das lokale Netzwerk mit einem Client auf dem Smartphone oder dem PC. Solche Clients gibt es für Linux, Android und Windows.

Die mangelhafte Tonqualität der analogen Sound-Ausgabe des RasPi fällt bei entsprechend kleinen Lautsprechern wenig auf. Bei größeren Lautsprechern kann es dagegen sinnvoll sein, auf eine gute USB-Soundkarte auszuweichen. Für eine gewisse Optimierung sorgt auf jeden Fall schon einmal die Nutzung von Pulseaudio anstelle von ALSA als Sound-System. Wie Sie das einstellen, erklären wir später noch genauer.

Was die Hardware betrifft, ist das System nun schon fast komplett. Allerdings fehlt noch die Möglichkeit zum Einbinden der eigenen Musiksammlung. Eine solche lagert üblicherweise auf einer Festplatte daher. Als externe Festplatte wird diese per USB mit dem Raspberry Pi verbunden. Netzwerk-Festplatten bindet der RasPi am einfachsten in Form einer Samba-Freigabe ein. Damit sind jetzt alle Komponenten für das RasPi-Radio beisammen.

Die Software

Das Kernstück der Software-Austattung für das RasPi-Radio bildet der Music Player Daemon MPD, den Sie zusammen mit dem Kommandozeilen-Client mpc zunächst einmal via Terminal installieren. Das Pulseaudio-Soundsystem richten Sie aus den oben erwähnten Gründen am besten gleich mit ein. Die dazu notwendigen Befehle zeigt das Listing 1.

Listing 1

$ sudo apt-get install mpd mpc pulseaudio pulseaudio-module-zeroconf
$ sudo apt-get install mpg321 lame

Die Installation von mpg321 und lame stellt sicher, dass auch die MP3-Codecs eingerichtet werden und Sie die Sound-Ausgabe auf der Kommandozeile testen können. Mit dieser Grundausstattung steht auf dem Raspberry Pi alles Nötige für das Abspielen von MP3-Dateien und entsprechenden Streams zur Verfügung.

Clients für die Steuerung des MPD gibt es für alle wichtigen Betriebssysteme. Im MPD Community Wiki [5] findet sich eine Liste mit Clients für Linux, Windows, Mac OS und Smartphones. Auf die Clients für das Smartphone, für Linux und für Windows gehen wir später noch genauer ein. Alternativ zu einer lokalen Anwendung können Sie auch einen Web-Client einrichten, wofür das Wiki ebenfalls Beispiele auflistet. Logischerweise setzt das Verwenden des im Browser laufenden Web-Clients allerdings die Installation eines Webservers auf dem MPD-System voraus, weshalb wir es hier außen vor lassen.

MPD konfigurieren

Der MPD sollte auf dem Raspberry Pi als Systemdienst starten. In diesem Fall liest der Daemon seine Konfiguration aus der Datei /etc/mpd.conf ein. Rufen sie den MPD stattdessen direkt als Benutzer auf, greift er auf die Konfigurationsdatei ~/.mpdconf zu – das ist für Testzwecke gut zu wissen.

Den wichtigsten Punkt der Konfiguration stellt die Angabe dar, an welcher Stelle der MPD nach Musik suchen soll. Ohne anderweitige Angaben nutzt er dazu das Verzeichnis /var/lib/mpd/music/. MPD akzeptiert nur eine einzige Angabe für die Option music_directory. Wollen Sie die Musik also auf mehrere Verzeichnisse verteilen, müssen Sie die anderen Verzeichnisse einfach im Standard-Ordner verlinken.

Beim ersten Start baut der MPD seine Datenbank mit den Titeleinträgen aus den MP3-Tags der Musikdateien auf. Das kann bei großen Musiksammlungen durchaus geraume Zeit in Anspruch nehmen: Für das Auswerten von rund 10 000 Titeln benötigte der RasPi in unserem Test ungefähr 20 Minuten. Findet der MPD trotz vorhandener Dateien im angegebenen Verzeichnis keine Musik – mpc stats gibt über den aktuellen Stand Auskunft – dann kann das daran liegen, dass die Rechte für das Verzeichnis nicht korrekt eingestellt sind: Der MPD startet als Benutzer mpd und braucht für diesen Leserechte im Musikverzeichnis.

Nach der Grundkonfiguration richten Sie den MPD als Systemdienst auf dem Raspberry Pi ein. Dazu genügt folgender Aufruf:

$ sudo update-rc.d mpd defaults

Dieses Kommando konfiguriert den Dienst so, dass das System ihn beim Start automatisch mit lädt.

Knisterfrei durch Pulseaudio

In der Standardkonfiguration nutzt Debian auf dem Raspberry Pi das ALSA-Sound-System für die Audio-Ausgabe. Nach dem Umstellen des Standardausgabekanals von HDMI auf den Analogausgang mittels amixer cset numid=3 1 (die 1 steht für Analog) knackt und klirrt es jedoch unerträglich. Blogs im Internet berichten dazu, dass bei der Audio-Hardware des RasPi aus verständlichen Gründen gespart wurde.

Das Pulseaudio-Soundsystem funktioniert mit dem RasPi deutlich besser. Um die Tonausgabe daher alternativ auf Pulseaudio umzustellen, nehmen Sie den Eintrag aus Listing 2 mit in die Konfigurationsdatei /etc/mpd.conf auf.

Listing 2

audio_output {
 type: "pulse"
 name: "MPD PulseAudio Output"
}

Die Anpassungen des Pulseaudio-Soundsystems für den RasPi erweisen sich allerdings als etwas knifflig. Damit Pulseaudio letztlich wie erwartet funktioniert, gilt es an gleich drei Stellen zu schrauben. Im ersten Schritt sorgen Sie dafür, dass das Betriebssystem pulseaudio mit jedem Systemstart lädt. Dafür passen Sie die zwei in Listing 3 gezeigten Einträge in der Datei /etc/default/pulseaudio an.

Listing 3

PULSEAUDIO_SYSTEM_START=1
DISALLOW_MODULE_LOADING=0

Im zweiten Schritt halten Sie Pulseaudio davon ab, in den Stromsparmodus zu gehen, sobald keine Töne ausgegeben werden: Dieses Verhalten sorgt für unschöne Klickgeräusche am Anfang und Ende jedes Titels. Dazu modifizieren Sie einige Einträge in der Datei /etc/pulse/system.pa (Listing 4). Hier kommentieren Sie zum einen den Eintrag load-module module-suspend-on-idle aus. Zum anderen gilt es die Netzwerkberechtigungen für das lokale Netzwerk (in unserem Beispiel das Heimnetz 192.168.4.0) anzupassen.

Listing 4

#load-module module-suspend-on-idle
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24 auth-anonymous=1
load-module module-zeroconf-publish

Anschließend stellen Sie im dritten Schritt die Konfiguration der ALSA-Bibliotheken auf Pulseaudio um. Zu diesem Zweck ersetzen Sie den Inhalt der Datei /etc/asound.conf durch die in Listing 5 gezeigten Zeilen.

Listing 5

pcm.pulse { type pulse }
ctl.pulse { type pulse }
pcm.!default { type pulse }
ctl.!default { type pulse }

Damit haben Sie die für Pulseaudio notwendigen Konfigurationsaufgaben erfolgreich abgeschlossen. Ein Neustart der Systemdienste für Pulseaudio und den MPD sorgt jetzt dafür, dass die vorgenommenen Änderungen auch greifen (Listing 6).

Listing 6

$ sudo /etc/init.d/pulseaudio restart
$ sudo /etc/init.d/mpd restart

Externe Festplatten

Liegt die Musiksammlung auf einem externen Datenträger oder einer anderen Partition, gilt es das entsprechende Laufwerk zum Abspielen der Titel und zur Aktualisierung der Titel-Datenbank einzubinden. Größere externe Festplatten sind üblicherweise mit NTFS formatiert. Die Einbindung dieser Platten erfordert daher die NTFS-Treiber. Die Installation des Pakets ntfs-3g mittels sudo apt-get install ntfs-3g liefert die benötigten Mount-Module.

Das automatische Einbinden von externen Festplatten zum Systemstart steuern Sie über die Datei /etc/fstab. Welchen Gerätenamen der Kernel einer USB-Festplatte zuordnet, erfahren Sie über den Aufruf dmesg | tail gleich nachdem Sie die Festplatte an den RasPi anschließen hat. Für eine externe Festplatte, auf deren erster beziehungsweise einziger Partition die Musiksammlung liegt, lautet der Gerätename in der Regel sdb1. Den zugehörigen Eintrag für die /etc/fstab, um die Platte direkt in das MPD-Standardverzeichnis für Musik einzuhängen, zeigt das Listing 7:

Listing 7

# /etc/fstab
/dev/sdb1  /var/lib/mpd/music  auto  defaults  0  0

Netzwerkfreigaben

Die meisten NAS-Laufwerke stellen die Daten als Windows-Freigabe im LAN zur Verfügung. Solche sogenannten Shares sprechen Sie von Linux aus mit einem Samba-Client an, den Sie mittels sudo apt-get install samba-client installieren. Ein Windows-Share erfordert meist einen Benutzernamen und ein Passwort für die Einbindung. Um das Passwort nicht in die für jeden lesbare Fstab-Datei eintragen zu müssen, erzeugen Sie eine Datei mit den entsprechenden Zugangsdaten, die Sie am besten im Verzeichnis /root ablegen. Listing 8 zeigt den Aufbau einer solchen Datei, der man üblicherweise den Namen .smbcredentials gibt.

Listing 8

# /root/.smbcredentials
username=Username
password=Passwort

Das Einbinden der Freigabe erfolgt auch hier wieder über die Datei /etc/fstab. Listing 9 zeigt den entsprechenden Eintrag für eine Samba-Freigabe namens MUSIK auf dem Server 192.168.2.2, wobei der Optionsteil gleichzeitig den Zeichensatz korrekt auf UTF-8 einstellt.

Listing 9

# /etc/fstab
//192.168.2.2/MUSIK  /var/lib/mpd/music  cifs  credentials=/root/.smbcredentials,iocharset="utf8"  0 0

Ein Aufruf von sudo mount /var/lib/mpd/music bindet das Verzeichnis anschließend auch ohne Neustart ein. Das Ergebnis überprüfen Sie bei Bedarf mit dem Aufruf sudo mount -l -t cifs. Anschließend können Sie die Musikdatenbank mit MPC, dem MPD-Client für die Kommandozeile, durch einen Aufruf von mpc update aktualisieren.

Internet-Radio hören

Radiosender sind im MPD nicht vorkonfiguriert. Um sie manuell einzupflegen, legen Sie eine oder mehrere Dateien mit der Endung .m3u in jenem Verzeichnis an, das Sie in der Konfigurationsdatei /etc/mpd.conf mit der Option playlist_directory ausgewählt haben. Die Internet-Adressen der Streams [6] tragen Sie dann zeilenweise in die M3U-Datei ein. Stream-Adressen in Form von M3U-Wiedergabelisten können Sie direkt herunterladen und im Playlist-Verzeichnis speichern. Die enthaltenen MP3-Stream-Adressen zeigen Sie mittels folgenden Aufrufs an:

$ echo $(wget -q -O - M3U-URL)

Sie können die Adressen anschließend direkt in eine vorhandene Wiedergabeliste mit aufnehmen.

Probleme mit großen Musiksammlungen lösen

Beim Einlesen von 10 136 Musikdateien von einer Samba-Freigabe war bei der Testinstallation nach 4028 Titeln erst einmal Schluss. Ein manuelles Update der Datenbank per mpc update brachte es dann auf 7623 Titel. Aber auch das waren ja längst nicht alle Titel. Das Verhalten schien aber ein Einzelfall zu sein, denn eine längere Recherche im Internet brachte keinen vergleichbaren Probleme zu Tage.

Mit einem kleinen Work-Around klappte der Import der Titel aber dann doch noch. Die einzelnen Unterverzeichnisse der Musiksammlung enthielten jeweils nur maximal 15 Verzeichnisse mit Musikalben. Mit dem schrittweisen Einlesen der Datenbank schien der MPD kein Problem zu haben.

Daher lasen wir mit dem Skript aus Listing 10 jeweils nur ein Unterverzeichnis per Update ein und hangelten uns so durch die gesamte Sammlung. Anschließend waren alle Titel in der Datenbank vorhanden.

Listing 10

fs=$IFS
IFS=$(echo -en "\n\b")
for f in $(ls Verzeichnis);
  do echo "$f";
  mpc update --wait "$f";
done
IFS=$fs

Steuern per Smartphone

Im Google Play Store findet sich einige Android-Apps rund um den MPD. Die Apps bitMPC, Droid MPD Client und MPDroid fallen dabei sofort ins Auge. Insbesondere MPDroid [7] macht, gemessen an den Feedbacks der Nutzer, einen ganz guten Eindruck. Die App wirkt im Vergleich zu den anderen relativ ausgereift und in der Bedienung ansprechend und übersichtlich (Abbildung 2).

Abbildung 2: MPDroid für Android macht sowohl auf dem Smartphone als auch auf dem Tablet eine gute Figur.

Die Konfiguration beschränkt sich in der Regel darauf, die IP-Adresse des Raspberry Pi einzutragen, danach findet MPDroid den MPD sofort. Die Auswahl der Alben, Titel oder Wiedergabelisten erfolgt intuitiv. Dank MPDroid beantwortet sich auch besonders schnell die Frage, wie man denn die Wiedergabelautstärke der RasPi-Jukebox einstellt: Diese regeln Sie über einen Schieber auf der Hauptseite der App treffsicher.

Desktop-Client

Hinsichtlich eines Clients für den Desktop stellen kritische Geister vielleicht die Frage, warum man denn einen RasPi im selben Raum mit einem solchen zur Musikausgabe bewegen sollte, wenn der vorhandene Desktop das ja auch selber kann. Die Antwort lautet "42" [8].

Spaß beiseite: Klammert man die Frage nach dem Sinngehalt einmal aus, eignet sich der Gnome Music Player [9] als einfacher, aber ausreichend komfortabler MPD-Client für den Desktop bestens (Abbildung 3). Da der Player auch nach Windows portiert wurde, lässt er sich auch auf Microsoft-Clients nutzen (Abbildung 4).

Abbildung 3: Den Desktop-Client Gnome Music Player gibt es sowohl für Linux …
Abbildung 4: … als auch für Windows. Er bietet auf beiden Plattformen viel Komfort.

Zu den besonders angenehmen Features des GMP zählen die grafische Albenübersicht sowie die Zusatzinfos zu dem gerade abgespielten Titel, darunter die Liedtexte und der Verweis auf ähnliche Interpreten.

Fazit

Mit dem Music Player Daemon übernimmt der Raspberry Pi zeitgemäß den Platz den Kofferradios und lässt sich mit dem Smartphone zudem noch komfortabel steuern. Die Einrichtung des MPD, die auf einem Desktop ziemlich geradlinig wäre, gestaltet sich auf Grund der spärlichen Audio-Hardware des RasPi etwas holperig. Am Ende hat aber auch dieses Projekt mit dem RasPi wieder Spaß gemacht und ein Alltagsproblem gelöst. 

Glossar

NAS

Network Attached Storage. Ein Massenspeichersystem, das die enthaltenen Festplatten im Netzwerk zur Verfügung stellt, meist in Form einer Windows-Freigabe. Kleine NAS bestehen in der Regel es aus ein oder zwei Festplatten in einem kompakten Gehäuse mit eigener Stromversorgung.

Infos

[1] Music Player Daemon: http://www.musicpd.org/

[2] Raspbian "Wheezy": http://www.raspberrypi.org/downloads

[3] Bastelprojekte mit dem Raspberry Pi: Werner Hein, "Quadratur der Himbeere", LU 11/2012, S. 72, http://www.linux-community.de/27111

[4] Raikko Nano Vacuum Speaker: http://www.raikko.com/de/produkte/info/product/nano-vacuum-speaker.html

[5] Liste mit Clients: http://mpd.wikia.com/wiki/Clients

[6] Internetradio-Stationen: http://wiki.ubuntuusers.de/Internetradio/Stationen#Radiosender-Deutschland

[7] MPDroid: https://play.google.com/store/apps/details?id=com.namelessdev.mpdroid

[8] "42": https://de.wikipedia.org/wiki/42_(Antwort)

[9] Gnome Music Player: http://gmpclient.org/

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Related content

Kommentare