Musikcube als Open-Source-Alternative zu Spotify

Aus LinuxUser 09/2018

Musikcube als Open-Source-Alternative zu Spotify

© karandaev, 123

Ohrenschmaus

Auf Ihrem Rechner schlummern Tausende von MP3-Dateien mit Musik? Mit Musikcube streamen Sie die Sammlung ähnlich wie bei Spotify direkt aufs Smartphone.

Apple Music, Amazon Music, Tidal und Spotify: Musik streamen ist “in”, Musik kaufen out – nur die gute alte Vinyl-LP erlebt seit Jahren ein (wenn auch bescheidenes) Comeback bei Liebhabern. Die permanente Verfügbarkeit von Millionen von Songs und Alben von Künstlern aus aller Herren Länder lockt die Nutzer, ein Abo bei einem Streaming-Anbieter abzuschließen.

Nun gibt es jedoch auch zahlreiche Musikliebhaber, die eben jene Fülle gar nicht benötigen. Wer seit Jahrzehnten seine Musiksammlung in Form eines digitalen Archivs aus MP3- oder FLAC-Dateien hegt und pflegt, der braucht keinen kostenpflichtigen Streaming-Dienst. Einziger Nachteil einer großen Sammlung: Niemand schleppt gerne eine externe Festplatte mit allen archivierten Liedern mit sich herum.

Musikstreaming im Eigenbau

Für ein selbst gehostetes Spotify-Pendant bieten sich Lösungen wie das Open-Source-Programm Ampache [1] an. Auf einem Server installiert, lässt sich die von Ampache indexierte Musik über eigene Apps und Programme auf Smartphones, Tablets oder Rechner streamen. Mit der entsprechenden Konfiguration klappt das auch via Internet, ganz so, wie man es von Spotify kennt. Als PHP-Anwendung benötigt Ampache allerdings einen Webserver mit Datenbankanbindung, was die Installation und Wartung nicht gerade vereinfacht.

Wesentlich weniger Aufwand verursacht Musikcube [2]. Der für Linux, MacOS und Windows verfügbare Musikplayer erlaubt sowohl das Streamen von Musik wie auch das Steuern der Wiedergabe über das Netzwerk. Die Oberfläche der Anwendung verzichtet dabei auf Schnickschnack und optische Effekte. Stattdessen gibt es textbasierte Dialoge, die sich auch über SSH nutzen lassen. Ideale Voraussetzungen also, um etwa einen Raspberry Pi als Streaming-Server zu betreiben.

Da war doch mal was?

Wer die Open-Source-Szene seit Jahren oder gar Jahrzehnten verfolgt, dem dürfte der Name Musikcube bekannt vorkommen: So nannte sich früher ein beliebter Audio-Player für Windows, dessen Entwicklung allerdings vor Jahren einschlief [10]. Hinter dem “neuen” Musikcube steckt mit Casey Langen nun derselbe Entwickler, der Nachfolger setzt sogar zum Teil auf den bestehenden Code auf. Diesmal läuft Musikcube allerdings auf allen gängigen Betriebssystemen (Linux, MacOS Windows) und bietet mit seiner Client/Server-Architektur eine neue Funktion.

RasPi vorbereiten

Aufgrund des geringen Stromverbrauchs und des günstigen Preises bietet sich ein Raspberry Pi als Mini-Server an. Den Quellcode zu dem unter der BSD-Lizenz veröffentlichten Projekt verwalten die Entwickler auf Github [3]. Dort finden Sie auch DEB- und RPM-Pakete für die Installation auf verschiedenen Distributionen [4]. In den regulären Paketquellen fehlt das Programm in aller Regel, einzig Arch Linux hat Musikcube im AUR.

Zuerst gilt es, das Szenario zu klären. Die Idee: Eine mehrere Gigabyte schwere Musiksammlung soll mobilen Geräten im Netzwerk als Stream zur Verfügung stehen. Das Programm erlaubt zudem das Abspielen von Musik über die Soundkarte (am besten über einen am Audio-Ausgang angeschlossenen HiFi-Verstärker). Musikcube übernimmt dabei das Verwalten der auf dem Gerät (oder einer externen USB-Festplatte) gespeicherten Musik; per Samba-Freigabe lässt sich das System dann bequem mit Musik befüllen.

