Problems with ALSA pcm_multi
The ALSA pcm_multi plugin provides a means of using multiple sound cards with
applications requiring a single audio interface (eg. JACK).
Here's an example .asoundrc file showing
how to use it. Unfortunately pcm_multi has a few problems that need to be
worked around.
Duplex Operation Doesn't Work with JACK
A change was made in alsa-lib-1.0.9rc1 which had the unintended effect of
preventing pcm_multi from working with jackd in duplex mode, ie.
only the virtual capture or playback device could be started, not both
at the same time. This problem still exists in alsa-lib-1.0.13.
To make it work it's necessary to remove the linking code which was added in
pcm_multi.c rev 1.89. It isn't needed here anyway.
Here's a patch that
removes it from alsa-lib versions 1.0.10 to 1.0.13 which fixes the problem.
Update: This problem has been fixed in alsa-lib-1.0.14.
Realtime (-rt) Kernel Doesn't Work with pcm_multi and JACK
Users may also have problems using the -rt kernel with pcm_multi.
On my dual Opteron 240 system, the -rt kernel gives lots of xruns or even
locks up completely when using pcm_multi with jackd,
even though it works fine with a single sound card. For the
time being, users of pcm_multi will have to use a non-rt
kernel with CONFIG_PREEMPT=y if they experience similar behaviour. There
have been reports that -rt kernels work with pcm_multi on AMD64x2 dual core
systems, but so far I have been unable to confirm this on my own
hardware. YMMV.
Applications Report Lots of xruns
There is some kind of interaction between jackd and pcm_multi which
causes some JACK clients to report lots of xruns even though alsa_pcm doesn't
report any and there is nothing audibly wrong. JAMin, for example does this
if using less than the default maximum period size, and some qjackctl users
have reported it too. This is inconvenient but appears to be harmless
(although users should still watch out for xrun messages from alsa_pcm,
which indicate real xruns).