I have a server with 3 soundcards in. Each card is (or at least will be)
wired to a different room in my house. I want to be able to have N playback
streams playing independently (where for sanity N <= 3) and be able to choose
which rooms each stream plays in.
I could have one stream in every room, or a different stream in each room. I
want to be able to switch this configuration dynamically during playback
without interruption (ie, so that music can 'follow you' through the house).
I thought that to achieve this I would set up a series of ALSA plugins
something like this diagram (best viewed in fixed font):
Playback Streams (N=2): P1 P2
v v
| |
Share Plugin (dshare?): S1 S2
__/ | \__ __/ | \__
/ | \ / | \
Volume (softvol?): V1,1 V1,2 V1,3 V2,1 V2,2 V2,3
| \__ \ __/ _/ |
| ____\___/ \____/___ |
| ___/ \__ _/ \___ |
|/ \/ \|
Mixer (dmix?): M1 M2 M3
| | |
v v v
Output: hw:0 hw:1 hw:2
Now firstly, if there's a better way to do this (Jack for example) then fine,
this is only a guess on my part.
Secondly, the main stumbling block I have hit so far is that softvol won't
initialise unless I give it a card number to bind with. This kind of doesn't
make sense to me.
I appreciate that amixer needs a device to find the volume control on, but I
also don't have a 1 to 1 relationship between volume controls and the number
of devices.
When I have tried setting up a test softvol instance, it sort of works, in
that the control is visible on the device, but it shows its limits as "0 - 0"
and won't left me modify it in any way.
I think that I've probably misunderstood the role that softvol plays, but
given that there's hardly any documentation on it, I just can't be sure.
If anyone has a sample asoundrc that uses a softvol instance like this (and
not just as a surrogate for chipsets that don't support hw volume control)
then I'd be very interested.
Any and all help or advice appreciated.
David.