Resonance – ein alternativer Squeezebox-Server in Python (Open Source)

Für Neuigkeiten und Ankündigungen zum Thema SqueezeBoxen oder Forum - keine Supportthreads
Antworten
Benutzeravatar
platzregen
Beiträge: 2
Registriert: 9. Februar 2026 21:32
SqueezeBox: Radio

Resonance – ein alternativer Squeezebox-Server in Python (Open Source)

Beitrag von platzregen »

Resonance – ein alternativer Squeezebox-Server in Python

Hallo zusammen,

ich möchte euch mein Hobbyprojekt vorstellen: Resonance – eine unabhängige Neuimplementierung des Squeezebox-Servers, komplett in Python mit asyncio geschrieben.

https://github.com/endegelaende/resonance-server

Was ist das?

Resonance spricht dieselben Protokolle wie LMS (Slimproto, JSON-RPC, Cometd, CLI) und kann Squeezebox-Hardware sowie Squeezelite steuern. Es ist kein Fork von LMS, sondern von Grund auf neu geschrieben – mit dem LMS-Quellcode als Referenz für das Protokollverhalten.

Was funktioniert bereits?
  • Slimproto (Player-Steuerung, Discovery)
  • JSON-RPC API und Cometd (kompatibel mit LMS-Clients)
  • Jive-Menüsystem (Radio, Touch, Boom, Controller)
  • HTTP-Streaming (MP3, FLAC, OGG, WAV als Passthrough)
  • On-the-fly Transcoding (M4A, M4B, AAC, ALAC via faad/lame)
  • Gapless Playback, Crossfade, ReplayGain
  • Seeking (byte-basiert und zeitbasiert)
  • Musikbibliothek mit Scanner, Volltextsuche, Cover Art
  • Alarm-Scheduling
  • Web-UI (Svelte 5, noch recht einfach gehalten)
Was wurde getestet?

Ich besitze nur ein einzelnes Squeezebox Radio – damit läuft alles stabil. Andere Hardware (Touch, Boom, Transporter, Classic, Controller) konnte ich bisher nicht testen. Squeezelite funktioniert ebenfalls.

Apps wie iPeng und Squeezer sollten grundsätzlich funktionieren (die API ist LMS-kompatibel), aber auch das ist noch nicht verifiziert.

Wichtig:
  • Das ist ein Hobbyprojekt im Alpha-Status – es wird Bugs geben
  • Kein offizielles Projekt von Lyrion/LMS
  • Lizenz: GPL-2.0 (wie LMS)
Warum?

Ich finde die Squeezebox-Plattform großartig und wollte verstehen, wie sie unter der Haube funktioniert. Dabei ist nach und nach ein Server entstanden, der tatsächlich Musik abspielt. :)

Feedback willkommen!

Falls jemand Lust hat, das auszuprobieren – ich freue mich über jede Rückmeldung, insbesondere von Leuten mit anderer Hardware als Radio. Bug-Reports gerne direkt auf GitHub:

https://github.com/endegelaende/resonance-server/issues

Danke an die Community hier – ihr haltet die Plattform am Leben! 👍
Benutzeravatar
JoeMod2015
Doktor Squeezebox
Beiträge: 280
Registriert: 6. Oktober 2015 17:12
SqueezeBox: Transporter
SqueezeBox: Boom
SqueezeBox: Classic
SqueezeBox: Radio
SqueezeBox: Touch
SqueezeBox Server läuft auf: Synology DS420+, Ubuntu 20.04, Windows Server 2012R2

Re: Resonance – ein alternativer Squeezebox-Server in Python (Open Source)

Beitrag von JoeMod2015 »

Moin,

das ist ja großartig! Ich schau mir das gerne an, habe alle Squeezebox-Modelle da. Und nutze auf Android Squeeze Ctrl zum Steuern, auch dazu kann ich Dir dann die Erfahrungen berichten.
LMS ist bislang unverzichtbar, kommt mir aber stellenweise sehr träge vor. Wenn es da was mit besserer Performance gibt, hätte ich sicher nichts dagegen.
Leider kann ich noch nicht versprechen, dass so bald Feedback von mir kommt. Das WE ist voll, vielleicht komme ich am Montag dazu.

Viele Grüße,
Joe
Benutzeravatar
platzregen
Beiträge: 2
Registriert: 9. Februar 2026 21:32
SqueezeBox: Radio

Re: Resonance – ein alternativer Squeezebox-Server in Python (Open Source)

