One ALSA config to rule them all
defaults.pcm.dmix.!rate 48000
defaults.pcm.dmix.!format S32_LE
pcm.multi {
type multi
slaves.a.pcm "dmix:PCH"
slaves.a.channels 2
slaves.b.pcm "dmix:Loopback"
slaves.b.channels 2
bindings.0 { slave a; channel 0; }
bindings.1 { slave a; channel 1; }
bindings.2 { slave b; channel 0; }
bindings.3 { slave b; channel 1; }
}
pcm.both {
type route
slave.pcm "multi"
ttable.0.0 1
ttable.1.1 1
ttable.0.2 1
ttable.1.3 1
}
pcm.!default {
type asym
playback.pcm "plug:both"
capture.pcm "plug:dsnoop:PCH"
}
pcm.loop "plug:\"dsnoop:Loopback,1\""
This configuration, apart from the standard record and playback also features loopback support via the snd-aloop ALSA plugin.
'Huh? What would I use that for?' Bear with me here.
This driver provides a pair of cross-connected devices, forming a full-duplex loopback soundcard.
So, what can this be used for? This allows for a way of "piping" audio through an imaginary soundcard, for example:
~ $ aplay -D hw:2,0 play.wav
and in another terminal:
~ $ arecord -D hw:2,1 record.wav
would play play.wav
through the loop playback device (in this case, hw:2,0
- where 2,0
is the card and device identifier, look at /proc/asound/cards
), and the second command would record the same sound back from the loop record device, all without you hearing the file on your default output.
Now, what is this used for in the above configuration?
The config defines 2 slaves, a
- the audio card and b
- the Loopback device. Then it maps the two (stereo) channels of the audio card to the loopback device, and lastly, exposes a loop
capture device which allows you to record system sounds.
Example use case: You want to be able to record your desktop but also whatever audio is playing. Usually, you would either need to use PulseAudio or ALSA+JACK. But with this config you just point whatever recording software to the loop
record device.
Note that the default recording device (microphone) does not get muxed into loop
by default, and is completely independent. This allows you to have two record devices - one for system and one for your microphone.