Spotify Wrapped, zonder Spotify
Net als ik een hekel had aan losse CD’s die in mijn kamer rondslingerden kan ik er niet zo goed tegen dat sommige albumart op mijn eigen muziekserver niet zichtbaar is. Liefst zie ik bij alle CD’s en artiesten de juiste beelden. Het werd tijd om dat eens uit te zoeken, maar natuurlijk bracht me dat op verrassende zijpaden die mijn verbinding met muziek nog sterker maken.

Coverart verbeteren
Ik bladerde in de documentatie van Navidrome, of er een manier is om wel aanwezige coverart beter zichtbaar te maken door de instellingen in de software. Ik kwam daar wel redelijk uit met wat bestaande software die ik al had en met de plugins van de dienst. Ik had daar nog niet echt aandacht aan besteed, ik had al snel een plugin gevonden die uit een archief van coverart mogelijk nog mijn bibliotheek kan verbeteren. Probleem opgelost. Bij de plugins vond ik daarna Spindle, een plugin waarmee ik mijn eigen luistergedrag kan loggen, weergeven en beheren. Ofwel, een Spotify Wrapped maar dan in eigen beheer. Zonder dat ik de data weg hoef te geven, zonder dat ik afhankelijk ben van een derde partij waar ik geen controle heb wat ze met de data doen. Tijd om dat eens uit te zoeken. En daarna nog een kers op de taart te krijgen om mijn 14 jaar oude hardware te koppelen.
DIY met zelf hosten
Ik probeer al langer om zo goed mogelijk de knip te maken met allerlei cloud-diensten. Dat gaat privé beter dan zakelijk. Logisch, want als ZZP’er is het wel handig om te snappen hoe de AI ontwikkelingen doorspelen in diensten van Google, Microsoft en anderen. Maar voor mijn foto’s en met name muziek wil ik meer de eigen controle.
Het afgelopen jaar heb ik best wat vrije tijd gestoken in een eigen server die ik host bij Hetzner in Duitsland. Ik kan hier behoorlijk wat services en diensten kwijt die ik zelf gebruik. Er zit nog weinig echt zakelijke software bij, het zijn vooral hobby projecten waar het niet heel erg is als er even een time-out is.
Hier draait nu al sinds begin dit jaar een eigen muziekserver. De open source software Navidrome doet zijn werk goed, ik kan prima op mijn laptop en iPhone de muziek afspelen in eigen software, fantastisch. Wat ik totaal niet mis aan Spotify is dat ik geen maandelijks abonnement meer heb en dat ik geen (AI) muziek krijg opgedrongen. Ik kies uit mijn eigen bibliotheek.
Dat heeft ook een keerzijde. Ik mis soms de aanbevelingen voor nieuwe muziek in Spotify en laten we eerlijk zijn, alles in eigen beheer doen is wat minder eenvoudig dan een app downloaden en account aanmaken. Maar ik heb het ervoor over. Het onderhouden van zo’n miniatuur-infrastructuur voor mijn eigen gebruik is deels hobby en deels een leertraject om te begrijpen wat er bij komt kijken.
Maar hoe heb ik nu een Spotify Wrapped kloon op mijn eigen muziekspeler? Dat doe ik met de plugin Spindle, die is gemaakt voor software zoals Navidrome. Het houdt de statistieken bij waar ik naar luister en heeft een interface die ik real-time laat zien wanneer ik naar wat luister. Het zijn de eerlijke statistieken, zonder de opsmuk van een storytelling-format.
Muziek in een vrachtschip
De installatie en activatie van de plugin was een klus die ik niet zonder Claude had kunnen doen. Alles op mijn server draait namelijk in Docker. Docker is speciale software om verschillende andere software naast elkaar te plaatsen, zonder dat ze elkaar in de weg zitten. Een vergelijking: Mijn server is een vrachtschip. Het kan veel vracht (software/services) vervoeren. De verschillende software pakketten, de “vracht”, zit in losse containers, net als op een vrachtschip.
Door die containers werken de software pakketten los van elkaar, beïnvloeden ze elkaar niet en kun je ze verplaatsen naar een ander vrachtschip als nodig. Als ik een container niet meer nodig heb, kan ik hem eenvoudig verwijderen, zonder dat de andere containers daar last van hebben.
Dat regel je allemaal met Docker. Die maakt de containers, maakt de “vrachtbrieven” wat er in zit, zorgt dat de containers op de juiste plek staan en als het nodig is dat containers toch verbonden zijn, dan regelt het dat.
Docker is eerlijk gezegd niet eenvoudig om te leren en echt te begrijpen, maar Claude kan alles geduldig uitleggen. Zo ook de installatie van Spindle in een aparte container. Die software bestaat namelijk uit een klein stukje code dat vanuit de Navidrome muziekspeler doorgeeft wát ik afspeel, een database om die informatie op te slaan en een dashboard om de statistieken weer te geven. Dat moet allemaal met elkaar kunnen praten, daar kan Docker voor zorgen.
Die netwerkverbinding kostte me wel wat tijd om in orde te krijgen. Claude kan zo nu en dan meekijken op de server zelf, die rechten krijgt het van me. Na wat uitzoekwerk kwamen we er achter dat één optie niet goed stond, om de twee containers goed met elkaar te laten praten. Daarna werkte de verbinding prima.

