Skip to content

Add a "Source Role" for audio input devices so hardware can have Line-Level Audio input and can act as a Sendspin audio source? #14

@Hedda

Description

@Hedda

I have an idea for a different kind of softwate/hardware product based on Sendspin (formerly known as "Resonate") at its core that create a other type of use case than what is currently described in the README.md today.

The use case is be to be able to create embedded appliance products (e.g. ESPHome-based) with Sendspin that act as Line-Level Audio analogue-input source (and "ADC" Analog-to-Digital-Converter + audio encoder) for local-network multi-room music streaming to other clients.

alextrical was so kind kind to mock up this proof-of-concept PCB as a possible hardware development kit for this use case:

Example use-case and flow-chart:

  • Turntable LP-Player -> Preamplifier -> ESP32 with I2S line level ADC -> WiFi -> Music Assistant -> Smart Speakers / Smart Receiver with WiFi.

That is, what we would like to be able to achieve is to have ESPHome-based that can stream audio to act as streaming source for other clients, meaning it possible needs to act as a Sendspinserver if Sendspin client can not be the source of an audio stream.

There is a related discussion about his specific POC-hardware here:

Image

Additional required hardware components for a such POC analog-input development board will be:

The main goal is to enable inexpensive ESPHome-based Line-Level Audio ADC analogue-input that can stream the audio to Sendspin clients.

More optimal would be if the ESPHome-based device could act as both as a Sendspin audio stream source for input and as a client for output. So would be great if could have an ESPHome based device that can both stream from line-level input as well to other clients as well as alao act as a Sendspin client itself, as well as maybe even have option to act as a pass-through appliance too (i.e. have line-level output as well to speakers), all in a single device.

I've previously described these use case scenarios in this Music Assistant discussion thread which goes into more details in regards to the use cases:

Architecture example:

  • Analog audio source with preamp -> ADC network appliance with Sendspin client or server as source -> audio stream -> Music Assistant -> Sendspin clients.

This "AUX line-in" feature request is by the way a feature that Sonos offers on some of their products, either built-in or via a line-in adapter:

https://support.sonos.com/en-us/article/use-line-in-on-sonos

https://www.sonos.com/en-us/shop/sonos-line-in-adapter

https://support.sonos.com/en-us/article/adjust-line-in-settings

Adapter can be used with different speakers but Sonos also has a dedicated "Sonos Port" Network Audio Streamer product with this feature:

https://www.sonos.com/en-us/shop/port

Image

So enabling ESPHome-based Line-Level Analog Audio to Digital Converter Streaming appliances would fill a void in the market where you normally you have to use an expensive propriatory Hi-Fi music streamer ecosystem to achive this

There are also some mid-range products from WiiM that have this feature, like the WiiM Ultra, WiiM Pro Plus, WiiM Amp, and WiiM Amp Pro use the propriatary "Linkplay" streaming technology that enable analog and digital audio input ports, but practially all of them will only stream within their own ecosystem so you need to buy both music streamers and stream receivers from the same brand for all your speakers to make them compatible.

https://www.wiimhome.com/wiimultra/overview

Image

WiiM products as an exaple only support streaming the input from the analog ports to other WiiM products using their proprietary streaming called "Linkplay Music Streaming Platform" which they got from their parent company. And I believe Linkplay streaming part has a similar concept to Sonos in the way that they do not support streaming it to other ecosystems(?).

Image

So would it maybe be possible for either a Sendspin Client to also generate audio stream or for a Sendspin Server to run on embedded hardware too?

Or are there other ideas on how to best solve this use case with the Sendspin Protocol and ESPHome based devices?

PS: For use case reference, I have personally previously used the ”Vinyl Cast” app on an Android phone/tablet (with analog input and ADC via a USB Audio Device) for casting to Chromecast Audio using Google Cast which was user-friendly but it was very buggy as ”Vinyl Cast” app the kept crashing + aesthetically the solution as a whole was not WAF approved + it kind of ruined the nostalgic retro vibe having to use the interface of Android phone/tablet each time, (nice with it though was that at least the initial release of the Vinyl Cast app included using Audio ACR to detect the song being played, but unfortunately this feature relied on a now discontinued third-party library/service so the feature was removed.)

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions