[linux-audio-user] Re: [Ardour-users] multiple unsynced cards

Patrick Shirkey pshirkey at boosthardware.com
Fri Sep 13 01:45:59 EDT 2002


Patrick Shirkey wrote:
> 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 ;)
> 

Yep :)

----
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

10578 waiting for signals
creating alsa driver ... ttable|2096|2|48000|swmon
new client: alsa_pcm, id = 1 type 1 @ 0x8068c40 fd = 18
port alsa_pcm:in_1 buf shm key 0x4d2fd393 at offset 8384 bi = 0x8065c18
registered port alsa_pcm:in_1, offset = 8384
port alsa_pcm:in_2 buf shm key 0x4d2fd393 at offset 16768 bi = 0x80668e0
registered port alsa_pcm:in_2, offset = 16768
port alsa_pcm:in_3 buf shm key 0x4d2fd393 at offset 25152 bi = 0x8065288
registered port alsa_pcm:in_3, offset = 25152
port alsa_pcm:in_4 buf shm key 0x4d2fd393 at offset 33536 bi = 0x805b968
registered port alsa_pcm:in_4, offset = 33536
port alsa_pcm:in_5 buf shm key 0x4d2fd393 at offset 41920 bi = 0x805b978
registered port alsa_pcm:in_5, offset = 41920
port alsa_pcm:in_6 buf shm key 0x4d2fd393 at offset 50304 bi = 0x805b638
registered port alsa_pcm:in_6, offset = 50304
port alsa_pcm:in_7 buf shm key 0x4d2fd393 at offset 58688 bi = 0x805b648
registered port alsa_pcm:in_7, offset = 58688
port alsa_pcm:in_8 buf shm key 0x4d2fd393 at offset 67072 bi = 0x8062620
registered port alsa_pcm:in_8, offset = 67072
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
registered port alsa_pcm:out_5, offset = 0
registered port alsa_pcm:out_6, offset = 0
registered port alsa_pcm:out_7, offset = 0
registered port alsa_pcm:out_8, offset = 0
-- jack_rechain_graph():
client alsa_pcm: inprocess client, execution_order=0.
load = 0.0277 max usecs: 24.201, spare = 43641.801
load = 0.0294 max usecs: 13.581, spare = 43652.418
load = 0.0291 max usecs: 12.610, spare = 43653.391
load = 0.0308 max usecs: 14.157, spare = 43651.844
load = 0.0322 max usecs: 14.708, spare = 43651.293
load = 0.0330 max usecs: 14.767, spare = 43651.234
load = 0.0306 max usecs: 12.286, spare = 43653.715
load = 0.0307 max usecs: 13.442, spare = 43652.559
load = 0.0304 max usecs: 13.156, spare = 43652.844
load = 0.0289 max usecs: 11.928, spare = 43654.070
load = 0.0287 max usecs: 12.428, spare = 43653.570
load = 0.0280 max usecs: 11.933, spare = 43654.066
load = 0.0282 max usecs: 12.409, spare = 43653.590
load = 0.0289 max usecs: 12.899, spare = 43653.102
load = 0.0299 max usecs: 13.461, spare = 43652.539
jackd: pcm.c:5247: snd_pcm_mmap_commit: Assertion `frames <= 
snd_pcm_mmap_avail(pcm)' failed.
----

asoundrc

----

# create a virtual eight-channel device with two soundcards:
# This is in fact four 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,0";
         slaves.c.channels 2;
         slaves.d.pcm "hw:2,1";
         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.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;
         ttable.4.4 1;
         ttable.5.5 1;
         ttable.6.6 1;
         ttable.7.7 1;
	
	

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


----


> 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