[linux-audio-user] multiple unsynced cards

Patrick Shirkey pshirkey at boosthardware.com
Fri Sep 13 01:37:23 EDT 2002


I just managed to get the code from Jeorn working on my crappy cards 
here. (it also allows me to use a crappy card and my quattro together 
or I guess even all three for eight channels i/o ;)

So that makes at least two people who have done this.



As proof:
----
  jackd -v -d alsa -d ttable -p 2096
jackd 0.37.2
Copyright 2001-2002 Paul Davis and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details

10562 waiting for signals
creating alsa driver ... ttable|2096|2|48000|swmon
new client: alsa_pcm, id = 1 type 1 @ 0x80674f0 fd = 14
port alsa_pcm:in_1 buf shm key 0x2bda717e at offset 8384 bi = 0x80668c0
registered port alsa_pcm:in_1, offset = 8384
port alsa_pcm:in_2 buf shm key 0x2bda717e at offset 16768 bi = 0x80668d0
registered port alsa_pcm:in_2, offset = 16768
port alsa_pcm:in_3 buf shm key 0x2bda717e at offset 25152 bi = 0x80668e0
registered port alsa_pcm:in_3, offset = 25152
port alsa_pcm:in_4 buf shm key 0x2bda717e at offset 33536 bi = 0x80668f0
registered port alsa_pcm:in_4, offset = 33536
registered port alsa_pcm:out_1, offset = 0
registered port alsa_pcm:out_2, offset = 0
registered port alsa_pcm:out_3, offset = 0
registered port alsa_pcm:out_4, offset = 0
-- jack_rechain_graph():
client alsa_pcm: inprocess client, execution_order=0.
load = 1.6610 max usecs: 1450.590, spare = 42215.410
load = 2.5081 max usecs: 1465.084, spare = 42200.918
load = 2.9317 max usecs: 1465.084, spare = 42200.918
load = 1.6190 max usecs: 133.742, spare = 43532.258
load = 0.9726 max usecs: 142.456, spare = 43523.543
load = 0.6519 max usecs: 144.597, spare = 43521.402
load = 0.4909 max usecs: 144.091, spare = 43521.910
load = 0.4293 max usecs: 160.522, spare = 43505.477
load = 0.3765 max usecs: 141.332, spare = 43524.668
load = 0.3551 max usecs: 145.723, spare = 43520.277
jackd: pcm.c:5247: snd_pcm_mmap_commit: Assertion `frames <= 
snd_pcm_mmap_avail(pcm)' failed.
----

Here's the asoundrc I use:

----
# create a virtual four-channel device with two soundcards:
# iiuc, 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:1,0";
         slaves.b.channels 2;
#        slaves.c.pcm "hw:2,2";
#        slaves.c.channels 1;
	

         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 b;
#         bindings.4.channel 4;
#         bindings.5.slave b;
#         bindings.5.channel 5;
	
}

ctl.multi {
         type hw;
         card 0;
}

# this creates a 4channel interleaved pcm stream based on
# the multi device. jack will work with this one.
pcm.ttable {
         type route;
         slave.pcm "multi";
         ttable.0.0 1;
         ttable.1.1 1;
         ttable.2.2 1;
         ttable.3.3 1;

}
# see above.
ctl.ttable {
         type hw;
         card 0;
}
----

-- 
Patrick Shirkey - Boost Hardware Ltd.
For the discerning hardware connoisseur
Http://www.boosthardware.com
Http://www.boosthardware.com/LAU/guide/
========================================

"Um...symbol_get and symbol_put... They're
kindof like does anyone remember like get_symbol
and put_symbol I think we used to have..."
- Rusty Russell in his talk on the module subsystem




More information about the Linux-audio-user mailing list