Beitrag von platzregen »

Hallo zusammen, kurzes Update was sich seit dem 9. Februar getan hat.

@JoeMod2015 — Super, dass du alle Modelle hast! Bin sehr gespannt auf deine Erfahrungen, besonders mit Touch und Transporter. Kein Stress mit dem Timing.

Neue Features seit dem ersten Post:
  • Plugin-System: Resonance hat jetzt eine Plugin-Architektur. Plugins koennen Commands, Jive-Menueintraege, Event-Hooks, HTTP-Routen und Content-Provider registrieren. Es gibt eine vollstaendige Plugin API Referenz und ein Plugin Tutorial fuer alle die eigene Plugins bauen wollen.
  • Internet Radio (erstes Plugin): Stationen durchsuchen und abspielen via radio-browser.info (~40.000+ Sender, freie Community-API). ICY-Metadaten (Artist/Titel) werden geparst und in Echtzeit an Clients gepusht. Falls ein Live-Stream abreisst, verbindet der Server automatisch neu (bis zu 3 Retries mit Self-Healing).
  • Web-UI erweitert: Neue Views fuer Radio und gespeicherte Playlists — alles ueber JSON-RPC angebunden, wie bei den Hardware-Clients.
  • Cover-Art Fixes fuer Hardware-Player: Station-Artwork (Favicons) wird jetzt zuverlaessig auf SqueezePlay/JiveLite angezeigt. Der Server konvertiert .ico-Dateien on-the-fly nach PNG (SDL_image kann kein ICO), proxied alles serverseitig und liefert einen Platzhalter bei Upstream-Fehlern.
  • Display-Metadaten-Pipeline: Bitmap-Displays (SB2/SB3/Classic/Boom) bekommen jetzt Track-Info und ICY-Titelwechsel mit. Liegt hinter einem Feature-Flag (RESONANCE_DISPLAY=1) bis es auf echter Hardware verifiziert ist.
Hardware-Status: Bisher nur auf meinem Squeezebox Radio getestet. Falls jemand es ausprobieren moechte — wuerde mich sehr ueber Feedback freuen, insbesondere mit Touch, Classic oder Boom.

Aktueller Code ist immer auf GitHub: https://github.com/endegelaende/resonance-server
Benutzeravatar
JoeMod2015
Doktor Squeezebox
Beiträge: 280
Registriert: 6. Oktober 2015 17:12
SqueezeBox: Transporter
SqueezeBox: Boom
SqueezeBox: Classic
SqueezeBox: Radio
SqueezeBox: Touch
SqueezeBox Server läuft auf: Synology DS420+, Ubuntu 20.04, Windows Server 2012R2

Re: Resonance – ein alternativer Squeezebox-Server in Python (Open Source)

Beitrag von JoeMod2015 »

Sorry für die ewige Pause. Jetzt hatte ich endlich Zeit, mal meinen "Fuhrpark" mit dem Resonance Server auszutesten.

Beim Transporter passiert etwas Seltsames. Nach Auswahl des Servers zeigt der Transporter dauerhaft nur "Connecting to server..." im linken und nichts im rechten Display. Er reagiert auf keine IR-Fernbedienungsbefehle, wohl aber auf die Knöpfe am Gerät, die mit Playback zu tun haben (Play, Rew, Fwd und so).
Im Resonance-UI (Browser) kann ich ihn aber etwas spielen lassen. Anscheinend bleibt er in einem der letzten Schritte beim Setup hängen. Kann es sein, dass da ein finales Ping-Pong fehlt?
Auch eine Squeezebox Boom verhält sich so, im Display steht konstant "Connecting...", am Gerät funktionieren gar keine Knöpfe und via Fernbedienung geht auch nichts. Im Resonance UI ist die Steuerung möglich.
Bei der Squeezebox Classic lese ich wieder "Connecting to server...", kann sie via Resonance steuern, sonst aber nicht.
Die SliMP3 findeet den Server nicht, ich vermute, die ist noch nicht fähig, mehr als einen Server zu wählen und nimmt deshalb den erstbesten. Das ist in meinem Fall wohl immer der Lyrion Music Server im Netzwerk.
Pinnacle Soundbridge zeigt mir den Resonance Server aus Quelle an, wenn ich ihn wähle, hängt sich das Gerät allerdings auf.

Beim Radio (!) ist es wieder das Problem, dass die Serververbindung im letzten Stadium zwar die Steuerung via Resonance zulässt, d.h. ich kann Songs auswählen und spielen lassen, aber das Display zeigt:

