Mopidy snapcast mixer


#1

Hi there,

for everyone using mopidy in combination with snapcast (as I am doing), I’ve tried to programm a snapcast mixer to control snapcasts volumes directly by mopidy.

If you are keen, try it out: Mopidy snapcast extension

I’m happy to get some feedback. Moreover I hope to be soon able to work on the PyPI distribution…

Cheers,
Alex


#2

I’ve installed it using sudo python ./setup.py install as it wouldn’t work with pip, and made changes to mopidy.conf but I’m not sure what I should be seeing and how to use the snapcast extension.

BTW are you aware that Mopidy Iris is now available with built in Snapcast support.


#3

Dear Steve,

thanks for pointing out the pip problem - I’ve got to work in this.

With the extension added you shouldn’t see anything - however, if you configured your mixer as “snapcast”, you are now able to control the volume and it will automatically change the volume of all active unmuted snapcast clients which are connected to the mopidy stream.

As this is a mixer extension, it will work with all frontend extensions automatically.
This also includes websocket- oder mpd-based clients and makes a snapcast configuration usable with something like an increasing alarm clock etc…

Thank you for pointing out the Snapcast support of Iris. So far I’m quite interested in the implemention made to connect to snapcast (which seem very similar to the one I used - would have saved me some time knowing it…).

Cheers,
Alex


#4

Thanks Alex and Steve. I look forward to playing with this,


#5

Great addition. Thanks!

I just started to use it and it works like a charm.
As an issue/wish it would be nice if the mixer would also update the volume/mute state, and then generate events when the volume is changed through another snapcast client, such as the android app. I don’t know if snapcast API allows for this.

Looking forward for the updates, and thanks again.


#6

Thank you for the feedback.

The issue about direct snapcast volume changes is a valid point. The snapcast API is providing events for clients volume changes (and other things like client connecting etc) but so far I’m ignoring this in my extension.

The point is, that there is a snapcast control api for python - python-snapcast - which should also support this.
But… it’s using asyncio and therefor is only available for Python 3.

However if I find some time I might be able to look for a Python 2 solution which works in my extension.


#7

What’s the advantage of controlling the volume of Snapcast? I just leave it on full and use the Mopidy volume.


#8

@jjok: Might be no advantage at all for your use case. I like to control the snapcast clients volumes and also mute and unmute them. So I was looking for a transparent way of showing and changing the volume with mopidy, but without loosing the ability to change snapcast volumes directly. Using the software mixer works, sometimes but doesn’t show what’s really going on. This is why I came up with my solution.
And, moreover, it’s a nice way to show how fast you can write your one mopidy extension :wink:

@ismailof: I included your request in the 0.2 version which is on github right now. Happy to get some feedback :slight_smile:

Cheers,
Alex