New experimental "Resonate protocol" for streaming synchronized multi-room audio and HiFi music playback to multiple media player appliances and smart speakers running ESPHome on ESP32 or Linux on Raspberry Pi (Zero) #4200
Replies: 3 comments 6 replies
-
A few questions come to mind: What is the audio quality of this new protocol? Does it support high resolution audio? Does it use lossless encoding? Does it support clients other than ESP32 based microcontrollers? |
Beta Was this translation helpful? Give feedback.
-
@marcelveldt do you also plan to make a default/reference "Resonate Media Player" client for Linux-based running on Raspberry Pi hardware? Perhaps even a complete "Hi-Fi" media player client Linux distribution (based HAOS/HassOS if not LibreELEC OS or similar JeOS Linux distro)? That is, as there is no guarantee that third-party media players will adopt/implement support for this Resonate protocol I was wondering it the Open Home Foundation plan to make a reference media player software application for Linux that support Resonate protocol on Raspberry Pi? Asking since Raspberry Pi running Linux is today probably the most popular platform for DIY line-out WiFi client solution for multi-room audio. Suggesting a stand-alone all-in-one music player component package for Linux to make it simple to setup a Resonate client media player and achieve audio synchronized playback that more or less matches what kahrendt is developing for ESPHome here, (but for Raspberry Pi instead): Example a Raspberry Pi with either HiFi DAC + Amplifier hardware HATs or a USB Audio Device Interface adapter for audio output like these:
PS: FYI, indirectly related is that synesthesiam begun working on a Linux-based Voice Satellite for Home Assistant using the ESPHome protocol (i.e. porting ESPHome to Linux) as the successor/replacement for Rhasspy's Wyoming Satellite remote voice satellites on Raspberry Pi hardware: Quoting synesthesiam comment/reply on that Reddit:
|
Beta Was this translation helpful? Give feedback.
-
@maximmaxim345 have you by the way looked at Matter Casting APIs & architecture to see if it has any good concepts that can be borrowed?
PS: One major limitation is the the current Matter Casting specification is that they are still missing support for the audio-only part of its architecture as their casting technology focus so far has just been on video streaming and this there is not yet any audio-only APIs or examples for smart-speakers or music-recievers, but I understand that some Connectivity Standards Alliance members have started to look at that now: |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Not sure if this will be usable on all ESPHome based audio output/input devices running on ESP32 (i.e. voice assistants, media player, and smart speaker hardware), but FYI, I heard it sounds like (pun intended) some Open Home Foundation and Music Assistant developers have started working on a new experimental open-source Hi-Fi audio streaming protocol for a better multi-room audio and music playback experience on embedded hardware running ESPHome-based client on ESP32 as well as Linux-based client on the roadmap for Raspberry Pi (Zero):
This new protocol specification is design from scratch but is similar to Squeezelite and Snapcast as well as Music Player Daemon (MPD) in concept at a high level, Resonate is not a stand-alone player, but an extension that can turn an existing audio player into a Sonos-like multiroom audio solution with time synchronized between the clients and the server to play perfectly synced audio. In their own tests they claim to see that average time deviation is below 0.05ms for synced audio (50 microseconds between two ESP32-S3 devices running ESPHome and connected over WiFi). Think of it like a completly royalty-free and open-source competition to Apple AirPlay (formerly AirTunes) and Google Cast (Chromecast Audio) propriatory protocols but for implementing HiFi multi-room audio solutions.
“Resonate is a multi-room music experience protocol. The goal of the protocol is to orchestrate all devices that make up the music listening experience. This includes outputting audio on multiple speakers simultaneously, screens and lights visualizing the audio or album art, and wall tablets providing media controls.” “Definitions; Server, a Resonate server. Orchestrates all devices. Generates an audio stream, manages all the players, provides metadata etc… Player, a Resonate client that can play audio, visualize audio or album art or provide music controls”.
Music Assistant lead developer posted a reply in their discussion section answering the question why they choose to not just use Snapcast:
With this new "Resonate" protocol the Music Assistant client/server and ESPHome will also get a new experimental audio player component that adds support for the this "Resonate Protocol" for synchronized music-playback across multiple devices, (i.e. audio synchronizer between ESPHome-based to enable sound-sync timing for DIY multi-room audio players), as well as ability to also switch codecs on-the-fly.
For a WIP reference implementation of a server using their aioresonate (Async Python library see how it is implemented in Music Assistant:
Implementation Details:
Time Synchronization:
Architecture:
mDNS:
External Dependencies:
Testing:
Currently compatible with:
Example entry for config.yaml:
Current Status:
resonate
branchFuture Work:
There was some discussions + further explainations on its concept in a other thead that asked about this new multi-room streaming protocol:
Originally posted by @marcelveldt in #3883 (comment)
If I understand correctly this new Resonate synchronized audio component will add a flexible hub architecture for audio time synchronization
This could solve the problem that you normally need more expensive hardware solution if you want to add multi-room audio to existing speakers, as once this is implemented fully you could have almost perfect multi-room audio syncronization using something like the Home Assistant Voice Preview Edition connecte to external speakers using its stereo output jack:
But a more relevant follow-up feature request for Music Assistant when this implemented would be if could add support for different types of multi-room audio, (to have options for single source-single zone, single source-multiple zone, or multiple source-multiple zone playback)?
Ongoing discussion about this new experimental Resonate audio component is going on in this Discord channel here:
Btw, looking at the commit history it seems like "Resonate" used to previously be refered to as "improv-audio" internally by its developers:
PS: Somewhat ironically the Open Home Foundation recenrly posted a newsletter blog post titiled "" and then they choose to use xkcd's "standards" classic XKCD comic strip on how standards proliferate as their tumbnail for the Resonate organization on GitHub, however with the Open Home Foundation, Home Assistant , Music Assistant, and Nabu Casa founder backing this they probably have the influence to at least convince many open-source based media layer implementations to also add support for this new protocol:
Beta Was this translation helpful? Give feedback.
All reactions