sonn GitHub

der offene audioserver

Ein Server. Jeder Raum. Deine Lautsprecher.

sonn sammelt deine Musik — lokale Bibliothek, Spotify, Apple Music, Tidal, Radio, sogar den Plattenspieler — und spielt sie synchron auf den Lautsprechern, die du schon besitzt, über fast jedes Protokoll, das sie sprechen. Oder lass die Räume ganz weg und stelle deine Inhalte jeder App im Haus bereit.

Loslegen

open source apache-2.0 self-hosted 4.0 beta

ein server, zwei gestalten

Content-Server oder Ganzhaus-System. Oder beides.

Eine frische Installation startet ohne Zonen und ohne Freigaben. Was du einschaltest, bestimmt, was daraus wird — und du kannst es später ändern, ohne von vorn anzufangen.

01 / nur inhalte

Deine Musik für alles bereitstellen

Richte deine Bibliothek, Streaming-Konten und Radio auf sonn, schalte ein, wie du sie erreichen willst — und jede App und jedes Gerät im Haus kann stöbern und abspielen. Keine Räume zu konfigurieren, nichts pro Gerät zu verwalten.

  • DLNA / UPnP MediaServer — Smart-TVs, Receiver, Netzwerklautsprecher
  • Subsonic API — Symfonium, Amperfy, DSub und Co.
  • Netzlaufwerk (WebDAV) — Alben per Finder oder Explorer hineinziehen
  • Eingebauter Web-Player, aus jedem Browser im Netzwerk

Streamingdienste inklusive — auf Geräten, die selbst keinerlei Unterstützung dafür haben. Ein DLNA-TV hat keine Apple Music- oder Tidal-App und stöbert trotzdem vom Sofa aus durch deine Konten, weil sonn sie wie jeden anderen Inhalt bereitstellt.

02 / multiroom

Oder übernimm die Räume selbst

Lege feste Zonen an — bis zu 24, eine pro Raum — und sonn steuert die Lautsprecher direkt: benannte Räume, synchrone Gruppen, ein Ort für das ganze Haus.

  • Zentrale Steuerung über Web-Player, Admin-UI oder eine Loxone-App
  • Beliebige Räume perfekt synchron gruppieren
  • Equalizer, Lautstärkegrenzen, Favoriten und Verlauf pro Zone
  • Verstärker schalten über GPIO oder USB-Relais, pro Zone oder geteilt

Mit aktivierter Loxone-Integration liefert der Miniserver die Zonen — sonn verhält sich wie ein vollwertiger Loxone Audioserver.

der signalweg

Deine Datei, unverändert, am Lautsprecher.

sonn ist um eine Idee gebaut: Das Audio, das deine Bibliothek verlässt, soll den Player exakt so erreichen, wie es aufgenommen wurde. Jede Stufe, die es berühren könnte, ist pro Zone sichtbar — und der Server führt keine davon aus, solange nichts ihn dazu zwingt. Probier es aus:

quelle

ausgang

verarbeitung

quelle

Bibliothek

FLAC · 24-bit / 192 kHz

resampler

SoX · 28-bit

bypassed

equalizer

10-Band

bypassed

lautstärke

Auf dem Gerät

nie im Stream

sendspin

USB-DAC

24-bit / 192 kHz

bit-perfect

Sendspin handelt das Format pro Titel aus, also folgt der Server der Quelle: Die Samples der Datei selbst reisen übers Netzwerk, und der DAC taktet sie mit der Rate, mit der sie aufgenommen wurden. Nichts in der Kette hat ein Mitspracherecht.

Der Web-Player zeigt diese technische Ansicht für jede Zone, live: das Quellformat, jede Stufe, die das Audio berührt hat, und das Urteil. Bit-perfect, untouched oder altered — mit Begründung. Und wenn du einfach nur Musik willst: Nimm den Ausgang, den du schon hast. Alles funktioniert, alles klingt gut, und nichts davon verlangt einen Gedanken an Sampleraten.