Im Folgenden beschreiben wir den Einsatz eines Raspberry Pi mit Raspbian als Betriebssystem. Mit den entsprechenden Anpassungen lässt sich aber jeder Linux-Computer als Musikcube-Server einsetzen.

Das Basis-System einrichten

Musikcube gibt es für den Raspberry Pi nur in einer Version für Raspbian “Stretch”. Achten Sie daher darauf, ein entsprechend aktuelles System zu nutzen und im Vorfeld alle anstehenden Updates einzuspielen. Um sich nun das manuelle Einbinden von externen Datenträgern via USB zu sparen, installieren Sie das Paket usbmount (Listing 1).

Listing 1

$ sudo apt install usbmount
$ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    1  7,5G  0 disk
|-sda1        8:1    1  7,5G  0 part /media/pi/D22D-0251
mmcblk0     179:0    0  7,4G  0 disk
|-mmcblk0p1 179:1    0 43,2M  0 part /boot
|-mmcblk0p2 179:2    0  7,4G  0 part /

Stecken Sie danach einen USB-Datenträger an den RasPi an, erscheinen dessen Daten automatisch unter /media/pi/Label (siehe Ausgabe von Lsblk). Allerdings gehören die Daten bei mit VFAT formatierten Datenträgern dem Root-User, ein Standardbenutzer bekommt keinen Zugriff. Ergänzen Sie daher die Zeile FS_MOUNTOPTIONS="" in der Konfigurationsdatei /etc/usbmount/usbmount.conf des Dienstes um die Optionen aus Listing 2.

Listing 2

# Filesystem type specific mount options: This variable contains a space
# separated list of strings, each which the form "-fstype=TYPE,OPTIONS".
[...]
FS_MOUNTOPTIONS="-fstype=vfat,gid=users,dmask=0002,fmask=0113"

Danach installieren Sie den für die Freigaben verantwortlichen Samba-Dienst über die Paketverwaltung (Listing 3). Dabei sorgt oft der Punkt für Verwirrung, dass Samba über eine eigene Benutzerdatenbank verfügt, wobei ein Samba-User auch immer als lokaler Benutzer vorhanden sein muss. Auf dem Raspberry Pi nutzen Sie daher am besten gleich den Standardbenutzer pi und erstellen per Smbpasswd einen entsprechenden Samba-User. Beim Eingeben des Passworts erscheint Linux-typisch nichts auf dem Schirm – lassen Sie sich durch diesen Umstand nicht irritieren.

Listing 3

$ sudo apt install samba
$ sudo smbpasswd -a pi
New SMB password:
Retype new SMB password:
Added user pi.
$ sudo net usershare add Musik /media/pi/D22D-0251/Musik "Musiksammlung" everyone:F guest_ok=n
$ sudo net usershare info --long
[Musik]
path=/media/pi/D22D-0251/Musik
comment=Musiksammlung
usershare_acl=Everyone:F,
guest_ok=n

Im nächsten Schritt erstellen Sie die Freigabe: Dazu könnten Sie zwar direkt die Samba-Konfigurationsdatei /etc/samba/smb.conf bearbeiten, doch gibt es mit dem Kommando net usershare add [...] einen einfacheren Weg. Entsprechend Zeile 6 aus Listing 3 erstellen Sie für den Ordner /media/pi/D22D-0251/Musik/ die Freigabe Musik mit der Beschreibung “Musiksammlung” – passen Sie die Pfade dabei an Ihre Situation an. Jeder Nutzer darf dort lesen und schreiben (everyone:F), der Zugriff für Gäste ist jedoch untersagt (guest_ok=n). Für Änderungen wiederholen Sie einfach den Befehl zum Erstellen der Freigabe mit den gewünschten Anpassungen.

