[pulseaudio-discuss] Mute and unmute individual sinks in a module-combine

Colin Guthrie gmane at colin.guthr.ie
Sun Jun 28 15:03:36 PDT 2009


'Twas brillig, and Timothy J Massey at 28/06/09 22:09 did gyre and gimble:
> Hello!
> 
> Still working on my multi-zone setup.  The goal is to have multiple 
> instances of MPD playing, and being able to be routed to 0 or more zones 
> simultaneously.  Each player is connected to a unique sink created with 
> module-combine, with each of these combined sinks including *all* of the 
> physical sinks.  Something like this:
> 
> #Physical sinks for actual hardware
> load-module module-alsa-sink device=hw:1,0 sink_name=zone1
> load-module module-alsa-sink device=hw:2,0 sink_name=zone2 
> load-module module-alsa-sink device=hw:3,0 sink_name=zone3 
> #Module-combine sinks for handling each MPD
> load-module module-combine sink_name=mpdplayer1 slaves=zone1,zone2,zone3
> load-module module-combine sink_name=mpdplayer2 slaves=zone1,zone2,zone3
> load-module module-combine sink_name=mpdplayer3 slaves=zone1,zone2,zone3
> 
> For now, I have a single instance of MPD playing through sink mpdplayer1. 
> When I start up MPD and play something, I get audio out of all three 
> sinks.  So far, so good.
> 
> Now, though, I would like to mute the sound in all but one of the zones. I 
> can't simply do something like:
> 
> set-sink-mute zone2
> set-sink-mute zone3
> 
> Because that would mute the outputs for those zones, and they might be 
> (and likely are) playing music from one of the other MPD sessions.  What I 
> want to do is tell the module-combined sink (mpdplayer1) to only send 
> audio to one of the sinks and to mute the output to the other two sinks.
> 
> Is this possible?  I cant seem to find a way to interact with the 
> individual channels within a module-combine...

The only way I can think of to do this right now is to create nine 
remapped sinks of the real alsa sinks. one for each player instance in 
each zone.

So you'de have something like:
load-module module-remap-sink sink_name="mpdplayer1zone1" master="zone1"
load-module module-remap-sink sink_name="mpdplayer1zone2" master="zone2"
load-module module-remap-sink sink_name="mpdplayer1zone3" master="zone3"

load-module module-remap-sink sink_name="mpdplayer2zone1" master="zone1"
load-module module-remap-sink sink_name="mpdplayer2zone2" master="zone2"
load-module module-remap-sink sink_name="mpdplayer2zone3" master="zone3"

load-module module-remap-sink sink_name="mpdplayer3zone1" master="zone1"
load-module module-remap-sink sink_name="mpdplayer3zone2" master="zone2"
load-module module-remap-sink sink_name="mpdplayer3zone3" master="zone3"

load-module module-combine sink_name=mpdplayer1 
slaves=mpdplayer1zone1,mpdplayer1zone2,mpdplayer1zone3
load-module module-combine sink_name=mpdplayer2 
slaves=mpdplayer2zone1,mpdplayer2zone2,mpdplayer2zone3
load-module module-combine sink_name=mpdplayer3 
slaves=mpdplayer3zone1,mpdplayer3zone2,mpdplayer3zone3


This maybe a little crazy and I don't know how much load/interference 
this could cause.

But I guess you can then mute the remapped sink and get what you want. 
Only thing I don't know is if muting a remapped sink will just pass the 
mute signal along to the master sink in which case this will be kinda 
useless :s

Col

-- 

Colin Guthrie
gmane(at)colin.guthr.ie
http://colin.guthr.ie/

Day Job:
   Tribalogic Limited [http://www.tribalogic.net/]
Open Source:
   Mandriva Linux Contributor [http://www.mandriva.com/]
   PulseAudio Hacker [http://www.pulseaudio.org/]
   Trac Hacker [http://trac.edgewall.org/]




More information about the pulseaudio-discuss mailing list