ArturSierzant / OMPD

O!MPD is free, opensource MPD client based on PHP and mySQL.
http://ompd.pl
GNU General Public License v3.0
40 stars 13 forks source link

Enhancement: Snapcast support for multi-room environments #57

Open xkonni opened 6 years ago

xkonni commented 6 years ago

Using snapcast is the most efficient way of creating synchronized multi-room environments. But controlling it requires extra software.

Integrating it into ompd would be quite awesome and support the concept of having a single app/website to control the whole setup.

of course i'd help, if you're interested in the feature.

ArturSierzant commented 6 years ago

O!MPD already has similar feature: when you have defined more then one mpd server, you can synchronized playlists between mpds: playlist from source mpd is copied to another one and playback starts from current track and position in source mpd. However it's not so precise as snapcast...

I know that O!MPD doesn't support controlling all mpds at once (what is possible with snapcast: you change playlist/track in one [snapserver] mpd and all others play exactly the same), but I think this could be achieved in another way: one could define httpd audio output in mpd, select it in source mpd (using not implemented yet, but suggested by you in #55 feature for switching outputs) and then use feature like 'play to all' (or like now only to selected) to tell others mpds to play that stream. In this case changing playlist/track in 'source' mpd would be transferred to 'slaves' mpds.

I'm not sure if this could be possible at all, but I think that possibly yes.

Is this what you mean or rather not?

xkonni commented 6 years ago

Hey Artur,

yes I know that feature, but it still requires mpd with access to the music running on each device while snapcast just needs that client and playback is fully synchronized.

Additionally you can control all rooms from that single instance - while that can also be a con if you plan to play different music across your rooms when you would need multiple instances again. Yet they could all stream to snapcast and be controlled from ompd.

Currently I'm using an additional app i quickly made. It's nothing sophisticated, but it does the job: https://github.com/xkonni/snapcastr Having those features integrated into mpd client would be way more convenient!