inhalte

Alles, was du hörst, an einem Ort.

Jede Quelle steht jedem Konsumenten des Servers zur Verfügung — dem Web-Player, Loxone, DLNA-Geräten und Subsonic-Apps gleichermaßen. Einmal einrichten, von überall erreichen.

Lokale Bibliothek

Ordner und Netzwerkfreigaben, per Tags indexiert zu Alben, Künstlern und Titeln — mit Cover-Art und automatisch geladenen Künstlerbildern.

  • Inkrementeller Index — eine abgelegte Datei taucht einfach auf
  • Musik per Drag-and-drop hinzufügen, oder übers Netzlaufwerk
  • Stöbern, suchen und verwalten in der Admin-UI

Streamingdienste

Spotify, Apple Music, Tidal, Deezer, YouTube Music, YouTube, SoundCloud — und Music Assistant als Quelle, mit seinen eigenen Anbietern.

  • Mehrere Konten desselben Dienstes können koexistieren
  • Jedes Konto ist ein eigener, durchsuchbarer Dienst
  • Weitergereicht an Loxone, DLNA und Subsonic

Radio

Das TuneIn-Verzeichnis, Radio Paradise und deine eigenen Streams — mit Artwork, durch jede Zone und jede App im Haus.

  • TuneIn-Presets, und Suche durchs komplette Verzeichnis
  • Eigene Streams, mit eigenem Cover
  • TTS und Hinweistöne, Loxone-nativ wenn gekoppelt

Line-in

Plattenspieler oder CD-Player, durch jede Zone — eingefangen von der Line-in-Bridge oder von Sendspins Source-Rolle: auf einem eigenen Endpoint, oder huckepack bei einem Player.

  • Optionale Shazam-Titelerkennung
  • Play, Pause und Skip gehen ans Gerät weiter — wenn es sich übers Netzwerk steuern lässt
  • B&O Masterlink erlaubt volle Kontrolle — Play, Pause, Vor, Zurück, und eine Beosound 9000 wechselt auf Kommando sogar die Disc

der web-player

Das ganze Haus, aus jedem Browser.

Der Server liefert seinen eigenen Player aus — öffne :7090 auf dem Handy, dem Laptop oder dem Wandpanel, und jeder Raum ist da. Nichts zu installieren, nichts zu aktualisieren, und er kann nie veralten: Er kommt aus derselben Kiste, die die Musik spielt.

Alles auf einmal durchsuchen
Eine Suche über deine Bibliothek und jeden verbundenen Dienst, sortiert nach Art. Finde einen Titel, tippe ihn an, und er spielt im ausgewählten Raum.
Favoriten aus jeder Zeile
Ein Stern sitzt an allem, was spielen kann — Browsing-Ergebnisse, Suchtreffer, Warteschlange, Verlauf — und legt es in die Favoriten der Zone: dieselben, durch die ein Loxone-Wandtaster oder eine Beoremote schaltet.
Warteschlange, Gruppen und ein 10-Band-EQ
Sortiere um, was als nächstes spielt, hole Räume mitten im Song in eine Gruppe, forme eine Zone mit ihrem eigenen Equalizer — und sieh das echte Streamformat jedes Raums, bis hin zum bit-perfect-Urteil.
Immer einer Meinung
Zwei Handys, das Wandpanel und die Loxone-App zeigen denselben Zustand, live — nichts pollt, und eine Änderung von irgendwo erscheint überall.
Der sonn Web-Player auf einem Handy, mit That Thing You Do von Ellem im Wohnzimmer
player · wohnzimmer · :7090

zonen & ausgänge

Die Lautsprecher, die du schon besitzt, sind das System.

Eine Zone ist ein Gerät in einem Raum. sonn spricht mit fast allem, was Klang erzeugen kann — und eine Zone kann auch empfangen: Richte AirPlay oder Spotify Connect auf einen alten Verstärker, und es funktioniert einfach.

schlafzimmer leerlauf · amp aus arbeitszimmer vinyl · line-in bad airplay-empfänger wohnzimmer sendspin · 24/96 küche chromecast gruppiert · synchron sonn core max. 24 zonen · :7090
ein server im keller, jeder raum synchron
SP Sendspin
CC Chromecastgoogle & nest
SN Sonoslautsprecher & amps
AP AirPlayhomepod & avrs
DL DLNA / UPnPtvs & receiver
SC Snapcastraspberry pi
SQ Squeezelitesqueezebox
MA Music Assistantalle seine player
Empfänger
Ein Empfänger lässt ein Telefon oder eine App in eine Zone spielen: Der Stream landet auf dem Server, der ihn an den Ausgang der Zone weiterreicht. Ein Paar Snapcast-Lautsprecher am Raspberry Pi erscheint als AirPlay-Ziel, ganz ohne eigene Unterstützung — und eine Zone kann sie alle gleichzeitig anbieten. spotify connect airplay dlna line-in music assistant
Gruppieren
Beliebige Räume spielen synchron, jederzeit umgruppierbar. Die Küche kommt zum Abendessen zur Terrasse dazu und verlässt sie danach wieder — aus der App, vom Wandpanel oder per Loxone-Szene.
Verstärker schalten
Eine Zone kann ihren Verstärker vor dem ersten Ton wecken und nach der Musik wieder abschalten — GPIO oder USB-Relais, pro Zone oder pro geteilter Verstärkergruppe, mit Vor- und Nachlaufzeiten, damit kurze Pausen die Hardware nie takten.
Dieser Browser ist ein Raum
Der Web-Player meldet sich selbst als lokales Ziel an: auswählen, abspielen, und es spielt hier — gesteuert mit exakt denselben Reglern wie die Hardware-Zonen.

beoremote one

Bidirektionale Steuerung mit der Beoremote One.

Radiosender und Raum-Favoriten erscheinen direkt als abspielbare Einträge auf dem Display der Fernbedienung — der Server baut die Liste, die Remote spielt daraus. Jede Farb- und Punkttaste startet etwas im Raum, und Play, Pause und Skip erreichen, was gerade spielt, auch ein steuerbares Line-in-Gerät.

Die Lautstärke bleibt auf dem Gerät selbst und funktioniert damit auch, wenn der Server kurz nicht erreichbar ist. Die Fernbedienung koppelt sich per Bluetooth mit einem kleinen Helfer, der ihre Tastendrücke weiterreicht; läuft er einmal, wählst du nur noch, welche Remote zu welcher Zone gehört.

Eine Bang & Olufsen Beoremote One, nah: Das Display listet die Quellen
beoremote one — die liste darauf kommt vom server
Der Zones-Bildschirm der sonn Admin-UI: vier Zonen namens Living room, Kitchen, Study und Bedroom, jede mit AirPlay-, Spotify-Connect- und DLNA-Empfänger-Chips
zonen — eine pro raum, empfänger an jeder

loxone

Ein vollwertiger Loxone Audioserver.

Kein Add-on, das mit Loxone redet — eine vollständige Audioserver-Implementierung. Kopple sie mit einem Miniserver und sie verhält sich wie das Original: Zonen, Quellen, Favoriten, Alarme und die native Loxone-App, mit bis zu 24 Zonen — derselben Obergrenze wie beim Original.

  1. Wähle unter Zonen Loxone integriert — der Server hört sofort zu.
  2. Lege den Audioserver in Loxone Config an, mit Seriennummer und Host aus der Admin-UI.
  3. Speichern und Miniserver neu starten. Das Symbol wird grün, und deine Zonen kommen an.

Nicht-Spotify-Dienste werden dem Miniserver als virtuelle Spotify-Konten präsentiert — das einzige Vokabular, das Loxone-Clients dafür haben. Überall sonst behalten sie ihren eigenen Namen. Trennen wirkt ohne Neustart, und deine eigenen Zonen kehren zurück.

