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.
What OS are you running? If Linux, you can do this with ALSA and a properly setup .asoundrc config file (http://www.alsa-project.org/alsa-doc/doc-php/asoundrc.php?company=Generic&card=Generic&chip=Generic&module=Generic#virmulti). 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...
What OS are you running? If Linux, you can do this with ALSA and a properly setup .asoundrc config file (http://www.alsa-project.org/alsa-doc/doc-php/asoundrc.php?company=Generic&card=Generic&chip=Generic&module=Generic#virmulti). 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
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.
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:
# 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:
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.
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.
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:
# 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:
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