sonn docs GitHub

using it

Content

Sources are configured under Content, and every source is available to every consumer of the server — the web player, Loxone, DLNA devices and Subsonic apps alike. Configure it once, reach it from everywhere.

Local library

  • Local folders and mounted network shares (SMB/CIFS)
  • Tag-based index (albums, artists, tracks, folders) in SQLite, with cover art
  • Artist pictures fetched automatically from MusicBrainz → Wikidata → Wikimedia Commons — no API key
  • Incremental indexing: a dropped or copied file is picked up on its own, without a full rescan
  • Browse, search and delete tracks from the Admin UI
  • Add music by drag-and-drop in the browser, or by mounting the folder as a network drive

Streaming services

Spotify, Apple Music, Tidal, Deezer, YouTube Music, YouTube, SoundCloud — and Music Assistant as a source, exposing its own providers.

Each configured account becomes its own browsable service, so several accounts of the same service can coexist. The Loxone integration presents non-Spotify services to the Miniserver as virtual Spotify accounts, since that is the only vocabulary the Loxone clients have for them; everywhere else they appear under their own name.

Radio

  • TuneIn — adding a TuneIn username exposes your personal presets, while search scans the full directory
  • Radio Paradise — curated, listener-supported streams (toggleable)
  • Custom streams you manage yourself, with your own cover art

Line-in

Play a turntable, CD player or any other analog or digital source through your zones, with optional Shazam track recognition. Play, pause and skip are forwarded to the device that owns the source — when that device can be driven over the network. B&O Masterlink can: a Beosound 9000 changes discs on command.

Line-in audio reaches the server one of two ways:

  • The Sendspin source role — a part of the Sendspin spec that sonn contributed: an endpoint can carry audio into the server as well as out of it, on a dedicated endpoint or riding along with a player. Sonn Client is this, installed with one command: the Pi next to the turntable offers its capture card here, reports the signal level so the server can tell that someone has started playing, and the same box can also play a room, take a phone over Bluetooth, or serve a Bang & Olufsen remote.
  • Manual ingest — for anything that can push a stream itself. Add the line-in under Content and it is given a WebSocket and a TCP address of its own; send PCM at either and it plays. Useful for a capture box that is already scripted, or for hardware that speaks neither Sendspin nor anything else.

A line-in is a source, not a room's property — any zone can select it, wherever the wire happens to reach.

Announcements & alerts

Text-to-speech and alert sounds play through any zone: the music ducks, the message plays, and the music returns. It is built for home automation and fully part of the API — one call from Home Assistant, Node-RED or a shell script announces in any room:

curl -X POST http://server:7090/api/v1/zones/3/announce -d '{"text":"Dinner!"}'
  • Text-to-speech, using the built-in engine or LoxBerry TTS over MQTT
  • Built-in alert sounds, and per-zone volumes for TTS, bell, alarm, fire and buzzer
  • Native Loxone alerts when the integration is on — bell, alarm, fire and TTS behave like the original