I haven't done this, but I imagine it would work, using a linux distro and pulseaudio. I am not sure about the subwoofer - it may have different impedance so not play well with a normal speaker.
First we need to know the name of the sinks (a sink is somewhere you can output sound to) that are available.
pacmd list-sinks | grep name:
You should have one that has a name like
Now we need to know the names of the channels:
$ pacmd list-sinks | grep 'channel map:'
channel map: front-left,front-right,rear-left,rear-right,center,sub
(I made up the center and sub ones, as I don't have a 5.1 machine handy - see what yours are called). Pipe the
less if you have lots of sinks and it is hard to figure it out from the grepped output.
Now we need to make new sinks, using parts of the existing sinks.
default.pa (in /etc/pulse*) we create new sinks, and usurp some of the outputs:
load-module module-remap-sink sink_name=livingroom remix=no master=alsa_output.pci-0000_02_00.1.surround51 channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-right
load-module module-remap-sink sink_name=bedroom remix=no master=alsa_output.pci-0000_02_00.1.surround51 channels=2 master_channel_map=rear-left,rear-right channel_map=front-left,front-right
load-module module-remap-sink sink_name=funroom remix=no master=alsa_output.pci-0000_02_00.1.surround51 channels=2 master_channel_map=center,sub channel_map=front-left,front-right
Now any of your pulseaudio capable media players should have these new sinks available to send sound to. Simultaneously? Perhaps!