Sendspin support (synchronized playback from Home Assistant)

  • Sendspin is an open standard by the Open Home Foundation for a synchronized music experience across multiple devices and rooms.

    Integrating sendspin, would enable LibreELEC devices to play synchronized audio, e.g. from MusicAssistant.

    There might be two ways to integrate sendspin:

    • Implemented in Kodi
    • As standalone service in LibreELEC (this feature request)


    Implementation: Like snapclient, we could use this existing sensdspin implementation and run it as LibreELEC service.
    Running the sendspin-cli daemon will announce this devices via mDNS in the network. Thus, LibreELEC could easily be picked as a synchronized speaker, e.g. by MusicAssistant or Home Assistant.


    Sendspin CLI: https://github.com/Sendspin/sends…n-systemd-linux

    References:

    Sendspin: Music Experience Protocol
    Open protocol for synchronized music experiences across devices.
    www.sendspin-audio.com
    Code – Sendspin
    SDKs, libraries, and code samples for Sendspin.
    www.sendspin-audio.com


    Note: libportaudio2 is required by sendspin-cli

  • It would be better done in Kodi so that the feature is available to all Kodi platforms.

    Agreed, but as a user I must say it feels like I have more of a chance to see a change happen in LibreElec than in Kodi. I may be wrong (I'd like to be wrong!)

  • In LibreELEC once Kodi runs it opens/owns the alsa sink preventing anything else from using it, so audio MUST go through Kodi to reach the audio hardware; ergo Kodi is the only place to implement something. General purpose desktop distros will be different because they typically implement some other layer, e.g. PulseAudio or PipeWire, and Kodi runs audio through them, so Sendspin integrates there to reach the hardware. LE can also use them, but PulseAudio has rather limited support for pass-through audio (a popular feature with users) and PipeWire either has similar limitations and/or isn't so well supported once you move away from the x86_64 hardware (me is forgetting which) so there's always a compromise and hence we don't use them by default.