Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Is it possible to run two soundcards for surround sound ? (Read 4221 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Is it possible to run two soundcards for surround sound ?

Hi all,

I have a slightly odd question.

This is the setup I am looking to have.

For the two front/Stereo channels

An M-audio 2696, two analog outputs connected to my Pioneer VSX-816, Which has two preouts which will connect to my Cambridge stereo amp.

For the rear and centre channels

Some little soundcard or onboard sound, with the rear, and centre connected directly to the pioneer for out put.

Will this work software wise ?

Is it possible to run two soundcards for surround sound ?

Reply #1
The majority of surround sound source files are probably not compatible with such an approach. They exist as a single file and need to be decoded and passed out to the appropriate output channels. This intermediate function is done in a soundcard that has surround sound processing or in an AV receiver. I don't know about software player solutions. You would have to find something that produces multi-track output for the single surround file input and lets you assign the tracks to the outputs of your choice.

Unless you employ some single clock source, the soundcards will not stay in synch with each other. Within a couple minutes or so, maybe sooner, the front channels will be at one place in the composition while the rear channels will be at another, either lagging behind or running ahead by a noticeable amount.

There are provisions to synch many professional soundcards to a single clock. The more advanced employ a central clock and pipe it to all involved hardware (e.g. wordclock), others use the clock from one soundcard and disable the others. The Audiophile 2496 does this via S/PDIF; you can run up to four of them as a single 8 channel device.

Is it possible to run two soundcards for surround sound ?

Reply #2
What OS are you running? If Linux, you can do this with ALSA and a properly setup .asoundrc config file. I myself have played with a setup of a SBLive 5.1 (Just using the two front channels) and my onboard sound (Front channels yet again) to get a 4 channel setup. I just tried it to see if it worked, and it worked quite well too.

I have no idea how you'd do this under Windows though...
"It's the panties fault! The panties made me a pervert!"

 

Is it possible to run two soundcards for surround sound ?

Reply #3
What OS are you running? If Linux, you can do this with ALSA and a properly setup .asoundrc config file. I myself have played with a setup of a SBLive 5.1 (Just using the two front channels) and my onboard sound (Front channels yet again) to get a 4 channel setup. I just tried it to see if it worked, and it worked quite well too.

I have no idea how you'd do this under Windows though...


I am indeed running Linux.

Can you elaborate a little more on this ? Perhaps posting .asoundrc config file ?

Thanks
Christopher

Is it possible to run two soundcards for surround sound ?

Reply #4
<deleted>

Is it possible to run two soundcards for surround sound ?

Reply #5
Can you elaborate a little more on this ? Perhaps posting .asoundrc config file ?


Actually, when I tried it, I just copied the "Virtual multi channel devices" example from that page I linked to, edited a couple values, and it worked off the bat for me. Then again, I was lucky that my SBLive's front 2 channels are setup as hw:0,0 and my on-board's front 2 channels are hw:2,0. To find out what card is what number, just check out the listings in /proc/asound.

Code: [Select]
dr-xr-xr-x   9 root root 0 2007-07-02 18:42 card0
dr-xr-xr-x   3 root root 0 2007-07-02 18:42 card1
dr-xr-xr-x   7 root root 0 2007-07-02 18:42 card2
-r--r--r--   1 root root 0 2007-07-02 18:42 cards
-r--r--r--   1 root root 0 2007-07-02 18:42 devices
-r--r--r--   1 root root 0 2007-07-02 18:42 hwdep
lrwxrwxrwx   1 root root 5 2007-07-02 18:42 Live -> card0
-r--r--r--   1 root root 0 2007-07-02 18:42 modules
dr-xr-xr-x   2 root root 0 2007-07-02 18:42 oss
-r--r--r--   1 root root 0 2007-07-02 18:42 pcm
lrwxrwxrwx   1 root root 5 2007-07-02 18:42 SAA7134 -> card1
dr-xr-xr-x   2 root root 0 2007-07-02 18:42 seq
-r--r--r--   1 root root 0 2007-07-02 18:42 timers
lrwxrwxrwx   1 root root 5 2007-07-02 18:42 V8237 -> card2
-r--r--r--   1 root root 0 2007-07-02 18:42 version


In my setup, I have three sound devices, my SBLive (Live), my TV card's ALSA device (SAA7134) and my onboard (V8237). As you can see, ALSA has kindly provided symlinks based on the common name for that device, to the number that it has assigned to that device. Based on those symlinks, my SBLive is Card 0 (AKA, hw:0,0), and my onboard is Card 2 (hw:2,0).

Here's how my .asoundrc looked when I edited it:
Code: [Select]
# create a virtual four-channel device with two sound devices:
# 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:2,0";
        slaves.b.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;
}

# JACK will be unhappy if there is no mixer to talk to, so we set
# this to card 0. This could be any device but 0 is easy.

ctl.multi {
        type hw;
        card 0;
}


Now, this is how it works for a 4 channel setup using the front's of two soundcards, and so far I've used the "hw" devices. But ALSA provides handy aliases for the channels on devices, like front, rear, center_lfe, etc. You can find out what handy aliases ALSA provides on your setup by using "aplay -L". That way, instead of using "hw:0,0" or whatever, I can use "front:CARD=LIVE" and "front:CARD=V8237". (Oh, and you can leave out that "DEV=0" part, if ALSA adds it to the alias. I noticed that it does for my SBLive, but not for my onboard. I've never added it in, and it still works as expected.)

For instance, if I wanted to do a 6 channel setup using the front and center/lfe of my Live, meanwhile using the front channel of my onboard for rears, I'd setup the .asoundrc as:
Code: [Select]
pcm.multi {
        type multi;
        slaves.a.pcm "front:CARD=Live";
        slaves.a.channels 2;
        slaves.b.pcm "front:CARD=V8237";
        slaves.b.channels 2;
        slaves.c.pcm "center_lfe:CARD=Live";
        slaves.c.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;
}

ctl.multi {
        type hw;
        card 0;
}


I admit, that for me, such setups are pretty silly, what with having a real 5.1 card and 5.1 speaker setup. But I can see the needs for such a setup using cheap, but decent, 2 channel soundcards. In fact, this is what I had to do before I got my SBLive.

ALSA is a wonderful setup, you can do alot of "magic" with the .asoundrc file. But the best way to learn what you can do, is by reading the docs, and messing with it yourself.

Hope I've helped you out.
"It's the panties fault! The panties made me a pervert!"

Is it possible to run two soundcards for surround sound ?

Reply #6
Can you elaborate a little more on this ? Perhaps posting .asoundrc config file ?


Actually, when I tried it, I just copied the "Virtual multi channel devices" example from that page I linked to, edited a couple values, and it worked off the bat for me. Then again, I was lucky that my SBLive's front 2 channels are setup as hw:0,0 and my on-board's front 2 channels are hw:2,0. To find out what card is what number, just check out the listings in /proc/asound.

Code: [Select]
dr-xr-xr-x   9 root root 0 2007-07-02 18:42 card0
dr-xr-xr-x   3 root root 0 2007-07-02 18:42 card1
dr-xr-xr-x   7 root root 0 2007-07-02 18:42 card2
-r--r--r--   1 root root 0 2007-07-02 18:42 cards
-r--r--r--   1 root root 0 2007-07-02 18:42 devices
-r--r--r--   1 root root 0 2007-07-02 18:42 hwdep
lrwxrwxrwx   1 root root 5 2007-07-02 18:42 Live -> card0
-r--r--r--   1 root root 0 2007-07-02 18:42 modules
dr-xr-xr-x   2 root root 0 2007-07-02 18:42 oss
-r--r--r--   1 root root 0 2007-07-02 18:42 pcm
lrwxrwxrwx   1 root root 5 2007-07-02 18:42 SAA7134 -> card1
dr-xr-xr-x   2 root root 0 2007-07-02 18:42 seq
-r--r--r--   1 root root 0 2007-07-02 18:42 timers
lrwxrwxrwx   1 root root 5 2007-07-02 18:42 V8237 -> card2
-r--r--r--   1 root root 0 2007-07-02 18:42 version


In my setup, I have three sound devices, my SBLive (Live), my TV card's ALSA device (SAA7134) and my onboard (V8237). As you can see, ALSA has kindly provided symlinks based on the common name for that device, to the number that it has assigned to that device. Based on those symlinks, my SBLive is Card 0 (AKA, hw:0,0), and my onboard is Card 2 (hw:2,0).

Here's how my .asoundrc looked when I edited it:
Code: [Select]
# create a virtual four-channel device with two sound devices:
# 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:2,0";
        slaves.b.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;
}

# JACK will be unhappy if there is no mixer to talk to, so we set
# this to card 0. This could be any device but 0 is easy.

ctl.multi {
        type hw;
        card 0;
}


Now, this is how it works for a 4 channel setup using the front's of two soundcards, and so far I've used the "hw" devices. But ALSA provides handy aliases for the channels on devices, like front, rear, center_lfe, etc. You can find out what handy aliases ALSA provides on your setup by using "aplay -L". That way, instead of using "hw:0,0" or whatever, I can use "front:CARD=LIVE" and "front:CARD=V8237". (Oh, and you can leave out that "DEV=0" part, if ALSA adds it to the alias. I noticed that it does for my SBLive, but not for my onboard. I've never added it in, and it still works as expected.)

For instance, if I wanted to do a 6 channel setup using the front and center/lfe of my Live, meanwhile using the front channel of my onboard for rears, I'd setup the .asoundrc as:
Code: [Select]
pcm.multi {
        type multi;
        slaves.a.pcm "front:CARD=Live";
        slaves.a.channels 2;
        slaves.b.pcm "front:CARD=V8237";
        slaves.b.channels 2;
        slaves.c.pcm "center_lfe:CARD=Live";
        slaves.c.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;
}

ctl.multi {
        type hw;
        card 0;
}


I admit, that for me, such setups are pretty silly, what with having a real 5.1 card and 5.1 speaker setup. But I can see the needs for such a setup using cheap, but decent, 2 channel soundcards. In fact, this is what I had to do before I got my SBLive.

ALSA is a wonderful setup, you can do alot of "magic" with the .asoundrc file. But the best way to learn what you can do, is by reading the docs, and messing with it yourself.

Hope I've helped you out.


Thanks youve helped me alot!

One more question. Is it possible to occasionally use my two rear speakers, as regular stereo speakers ? My two regular front speakers are heavy duty, and I don't like wearing them out for just basic internet sounds, or background noise. I like to use them for watching a film or stereo listening sessions.

Thanks again
Chris