Die Freigabe wird unmittelbar nach Absetzen des Kommandos aktiv, das Kommando net usershare info --long bescheinigt deren Vorhandensein. Über die Adresse smb://RasPi/Musik greifen Sie dann von einem anderen Rechner über einen netzwerkfähigen Dateimanager wie zum Beispiel Nautilus auf die freigegebenen Daten zu (Abbildung 1). Alternativ funktioniert das auch von einem Windows-Rechner aus über die in den Explorer eingegebene Adresse \\RasPi\Musik. Als Benutzer verwenden Sie jeweils pi und das über Smbpasswd vergebene Passwort.

Abbildung 1: Über eine Samba-Freigabe lässt sich der Raspberry Pi leicht mit Musik befüllen.

Abbildung 1: Über eine Samba-Freigabe lässt sich der Raspberry Pi leicht mit Musik befüllen.

Musikcube auf dem RasPi

Passend zur ARM-Architektur des Raspberry Pi laden Sie die Datei musikcube_Version_rpi_stretch_armhf.deb herunter (respektive für einen PC das entsprechende DEB- oder RPM-Archiv). Danach spielen Sie das Paket per Apt ins System ein – dazu muss sich die DEB-Datei im aktuellen Verzeichnis befinden. Auf dem für diesen Test verwendeten Raspbian mussten wir zudem noch zwei weitere Bibliotheken von Hand installieren (Listing 4, letzte Zeile).

Listing 4

$ ls musikcube*.deb
musikcube_0.50.0_rpi_stretch_armhf.deb
$ sudo apt install ./musikcube*rpi_stretch_armhf.deb
$ sudo apt install libboost-chrono1.62.0 libboost-atomic1.62.0

Nach erfolgreicher Installation rufen Sie die Anwendung mit dem Kommando musikcube auf. Eine kurze Einführung erklärt am Anfang unter anderem, wie Sie der Musikdatenbank Verzeichnisse hinzufügen (Abbildung 2). Diesen Dialog schließen Sie mit [Eingabe]+. Danach sehen Sie den Einstellungsdialog. Mit [Tab]+ (oft auch mit den Pfeiltasten) wechseln Sie zwischen den einzelnen Punkten, mit der Leertaste wählen Sie die aktuelle Markierung aus. Mit [Esc] schließen Sie in der Regel einen der geöffneten Dialoge.

Abbildung 2: Beim ersten Start erklärt Musikcube über eine kleine Einleitung die wichtigsten Funktionen.

Abbildung 2: Beim ersten Start erklärt Musikcube über eine kleine Einleitung die wichtigsten Funktionen.

Zum Hinzufügen der auf dem USB-Datenträger gespeicherten Musik aktivieren sie den linken oberen Kasten mit dem Titel browse (SPACE to add). Dort navigieren Sie mit dem obersten Eintrag .. aus dem Home-Verzeichnis heraus bis zum Stammverzeichnis und dann weiter nach /media/pi/. An dieser Stelle sollten Sie die auf dem externen Laufwerk gespeicherten Daten finden. Markieren Sie dort dann den Musik-Ordner und übertragen ihn mit der Leertaste zu den indexed paths, also zu den von Musikcube nach Musik durchsuchten Ordnern (Abbildung 3).

Abbildung 3: Links oben in Rot finden Sie einen Ordner-Browser: Mit der Leertaste fügen Sie Ordner zur Musikdatenbank hinzu.

Abbildung 3: Links oben in Rot finden Sie einen Ordner-Browser: Mit der Leertaste fügen Sie Ordner zur Musikdatenbank hinzu.

Mit einem Druck auf [A] wechseln Sie nun zur gefüllten Bibliothek. In der Standardansicht listet Musikcube links in der Spalte artists die Künstler auf, rechts daneben in den tracks die Lieder der gerade markierten Band. Mit der Eingabetaste spielen Sie den aktiven Titel an. Im unteren Bereich zeigt der Musikplayer während der Wiedergabe einen Lautstärkeregler und eine Fortschrittsanzeige (Abbildung 4). Bei Verwendung eines entsprechenden Terminalprogramms lässt sich Musikcube auch mit der Maus bedienen.

Abbildung 4: Musik à la Terminal: Musikcube verzichtet komplett auf eine klassische GUI, lässt sich dafür aber auch via SSH steuern.

