thanks Jason - this sounds promising, and I'll give it a try on my system.
-Dave

On 9/18/07, Jason Plumb < jason@noisybox.net> wrote:
David Merrill wrote:
> yes, I've heard that alsa has the ability to create a single,
"virtual > sound card" from multiple individual cards, but so far I
haven't been
> able to make this work - I'm interested though, to hear from anyone
> who has done it. also heard a rumor that new versions of jack may be
> able to connect to multiple cards at the same time - again, I don't
> have specific info, but am curious to hear if anyone has done it.

David,

In my audiopint setup, I'm using 4 USB iMics in a cheapo USB 1.1 hub.  I
use all 4 stero inputs and the one single stereo output of the first
iMic.  I haven't confirmed it, but I'm confident that fully duplexed
stereo on all 4 devices would go over the theoretical 1.1 bandwidth (my
setup does not).

I multiplex the 4 cards into a single virtual card using the attached
asoundrc (which should be named as ~/.asoundrc).

I am successfully using this 8-in-2-out virtual card with jackd 0.103.0
(realtime) and pd 0.40-2 (realtime).  Jackd > 0.102.20 is required to
pick up MMAP_COMPLEX, which allows memory mapping multiple multiplexed
cards (??).  My jackd usage is:

    jackd --realtime -d alsa -C capture8 -P iMic1 -p64 -n2

and then I make sure I start pd with -jack -inchannels 8 -outchannels 2
(and other less relevant params).  I'm pretty sure the clocks aren't
exactly synchronized (I would appreciate confirmation or refutation),
but it hasn't really caused me any pain yet, even though I should likely
back -p64 down to -p128.

I'm pretty sure I had limited success getting pd to work in alsa mode
with the given .asoundrc...but to be honest, my focus was on jack first.

-jason
http://noisybox.net


pcm.iMic1 {
        type hw
        card 0
}
ctl.iMic1 {
        type hw;
        card 0;
}

pcm.iMic2 {
        type hw
        card 1
}

pcm.iMic3 {
        type hw
        card 2
}

pcm.iMic4 {
        type hw
        card 3
}

pcm.capture8 {
        type multi;
        slaves.a.pcm hw:0
        slaves.a.channels 2;
        slaves.b.pcm hw:1
        slaves.b.channels 2;
        slaves.c.pcm hw:2
        slaves.c.channels 2;
        slaves.d.pcm hw:3
        slaves.d.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;

        bindings.6.slave d;
        bindings.6.channel 0;
        bindings.7.slave d;
        bindings.7.channel 1;

}

ctl.capture8 {
        type hw;
        card 0;
}

_______________________________________________
PD-dev mailing list
PD-dev@iem.at
http://lists.puredata.info/listinfo/pd-dev




--
MIT Media Lab
dmerrill@media.mit.edu
http://web.media.mit.edu/~dmerrill/