To avoid more than nessesary repeated questions why you choose to create this new protocol instead of rewriting existing protocols (like Snapcast) suggest add a listing of key features to the readme, highlighting standout functions, and perhaps also current status of implementations with links(?):
Basis of discussion are this thread discussing Resonate protocol verses Snapcast and the Resonate synchronized audio component for ESPHome:
That is, I believe many more will ask why create a new "open standard" when there already are many competing stdnards -> https://xkcd.com/927/
Like I for one have a follow-up question if you have looked at architecture/structure/API, etc. of the "Matter Casting" (a.k.a. MatterCast) protocol? ...now that protocol specification only only has a video architecture/implementation, but I still think that it relevant since the Matter standard has such a huge public audience and large companies looking at it as a reference:
Resonate key features and functions
- Built from ground up to run on low-powered devices
- Designed from scratch to run on constraint platforms with limited resources (e.g. embedded devices based on ESP32 microcontrollers)
- Media controls
- Media control command ordering and queing
- Codec agnostic
- Will be able to change audio codecs on-the-fly
- Work with data encoded with different audio codecs
- Multi-room audio with Time Synchronization:
- Audio synchronizer employs a Kalman filter to model and compensate for internal clock drift between the client and server
- Dynamically tracks and adjusts for each device's clock characteristics to maintain tight synchronization
- In preliminary practical implementation testing this has shown to achieve a median audio synchronization error of approximately 50 microseconds between two ESP32-S3 devices connected over Wi-Fi.
- WebSocket API for bidirectional communication channel over TCP
- Based on WebSockets ensures it can travel across firewalls, reverse proxies and whatnot.
- mDNS
- mDNS automatic discovery of clients by resonate servers
- mDNS advertisement for the Resonate server
- mDNS automatic discovery of servers by resonate clients
- Metadata and artwork support:
- Supports sending text based metadata
- Can also send text without audio playback (e.g., enable clients to display track metadata on screens)
- Supports sending cover art images (i.e. album artworks)
- Extensible Design:
- Ready for future integrations, like example audio visualizations or song lyrics, and additional artist/song metadata
Resonate projects current status of implementations
- Compatible with the experimental Music Assistant server
resonate branch:
- Compatible with work-in-progress Resonate synchronized audio component for ESPHome
To avoid more than nessesary repeated questions why you choose to create this new protocol instead of rewriting existing protocols (like Snapcast) suggest add a listing of key features to the readme, highlighting standout functions, and perhaps also current status of implementations with links(?):
Basis of discussion are this thread discussing Resonate protocol verses Snapcast and the Resonate synchronized audio component for ESPHome:
resonate branchcurrent status -> https://github.com/music-assistant/server/tree/resonateThat is, I believe many more will ask why create a new "open standard" when there already are many competing stdnards -> https://xkcd.com/927/
Like I for one have a follow-up question if you have looked at architecture/structure/API, etc. of the "Matter Casting" (a.k.a. MatterCast) protocol? ...now that protocol specification only only has a video architecture/implementation, but I still think that it relevant since the Matter standard has such a huge public audience and large companies looking at it as a reference:
[Feature] Matter Casting support for "Audio Player Architecture" with a new "Casting Audio Player device type" and "Audio Player endpoint" ("Casting Audio Player" and adding "Basic Audio Player") + look into adding multi-room music streaming for "Matter Speakers"? project-chip/connectedhomeip#31389
Resonate key features and functions
Resonate projects current status of implementations
resonatebranch: