-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Chris edited this page Jan 29, 2026
·
3 revisions
Welcome to the Sendspin SDK documentation! This wiki teaches you how to build your own synchronized multi-room audio players using the Sendspin SDK.
Sendspin is a protocol for synchronized multi-room audio playback. Multiple Sendspin players can play the same audio stream in perfect sync across your network, with sub-millisecond accuracy using Kalman filter clock synchronization.
The Sendspin SDK is a cross-platform .NET library that handles:
- Protocol communication (WebSocket)
- Clock synchronization (Kalman filter)
- Audio decoding (Opus, FLAC, PCM)
- Audio buffering with sync error reporting
- Server discovery (mDNS)
You provide the audio output for your platform (WASAPI, ALSA, CoreAudio, etc.).
| Page | Description |
|---|---|
| Getting Started | Install the SDK and connect to a server in 5 minutes |
| Building a Minimal Player | Complete tutorial with working code |
| Architecture | Understand how the SDK components work together |
| API Reference | Quick reference for key interfaces |
- .NET 8.0 or .NET 10.0 SDK
- A Sendspin-compatible server (e.g., Music Assistant with Sendspin provider)
- An audio output library for your platform:
- Windows: NAudio with WASAPI
- Linux: PulseAudio, PipeWire, ALSA, or OpenAL
- macOS: AVAudioEngine or AudioToolbox
- Cross-platform: SDL2
dotnet add package Sendspin.SDKOr via Package Manager:
Install-Package Sendspin.SDKBy following this documentation, you'll create a player that:
- Discovers servers automatically via mDNS
- Connects to a Sendspin server
- Receives audio and plays it in sync with other players
- Handles metadata (track info, artwork)
- Sends commands (play, pause, next, volume)
- SDK Example - Minimal example app (start here!)
- Windows Client - Complete WPF implementation using NAudio/WASAPI
- Python CLI - Reference implementation (protocol reference)
- GitHub Issues: chrisuthe/windowsSpin/issues
- NuGet Package: nuget.org/packages/Sendspin.SDK
Next: Getting Started - Install the SDK and make your first connection