Can you elaborate a little more on this ? Perhaps posting .asoundrc config file ?
Actually, when I tried it, I just copied the "Virtual multi channel devices" example from that page I linked to, edited a couple values, and it worked off the bat for me. Then again, I was lucky that my SBLive's front 2 channels are setup as hw:0,0 and my on-board's front 2 channels are hw:2,0. To find out what card is what number, just check out the listings in /proc/asound.
dr-xr-xr-x 9 root root 0 2007-07-02 18:42 card0
dr-xr-xr-x 3 root root 0 2007-07-02 18:42 card1
dr-xr-xr-x 7 root root 0 2007-07-02 18:42 card2
-r--r--r-- 1 root root 0 2007-07-02 18:42 cards
-r--r--r-- 1 root root 0 2007-07-02 18:42 devices
-r--r--r-- 1 root root 0 2007-07-02 18:42 hwdep
lrwxrwxrwx 1 root root 5 2007-07-02 18:42 Live -> card0
-r--r--r-- 1 root root 0 2007-07-02 18:42 modules
dr-xr-xr-x 2 root root 0 2007-07-02 18:42 oss
-r--r--r-- 1 root root 0 2007-07-02 18:42 pcm
lrwxrwxrwx 1 root root 5 2007-07-02 18:42 SAA7134 -> card1
dr-xr-xr-x 2 root root 0 2007-07-02 18:42 seq
-r--r--r-- 1 root root 0 2007-07-02 18:42 timers
lrwxrwxrwx 1 root root 5 2007-07-02 18:42 V8237 -> card2
-r--r--r-- 1 root root 0 2007-07-02 18:42 version
In my setup, I have three sound devices, my SBLive (Live), my TV card's ALSA device (SAA7134) and my onboard (V8237). As you can see, ALSA has kindly provided symlinks based on the common name for that device, to the number that it has assigned to that device. Based on those symlinks, my SBLive is Card 0 (AKA, hw:0,0), and my onboard is Card 2 (hw:2,0).
Here's how my .asoundrc looked when I edited it:
# create a virtual four-channel device with two sound devices:
# This is in fact two interleaved stereo streams in
# different memory locations, so JACK will complain that it
# cannot get mmap-based access. see below.
pcm.multi {
type multi;
slaves.a.pcm "hw:0,0";
slaves.a.channels 2;
slaves.b.pcm "hw:2,0";
slaves.b.channels 2;
bindings.0.slave a;
bindings.0.channel 0;
bindings.1.slave a;
bindings.1.channel 1;
bindings.2.slave b;
bindings.2.channel 0;
bindings.3.slave b;
bindings.3.channel 1;
}
# JACK will be unhappy if there is no mixer to talk to, so we set
# this to card 0. This could be any device but 0 is easy.
ctl.multi {
type hw;
card 0;
}
Now, this is how it works for a 4 channel setup using the front's of two soundcards, and so far I've used the "hw" devices. But ALSA provides handy aliases for the channels on devices, like front, rear, center_lfe, etc. You can find out what handy aliases ALSA provides on your setup by using "aplay -L". That way, instead of using "hw:0,0" or whatever, I can use "front:CARD=LIVE" and "front:CARD=V8237". (Oh, and you can leave out that "DEV=0" part, if ALSA adds it to the alias. I noticed that it does for my SBLive, but not for my onboard. I've never added it in, and it still works as expected.)
For instance, if I wanted to do a 6 channel setup using the front and center/lfe of my Live, meanwhile using the front channel of my onboard for rears, I'd setup the .asoundrc as:
pcm.multi {
type multi;
slaves.a.pcm "front:CARD=Live";
slaves.a.channels 2;
slaves.b.pcm "front:CARD=V8237";
slaves.b.channels 2;
slaves.c.pcm "center_lfe:CARD=Live";
slaves.c.channels 2;
bindings.0.slave a;
bindings.0.channel 0;
bindings.1.slave a;
bindings.1.channel 1;
bindings.2.slave b;
bindings.2.channel 0;
bindings.3.slave b;
bindings.3.channel 1;
bindings.4.slave c;
bindings.4.channel 0;
bindings.5.slave c;
bindings.5.channel 1;
}
ctl.multi {
type hw;
card 0;
}
I admit, that for me, such setups are pretty silly, what with having a real 5.1 card and 5.1 speaker setup. But I can see the needs for such a setup using cheap, but decent, 2 channel soundcards. In fact, this is what I had to do before I got my SBLive.
ALSA is a wonderful setup, you can do alot of "magic" with the .asoundrc file. But the best way to learn what you can do, is by reading the docs, and messing with it yourself.
Hope I've helped you out.