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