[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