Code: Alles auswählen

Problem Connecting
We couldn't connect to Resonance. Make sure your computer is turned on and connected to your local network, and that Lyrion Music Server is currently running.
Ich würde gerne viel mehr Infos hier posten, aber anscheinend hat das Forum gerade ein technisches Problem. Versuche später, weitere Infos hinzuzufügen!
Benutzeravatar
JoeMod2015
Doktor Squeezebox
Beiträge: 280
Registriert: 6. Oktober 2015 17:12
SqueezeBox: Transporter
SqueezeBox: Boom
SqueezeBox: Classic
SqueezeBox: Radio
SqueezeBox: Touch
SqueezeBox Server läuft auf: Synology DS420+, Ubuntu 20.04, Windows Server 2012R2

Re: Resonance – ein alternativer Squeezebox-Server in Python (Open Source)

Beitrag von JoeMod2015 »

Was mich hier insbesondere wundert, ist, dass es bei Dir problemlos mit einem Radio funktioniert hat, und hier eigentlich mit gar keinem Gerät. Ich muss noch Controller, Duet Receiver und Touch ausprobieren, das ist im Moment aber zeitlich wieder nicht drin.
In der Shell gibt der Server folgendes aus bei einem Anmeldeversuch mit dem Radio:

2026-04-12 16:48:50 [INFO] resonance.protocol.discovery: Jive device: 12:34:56:78:12:34
2026-04-12 16:48:50 [INFO] resonance.protocol.discovery: TLV Response to 192.168.74.69: sent IPAD, NAME, JSON, VERS, UUID
2026-04-12 16:48:50 [INFO] resonance.player.registry: Player unregistered: 00:04:20:2b:bf:ca
2026-04-12 16:48:50 [INFO] resonance.player.client: Disconnecting player Squeezebox Radio
2026-04-12 16:48:50 [INFO] resonance.protocol.slimproto: Connection closed: 192.168.74.69:57437
2026-04-12 16:48:50 [INFO] resonance.protocol.slimproto: New connection from 192.168.74.69:48996
2026-04-12 16:48:50 [INFO] resonance.protocol.slimproto: Player connected: 00:04:20:2b:bf:ca (CONTROLLER, rev 0)
2026-04-12 16:48:50 [INFO] resonance.player.registry: Player registered: 00:04:20:2b:bf:ca (Squeezebox Radio)
2026-04-12 16:48:50 [INFO] resonance.web.cometd: Status event for player 00:04:20:2b:bf:ca (state=playing) - scheduling debounced reexec in 0.3s
2026-04-12 16:48:50 [INFO] resonance.protocol.slimproto: SETD from 00:04:20:2b:bf:ca: player name changed 'Squeezebox Radio' -> 'Squeezebox Radio'
2026-04-12 16:48:51 [INFO] resonance.web.cometd: Reexec: no matching slim subscriptions for player 00:04:20:2b:bf:ca (clients: 2, total_subs: 4)
2026-04-12 16:48:51 [INFO] resonance.protocol.discovery: TLV Discovery request from 192.168.74.69:43216
2026-04-12 16:48:51 [INFO] resonance.protocol.discovery: TLV IPAD = 192.168.74.57

Hilft das irgendwie weiter?

Grundsätzlich noch ein paar Anmerkungen zur Resonance-UI-Seite:
  • die Suche findet Interpreten und Alben, aber keine einzelnen Titel
  • Alben und Interpreten kann ich nicht als Liste anzeigen, nur als Kacheln. Bei einer großen Anzahl Elemente würde man sich einen Scrollbalken und vielleicht Shortcuts zu Anfangsbuchstaben wünschen
  • in der Leiste links würde ich mir noch Genre und Year als Hauptkriterien wünschen, außerdem das Browsen direkt in der Datei-/Ordnerstruktur des Quellordners unabhängig vom Suchindex oder ID3-Tags
  • Playlists werden zwar angeboten, aber da ich in der Konfiguration den Ordner mit meinen Playlists nicht angeben kann, bleibt dieser Bereich immer leer
  • in der Album-Ansicht fehlt noch Album Art ;)
  • gibt es schon Pläne, das Synchronisieren mehrerer Geräte zu verwalten?
Das sind nur Wünsche, keine Kritik, das Projekt ist ja noch jung. Ich finde es ziemlich schick, vor allem angenehm schnell zu bedienen.
Antworten