-
Notifications
You must be signed in to change notification settings - Fork 6
Description
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:
- https://github.com/orgs/music-assistant/discussions/3883
- WIP: Resonate synchronized audio component esphome/esphome#10183
- as well as the Music Assistant Server
resonate branchcurrent status -> https://github.com/music-assistant/server/tree/resonate
- as well as the Music Assistant Server
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.
- Dynamically tracks and adjusts for each device's clock characteristics to maintain tight synchronization
- Audio synchronizer employs a Kalman filter to model and compensate for internal clock drift between the client and server
- 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
- mDNS automatic discovery of clients by resonate servers
- 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)
- Supports sending text based metadata
- 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
resonatebranch: - Compatible with work-in-progress Resonate synchronized audio component for ESPHome