raptorious
New Member
- Joined
- Feb 23, 2022
- Messages
- 2
- Likes
- 0
While building my networked, multi-room home audio system, one of the annoyances/frustrations I've had is that there is no single good way to take the audio from a given device and stream it to a multi-room audio set up. Airplay works great for iPhones, iPads, and Macbooks, but it is weakly supported at best on Windows, Linux, and Android. Snapcast generally works well, but there is no easy way to create a stream from the "system audio" of an Android or iPhone and pipe it through the snapcast server to the desired snapcast clients.
I've come up with a combined HW/SW solution to this problem in my head, but before I embark deeper into the process of making it a reality, I was hoping to see if this is something that other people struggle with/find frustrating as well.
The basic concept is thus:
I've come up with a combined HW/SW solution to this problem in my head, but before I embark deeper into the process of making it a reality, I was hoping to see if this is something that other people struggle with/find frustrating as well.
The basic concept is thus:
- A small dongle based upon an embedded linux system that implements a UAC gadget. Instead of sending the PCM data to a DAC, the embedded computer packetizes the data (and maybe compresses it with FLAC) and sends it over ethernet or wifi, such that it can be consumed as a snapcast stream (https://github.com/badaix/snapcast)
- The beauty of this solution is that it can extract a lossless, high sample rate, high bit rate audio stream from pretty much any device (Windows, Linux, MacOS, iPhone, iPad, Android) and stream it over the network
- Making it small enough that it isn't a pain to use with smaller devices like smartphones. Yeah, I know, dongles + phones = yuck, but then I've seen lots of audiophile types go to _insane_ lengths to stream truly lossless, high definition audio from their phone to their home audio system, so it doesn't seem like this would really be breaking with expectations of such a system that much
- Power. Something like a raspberry pi zero is low power, but it almost certainly won't work off "bus power" when connected to a smartphone. Ideally, it would be possible to find a more purpose-specific IC that is designed to fit within "bus power" so that it isn't necessary to connect the dongle to the phone and to a power cable.
- Snapcast currently doesn't have the ability to dynamically add streams to a snapcast server, though it is on the roadmap. It would kind of destroy the usability if you had to manually configure the stream on the server before being able to "cast" your audio. Ideally, it would be possible for streams to be discoverable (through mDNS) by the server and they would just automagically show up, such that one could say "ok play this stream on this set of speakers"
- There are other usability hurdles to overcome as well. Having used airplay 2 on iOS devices, it sure is nice to be able to select the set of "sinks" right there on the iDevice at the very moment where you decide "hey, I want to play this somewhere else." Having the extra step of, for example, pulling up a web page to do the routing is a rather annoying extra step. Ideally, there would be some minimal UI on the dongle, such that the dongle would be aware of the available snapcast clients and with something like a click wheel, one could select the desired set of clients to which the stream should be cast.