'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/]