De geschiedenis terugkijken
Spindle heeft de mogelijkheid om je Spotify luistergeschiedenis in te lezen en te koppelen aan de muziek die ik op mijn eigen server heb. Dat wilde ik natuurlijk. Bij Spotify kun je je Extended Listening History opvragen. Hiervoor kun je het beste deze gids volgen en doen wat daar staat met de vinkjes en opties. Het samenstellen en beschikbaar stellen kost een dag of wat en je krijgt alles terug wat je luisterde in Spotify, in behoorlijk detail.
Deze geschiedenis importeer ik in Spindle en plots heb ik meer dan 15.000 luistersessies over de afgelopen 17 jaar. Dit is nog niet eens compleet, de rapportage toont dat ik over die jaren 75.000 nummers heb afgespeeld, waarvan 75% niet kan worden geïmporteerd. De import maakt een link met mijn eigen bibliotheek en daar staat nu eenmaal niet alles in wat ik ooit bij Spotify heb geluisterd. Dat is voor nu prima, maar eigenlijk wil ik meer statistieken! Dat is een project voor na de zomer, om de geschiedenis van de Spotify luistersessies zelf uit te lezen en een echt compleet beeld te krijgen van mijn luistergedrag. Niet dat het veel zal verschillen wat ik nu al in Spindle zie.

Mijn all-time favorite band Pearl Jam staat fier bovenaan met zo’n 2,5x meer nummers afgespeeld dan de nummer 2. Ik denk niet dat een volledige analyse hier veel aan zal veranderen. Maar ik hou nu eenmaal van dit soort statistieken.
De Sonos weer in gebruik
Ik heb nog een oude Sonos Play:5 speaker. Dit is de eerste generatie speakers die Sonos maakte en inmiddels niet meer ondersteunt. Maar hij werkt nog en we spelen er soms nog muziek op af. Nu ik toch bezig was, zou ik mijn muziekserver aan de Sonos kunnen verbinden? Maar natuurlijk, met de bonob software. Net als bij Spindle kan ik dit op mijn eigen server installeren in een Docker container, ik koppel de software aan mijn muziekspeler, aan de Sonos speaker en klaar. Dacht ik. Wederom, net als bij de Spindle software had ik nog wat extra stappen nodig en uitzoekwerk van Claude in de broncode van de software. Hier vond het een extra instelling die ik moest meegeven voor een geslaagde koppeling, maar die staat niet in de documentatie. Daarna werkte alles perfect. Ik kan nu mijn eigen muziekbibliotheek afspelen op een server die ik in eigen beheer heb. Op speakers die officieel al zijn afgeschreven door de fabrikant maar nog prima werken.
Dit is de duurzaamheid waar ik vaak naar zoek in de oplossingen. Ik heb liever dat spullen langer blijven werken dan dat een bedrijf besluit dat ik ze moet vervangen, omdat de balance sheet dat verplicht en aandeelhouders meer terug willen zien per consument.
Alles in eigen beheer doen. Het is inderdaad niet altijd even eenvoudig. Maar met wat experimenteerdrift, een abonnement op een AI-service voor assistentie en een vrije middag kom je best een eind.
Je reactie?
Laat gerust een reactie, vraag of gedachte achter. Hou het netjes en be cool.