home assistant & deine eigenen tools

Und es versteht sich mit dem Rest des Hauses.

Eine optionale MQTT-Schnittstelle veröffentlicht jede Zone als retained Topics — ganze Objekte als JSON, einzelne Felder als schlichte Werte — sodass Home Assistant, Node-RED oder ein KNX-Gateway sie ganz ohne Code konsumieren. Steuern geht genauso: Wert publizieren, fertig.

# zustand, retained — spät verbinden, alles sehen
sonn/zones/3                {"name":"Küche","state":"playing",…}
sonn/zones/3/state          playing
sonn/zones/3/track/title    Song

# steuern — ein wert, oder ein relativer schubs
mosquitto_pub -t 'sonn/zones/3/set/volume' -m '+5'
mosquitto_pub -t 'sonn/zones/3/cmd' -m '{"power":"on","volume":40}'
Eine native Home-Assistant-Integration steht auf der Roadmap. Heute spricht HA bereits über MQTT und die HTTP-API mit sonn — die native Komponente macht daraus einen Klick.

für entwickler

Eine API, in der curl ein vollwertiger Client ist.

Befehle sind schlichtes HTTP, und Zustand lesen heißt nie pollen: Abonniere den Event-Stream einmal und du erfährst jede Änderung. Kein Handshake, keine Correlation-IDs, kein SDK zu installieren — ein Shell-Skript mit fünf Zeilen ist eine vollständige Integration.

# Was spielt gerade, überall?
curl http://server:7090/api/v1/zones

{
  "id": 3,
  "name": "Küche",
  "state": "playing",
  "track": { "title": "Song", "artist": "Artist", "coverUrl": "…" },
  "output": { "protocol": "sendspin", "format": { "sampleRate": 192000, "bitDepth": 24 } }
}

Offen by design

Apache-2.0, auf GitHub. Die öffentliche API ist bis aufs Feld dokumentiert, und der Web-Player ist auf ihr gebaut und auf nichts sonst — trägt der Vertrag keinen echten Player, ist das ein Bug.

Events statt Polling

Zwei Tabs, ein Wandpanel und die Loxone-App sind sich einig, weil alle dasselbe zone.changed rendern. Eine Änderung von woanders erscheint hier — ohne eine Zeile eigenen Code.

MQTT dazu

Derselbe Zustand, zweite Schnittstelle: retained Topics, die ein Miniserver oder ein KNX-Gateway ohne JSON-Parser lesen kann. Beide laufen gleichzeitig und können sich nicht widersprechen — sie publizieren aus derselben Quelle.

loslegen

Läuft, bevor der Kaffee durch ist.

Ein Container, Host-Networking, damit er deine Lautsprecher findet, ein Ordner, der alles enthält. Sichere den Ordner, und du hast die Installation gesichert.

quick start
# eine datei, ein befehl — die compose-datei liegt im repo
curl -LO https://raw.githubusercontent.com/sonn-audio/core/main/docker-compose.yml
docker compose up -d

Öffne dann http://<server-ip>:7090, lege dein Admin-Konto an und geh die drei Schritte: Inhalte — füge deine Musik hinzu. Zugriff — schalte ein, wie du sie erreichst. Zonen — nur wenn du Räume willst. Schritt eins und zwei sind bereits ein funktionierender Audioserver.

port trägt wann
7090 Admin-UI, Web-Player, API, Subsonic, WebDAV, DLNA, Audiostreams immer
7091 Natives Loxone-App-Protokoll loxone an
7095 Loxone-Miniserver-Protokoll loxone an
Lieber ohne Docker? Läuft direkt auf Node.js 20+ — klonen, npm install, npm run build, npm start.

open source · self-hosted · deins

Deine Musik verdient einen Server wie diesen.

Kein Abo, keine Cloud-Abhängigkeit, keine Lautsprecher zu ersetzen. Alles läuft in deinem eigenen Netzwerk — zieh das Internetkabel, und deine Bibliothek spielt weiter.