Abbildung 4: Musik à la Terminal: Musikcube verzichtet komplett auf eine klassische GUI, lässt sich dafür aber auch via SSH steuern.

Neben dem mit [B]+ aktivierbaren Künstler-Browser öffnen Sie mit [F]+ eine Filter-Ansicht, die nach Alben, Künstlern oder Genres trennt. Mit [T]+ für tracks suchen Sie gezielt nach Liedern. Mit [N]+ sehen Sie die aktuelle Playlist ein; mit [S] geht es zurück zu den settings.

Der Client

Bislang arbeitet Musikcube wie ein “normaler” Audio-Player, nur eben für die Konsole. Die Beschränkung auf das Terminal erlaubt nun aber, dass Sie den Musikcube-Rechner im Wohnzimmer an die Stereoanlage anschließen, das Programm dann via SSH starten und so die Wiedergabe über das Netzwerk steuern. Damit Musikcube nach dem Beenden der SSH-Verbindung weiterläuft, laden Sie den Player am besten in einen Terminalmultiplexer wie Tmux [5].

Sie finden Tmux in den Paketquellen der meisten Distributionen, so auch bei Raspbian (Listing 5). Nach der Installation starten Sie eine neue Tmux-Sitzung und geben ihr gleich einen passenden Namen (Zeile 4). Die Tmux-Sitzung selbst sieht – bis auf eine Statusleiste am unteren Rand des Terminalfensters – wie ein normales Terminal aus. Rufen Sie nun aber Musikcube mit dem gewohnten Kommando musikcube auf, lassen ein Lied abspielen und koppeln sich dann mit der Tastenkombination [Strg]+[B] und [D] von der Sitzung ab, läuft die Wiedergabe weiter.

Listing 5

### Tmux installieren:
$ sudo apt install tmux
### Tmux-Sitzung starten...
$ tmux new -s musikcube
### ...und wieder aufnehmen.
$ tmux attach -t musikcube

Sie dürfen sogar die SSH-Verbindung beenden: Musikcube spielt so lange weiter, bis es die Playlist abgearbeitet hat oder Sie den Rechner abschalten. Um erneut auf Musikcube zuzugreifen, verbinden Sie sich wieder per SSH und klemmen sich erneut an die Tmux-Sitzung an (Zeile 6). Teilen Sie sich den Musikplayer mit anderen Anwendern im Netz, müssen Sie sich dabei nicht einmal absprechen: Mehrere Nutzer können sich zur selben Zeit in eine Tmux-Sitzung einklinken und eigene Titel zur Playlist hinzufügen oder die Lautstärke regeln.

Client/Server: Nur Android

Bislang unterscheidet sich Musikcube noch kaum von anderen Kommandozeilen-Playern wie Cmus [6] oder Moc [7]. Auch diese kann man in derselben Art in einer Tmux-Sitzung aufrufen und so fernsteuern. Mit einem integrierten Streaming-Server hebt sich Musikcube jedoch von den anderen Audioplayern ab.

Musikcube aktiviert den Server beim Start automatisch. Der Dienst lauscht auf den Ports 7905 und 7906 auf Verbindungen. Bei Bedarf konfigurieren Sie ihn über den Punkt server setup aus dem Dialog settings, wo Sie bei Bedarf auch ein Passwort vergeben (Abbildung 5).

Abbildung 5: Musikcube aktiviert von Haus aus einen Server: Einen Client gibt es mit Musikdroid allerdings bislang nur für Android.

Abbildung 5: Musikcube aktiviert von Haus aus einen Server: Einen Client gibt es mit Musikdroid allerdings bislang nur für Android.

Einen Client gibt es bislang nur für Android. Die App namens Musikdroid findet sich bislang weder in Googles Play Store noch im Open-Source-Market F-Droid. Sie müssen die Installationsdatei (Stand zu Redaktionsschluss: musikdroid-0.30.0.apk) von Github [4] herunterladen, auf das Handy kopieren und dort über einen Dateimanager installieren. Beachten Sie dabei, dass Sie die Installation von Apps aus unbekannten Quellen zuvor erlauben müssen. Je nach Android-Version finden Sie die Funktion an unterschiedlichen Stellen in den Einstellungen.

