Skip to content
Chris edited this page Jan 29, 2026 · 3 revisions

Sendspin SDK Documentation

Welcome to the Sendspin SDK documentation! This wiki teaches you how to build your own synchronized multi-room audio players using the Sendspin SDK.

NuGet

What is Sendspin?

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.).

Quick Links

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

Prerequisites

  • .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

Installation

dotnet add package Sendspin.SDK

Or via Package Manager:

Install-Package Sendspin.SDK

What You'll Build

By following this documentation, you'll create a player that:

  1. Discovers servers automatically via mDNS
  2. Connects to a Sendspin server
  3. Receives audio and plays it in sync with other players
  4. Handles metadata (track info, artwork)
  5. Sends commands (play, pause, next, volume)

Example Projects

Getting Help


Next: Getting Started - Install the SDK and make your first connection

Clone this wiki locally