Gonic is een lichtgewicht Subsonic API muziek streamingserver die veel verschillende cliënts ondersteunt. Gonic maakt van een Linux systeem een muziekserver waarmee iedereen in je thuisnetwerk simultaan eigen playlists reclamevrij naar hun apparaat streamt.
Matto Fransen
Een Rapsberry Pi verbruikt weinig stroom en is 100% stil en is daarmee uitstekend geschikt voor het realiseren van een streaming muziekserver voor het thuisnetwerk. Wij gingen op zoek naar een open source streaming muziekserver voor onze eigen muziekverzameling. Wij kozen voor Gonic, dit is een lichtgewicht server, geschreven in Go. Gonic is beschikbaar onder de open source GNU General Public License v3.0 en gebruikt SQLite als database.
Gonic ondersteunt de Subsonic API, zodat je uit veel verschillende cliënts kunt kiezen. Gonic is een multiuser applicatie, waarbij iedere gebruiker zijn eigen voorkeuren, playlists en dergelijke heeft. Gonic maakt je muziekverzameling beschikbaar op je netwerk voor meerdere apparaten met een Audiosonic-cliënt of Subsonic-cliënt, die elk simultaan hun eigen playlist reclamevrij afspelen. Voor de Raspberry Pi is een Docker image beschikbaar zodat deze makkelijk te installeren is.
Raspberry Pi 3 Model A+
Omdat Gonic een lichtgewicht server is, kozen wij voor een Raspberry Pi 3 Model A+. Dit model heeft alleen draadloos netwerk, slechts één USB-poort en 512 Mb DDR2 geheugen. Het bordje heeft hetzelfde formaat als de originele Raspberry Pi A+ en is daardoor iets kleiner dan de gebruikelijke Raspberry Pi bordjes (65 x 56 mm in plaats van 87 x 57 mm). De Raspberry Pi 3 Model A+ is een stuk goedkoper dan een Raspberry Pi 4, maar levert door zijn 1.4 GHz processor toch mooie prestaties. Een voordeel van het gebruik van draadloos netwerk is dat we de Raspberry Pi 3 A+ elke gewenste plek kunnen kunnen geven, zonder aan een bedrade netwerkaansluiting vast te zitten. Uiteraard kun je Gonic ook op een ander model Rapsberry Pi draaien, de Docker image is een universele Raspberry Pi image. De Rapsberry Pi boot vanaf een Micro-SD-kaartje, hoe groot dat kaartje moet zijn hangt vooral van de omvang van je muziekverzameling af, een 32 GB kaartje kost nog geen 10 euro.
Cliënts
Voor zo’n beetje elk platform zijn cliënts beschikbaar voor de Subsonic API beschikbaar, zoek hiervoor naar Subsonic- en naar Airsonic-cliënts.
Er zijn cliënts beschikbaar voor Linux, Mac en Windows desktops, zoals voor de Linux desktop bijvoorbeeld de Clementine muziek speler. Voor Kodi bestaat een Subsonic plugin.
Ook voor mobiele apparaten bestaan er verschillende cliënts, sommige gratis en sommige betaald. Voor Android kun je zowel via de Google Playstore als via F-Droid cliënts installeren. Wij installeerden de apps Dsub, Subsonic en UtraSonic voor Android en de app Supersonic voor iOS.
De Subsonic server API biedt een enkele “smart playlists”, dit zijn lijsten zoals de laatst toegevoegde muziek, een lijst met random gekozen songs, de meest gespeelde muziek en de laatst gespeelde muziek. Gonic houdt dit per gebruiker bij. Subsonic cliënts bieden de mogelijkheid om je favoriete nummers een ster te geven, helaas kan Gonic hier niet mee overweg, dus de smart playlist met de hoogst gewaardeerde songs blijft leeg. De mogelijkheden die de cliënts verder nog bieden, lopen wat uiteen. Sommige doen meer met de mp3-tags dan andere. De Android Subsonic app bijvoorbeeld geeft je een lijst met directories, waaruit je dan je album kiest. Andere apps laten je ook op muziek genre kiezen, of stellen de lijst met artiesten samen op basis van mp3-tags.
Jukebox
De Audiosonic en Subsonic API ondersteunen de zogenoemde Jukebox faciliteit. Dit betekent dat je vanaf een cliënt in het netwerk muziek direct op de server afspeelt. De cliënt, bijvoorbeeld een smartphone of tablet werkt dan als een soort afstandsbediening. De muziek komt dan niet uit de cliënt, maar van de server zelf, je sluit een geluidsinstallatie op de Raspberry Pi aan en speel daar de muziek op af, terwijl andere gebruikers nog steeds via hun eigen apparaat naar hun eigen playlist luisteren. De koptelefoonuitgang van de eerste Rapsberrry Pi-modellen had soms last van storing vanuit de voeding waardoor de geluidskwaliteit geen goed imago heeft. Bij de nieuwere modellen is dit verbeterd en op onze Raspberry Pi 3 Model A+ hebben wij hier geen last van. Veeleisende Hifi luisteraars breiden hun Raspberry Pi uit met een Hifi-Hat, of sluiten een USB-geluidskaart op de Raspberry Pi aan. Wij vinden het geluid uit de koptelefoonaansluiting van de Rapsberry Pi echter goed genoeg en sluiten onze versterker daar op aan.
Installeren
Wij plaatsen onze muziekverzameling in /var/lib/muziek, je kunt natuurlijk ook een andere plek kiezen. Verder kiezen wij er voor om de jukebox-faciltiteit beschikbaar te maken.
Het makkelijkst is om Gonic met behulp van docker-compose te installeren. Maak een directory “gonic” aan met daarin het bestand docker-compose.yml, zie listing 1. Met dit configuratiebestand installeer je de Docker container.
Na het starten van de container open je in je browser het IP-adres van de Rasberry Pi en logt daar op Gonic in met usernaam “admin” en wachtwoord “admin”. Hier maak je gebruikers aan en start je de scanner die de directory met de muziekverzamelig indexeert. Let op, de wachtwoorden van de gebruikers staan leesbaar in de SQLite database.
De cliënts maken gebruik van een lokale cache, zodat de luisterervaring niet door hickups in het netwerk verstoord blijft. In je lokale thuisnetwerk zul je amper met dergelijke hickups te maken hebben, zodat in de praktijk een servertje in je thuisnetwerk een prachtige en stabiele oplossing is.
Niet elke cliënt heeft een optie voor de Jukebox faciliteit. De Android app UtraSonic biedt deze optie, hier kies je bij de serverinstellingen de optie “Jukebox By Default”. Nadat we dit aan de praat hadden, moesten we met behulp van de alsamixer nog even het volume op de Raspberry Pi opschroeven.
Playlist
In de meeste cliënts kun je songs of albums aan een playlist toevoegen of nieuwe playlists maken. De webinterface biedt gebruikers de mogelijkheid om playlists up te loaden. Je kunt net zoveel playlists uploaden als je wilt. Een playlist bestaat uit regels met het volledige pad en de filenaam van de song. Ga op de server naar de plek waar de muziek staat, bij ons “/var/lib/muziek/” en vraag vanaf daar het pad en filenaam van een song op. Bijvoorbeeld “MixKit/Stelino/03 Getting Ready.mp3”. In de docker-compose staat dit als mount onder ‘/music/’, dus de regel in de playlist voor deze song wordt “/music/”, gevolgd door het pad en de filenaam, in ons voorbeeld “/music/MixKit/Stelino/03 Getting Ready.mp3”. Gonic verwacht een m3u8-bestand, met utf8 codering. Een playlist van een groot aantal songs maak je bijvoorbeeld makkelijk met:
“find . -name ”*mp3″ | grep -e “Parsons” -e “Clapton” -e “Gilmour” >> ~/mylist.m3u8“. Mist je speler de optie een playlist random af te spelen, dan kun je playlist randomizen met rl, bijvoorbeeld ”rl mylist.m3u8 > myrandomlist.m3u8“. Rl installeer je met ”apt-get install randomize-lines”.
De muziekverzameling hoeft met een muziekstreamer zoals Gonic maar op één plek te staan en je geniet in alle kamers van muziek zonder aantasting van je privacy. Gonic is een Linux applicatie, dus als je al een Linux server hebt draaien, kun je het daar installeren. Zo niet, een Raspberry Pi 3 Model A+ is goed genoeg voor een Gonic server. Zonder koelblokje wordt de chip wel warm, maar niet overdreven heet. Het ontbreken van een vaste ethernet verbinding is voor deze toepassing geen gemis, het streamen over wifi gaat prima, ook van nummers die langer dan een uur duren.