Skip to content

Sendspin/sendspin-cpp

Repository files navigation

sendspin-cpp

CI Component Registry

Standalone C++ library implementing the Sendspin synchronized audio streaming protocol. Builds on both ESP-IDF (ESP32) and host platforms (macOS/Linux). Designed to be consumed by ESPHome but has no ESPHome dependencies.

A project from the Open Home Foundation

Features

  • Modular Sendspin role composition: artwork, controller, metadata, player, and visualizer
  • WebSocket client and server support
  • Decodes FLAC, Opus, and PCM
  • Cross-platform: ESP-IDF (ESP32) and host (macOS/Linux)

Documentation

  • Integration Guide -- How to integrate sendspin-cpp into your application, including required callbacks, role composition, and platform setup
  • Internals -- Internal architecture, threading model, and inter-class communication

Build

Host (macOS/Linux)

cmake -B build
cmake --build build

Dependencies (fetched automatically via CMake FetchContent): ArduinoJson, micro-flac, micro-opus, IXWebSocket.

ESP-IDF

Available on the ESP-IDF Component Registry. Add to your project's idf_component.yml:

dependencies:
  sendspin/sendspin-cpp: ">=0.1.2"

Requires ESP-IDF v5.1 or later.

Examples

  • examples/basic_client/ -- Standalone host example with PortAudio audio output
  • examples/tui_client/ -- Terminal UI host example with PortAudio audio output

License

Apache 2.0

About

Sendspin client library built with C++. Suitable for host machines and embedded hardware.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors