Meine Daten liegen komplett auf meinem NAS, und werden dort je nach Bedarf als NFS oder SMB-Share exportiert. Außerdem läuft hier ein Plex Server in einer Jail. Hiermit streame ich Inhalte auf Handys, Konsolen und co. – auch mit Transcoding – wenn die Bandbreite zu schmal ist. Allerdings höre ich in letzter Zeit auch verstärkt Musik über Spotify – besonders zum Entdecken von Musik. Hierfür brauchte ich eine Lösung.
Ich bekomme unter Zuhilfenahme diverser Geräte Musik in jeden Raum – nicht aber synchron die gleiche Beschallung. Daher hatte ich seinerzeit einen ausgemusterten Desktop-PC mit einem MPD bestückt. An dessen Soundkarte habe ich 3x Klinke-Kabel angesteckt und diese in Küche, Wohn- und Schlafzimmer geführt. Die Soundkarte habe ich so umkonfiguriert, dass alle 3 Ausgänge den gleichen Stereokanal ausgeben. Die Steuerung kann so mit jedem MPD Client erfolgen – inkl. der Lautstärke.
Stromfresser ausmustern
Dieser besagte PC bekam zusätzliche Aufgaben verpasst. Dies rechtfertigt natürlich immer noch nicht den hohen Stromverbrauch, sollte aber für Mehrwert sorgen, wenn der Strom ohnehin schon verbrannt wird. So richtig glücklich bin ich mit dieser Lösung aber nie geworden. Also suchte ich nach einer Möglichkeit, die 3 bisher versorgten Räume von einem Raspberry Pi speisen zu lassen. USB-Soundkarten mit mehr als einem Ausgang sind aber rar und teuer.
Die Lösung hierfür ist denkbar einfach wie billig: ein kleines, passives Gerät aus China für ~1,25€.
Spotify connect zusätzlich einrichten
Auf basis der librespot Library ist das Programmpaket raspotify entwickelt worden, welches denkbar einfach und schnell installiert ist:
curl -sL https://dtcooper.github.io/raspotify/install.sh | sh
Code-Sprache: JavaScript (javascript)
Nach erfolgreicher Installation werden grundlegende Parameter in der Datei ‚/etc/default/raspotify‘ angepasst. In meinem Fall war das hauptsächlich die Bitrate, das Cache-Verzeichnis sowie die zur Ausgabe zu verwendende Soundkarte:
# /etc/default/raspotify -- Arguments/configuration for librespot
# Device name on Spotify Connect
DEVICE_NAME="Commander1024 HomeBase"
# Bitrate, one of 96 (low quality), 160 (default quality), or 320 (high quality)
BITRATE="320"
# Additional command line arguments for librespot can be set below.
# See `librespot -h` for more info. Make sure whatever arguments you specify
# aren't already covered by other variables in this file. (See the daemon's
# config at `/lib/systemd/system/raspotify.service` for more technical details.)
#
# To make your device visible on Spotify Connect across the Internet add your
# username and password which can be set via "Set device password", on your
# account settings, use `--username` and `--password`.
#
# To choose a different output device (ie a USB audio dongle or HDMI audio out),
# use `--device` with something like `--device hw:0,1`. Your mileage may vary.
#
#OPTIONS="--username <USERNAME> --password <PASSWORD>"
OPTIONS="--device hw:1,0"
# Uncomment to use a cache for downloaded audio files. Cache is disabled by
# default. It's best to leave this as-is if you want to use it, since
# permissions are properly set on the directory `/var/cache/raspotify'.
CACHE_ARGS="--cache /var/cache/raspotify"
# By default, the volume normalization is enabled, add alternative volume
# arguments here if you'd like, but these should be fine.
#VOLUME_ARGS="--enable-volume-normalisation --linear-volume --initial-volume=100"
# Backend could be set to pipe here, but it's for very advanced use cases of
# librespot, so you shouldn't need to change this under normal circumstances.
#BACKEND_ARGS="--backend alsa"
Code-Sprache: PHP (php)
Ein ’service raspotify restart‘ startet den Daemon neu, woraufhin er sofort zur Verfügung steht und die Spotify Speaker „Commander1024 HomeBase“ im Netzwerk announced.