In der App tragen Sie nun als Erstes in den settings die IP-Adresse oder den Hostnamen des Servers ein, im Fall eines Raspberry Pi zum Beispiel raspberrypi (Abbildung 6). Über die Schalter artists, albums und songs durchsuchen Sie die Musikdatenbank. Unter playlist finden Sie die aktuelle Abspielliste, darunter mit prev, play beziehungsweise pause und next Schalter zum Steuern der Wiedergabe (Abbildung 7).

Abbildung 6: In den Einstellungen von Musikdroid tragen Sie die IP-Adresse oder den Hostnamen des Musikcube-Servers ein.

Abbildung 6: In den Einstellungen von Musikdroid tragen Sie die IP-Adresse oder den Hostnamen des Musikcube-Servers ein.


Abbildung 7: In den Voreinstellungen steuern Sie mit Musikdroid die Wiedergabe auf dem Musikcube-Server.

Abbildung 7: In den Voreinstellungen steuern Sie mit Musikdroid die Wiedergabe auf dem Musikcube-Server.

Die wichtigste Funktion verbirgt sich jedoch hinter dem recht unscheinbaren Icon rechts oben in der Titelleiste neben den drei vertikal angeordneten Punkten. Mit dem Schalter wechseln Sie zwischen dem remote control mode (symbolisiert über eine Fernbedienung als Icon) und dem streaming mode (Kopfhörer-Icon, Abbildung 8). Im Streaming-Modus spielt nicht mehr der Rechner, auf dem Musikcube läuft, die Musik ab, sondern das Smartphone.

Abbildung 8: Achten Sie auf das Kopfhörer-Icon rechts oben: Im Streaming-Mode überträgt Musikcube die Musik auf den Client.

Abbildung 8: Achten Sie auf das Kopfhörer-Icon rechts oben: Im Streaming-Mode überträgt Musikcube die Musik auf den Client.

Die Musikdroid-App speichert dabei die übertragenen Lieder in einem Cache. Eine Übersicht der gespeicherten Titel erhalten Sie über das Menü rechts oben und die Option offline songs (Abbildung 9). Die Größe des Zwischenspeichers lässt sich über die Einstellungen regeln; in der Voreinstellung behält Musikdroid bis zu 1 GByte an Musik auf dem Gerät. Allerdings erlaubt Musikdroid kein Auslagern des Caches auf eine eventuell vorhandene SD-Karte. Auf Smartphones mit wenig internem Speicher sollten Sie die Funktion daher auf 0,5 GByte Puffer reduzieren oder gleich ganz abschalten.

Abbildung 9: Auch offline gibt es was auf die Ohren: Musikdroid behält die zuletzt abgespielten Songs in einem Zwischenspeicher.

Abbildung 9: Auch offline gibt es was auf die Ohren: Musikdroid behält die zuletzt abgespielten Songs in einem Zwischenspeicher.

Fazit

Um nun Musikcube zu einer echten Spotify-Alternative zu erweitern, machen Sie Ihr Heimnetz über ein VPN aus dem Internet erreichbar. Oft bieten WLAN-Router von Haus aus eine entsprechende Funktion. So haben Sie auch von unterwegs jederzeit Zugriff auf Ihre Musiksammlung – ohne Abo, ohne monatliche Kosten und – beim Einsatz eines Raspberry Pi – auch mit einem überschaubaren Stromverbrauch.

Aktuell steht Musikcube bei der Version 0.5, die Entwicklung geht jedoch beständig voran. So gibt es inzwischen die Möglichkeit, die im Player angezeigten Farben über Themes zu verändern [8]. Eine gut dokumentierte API [9] erlaubt zudem anderen Entwicklern, eigene Client-Anwendungen zu erstellen, die sich ähnlich wie Musikdroid an einen Musikcube-Server ankoppeln. Über kurz oder lang könnte es daher auch Clients für andere Betriebssysteme als Android geben. 

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 09/2018 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben