11

I just bought a bluetooth stereo speaker and I had an idea:

Is it possible to build a 4.0 audio system using my Bluetooth speakers as rear speaker and two normal cabled stereo speakers (or another pair of bluetooth speakers) as front? Which program I have to use?

In general: is it possible to split a 4.0 or 5.1 signal in the single channels and send them to multiple devices?

2
  • It would be neat but I doubt it. I'd recommend digging deeper into pulseaudio.
    – con-f-use
    Aug 20, 2012 at 15:43
  • Even if this was possible, wouldn't the different sets of speakers be in different sync, due to differences in chipset latencies and especially over bluetooth? You would hear a kind of echo, I presume.
    – taneli
    Aug 28, 2012 at 10:52

4 Answers 4

2

You can use a package called Jack. What it lets you do is pipe the outputs from the source, into whatever channels on whatever devices you want.

sudo apt-get jack2d jack-tools qjackctl

jack2d: is the more recent version of Jack

jack-tools: more stuff for jack

qjackctl: GUI

After installation use qjackctl to pull up the GUI.

Examples of things you can do with jack;

  • Pipe audio from one source to all devices for synced audio.
  • Send the Left channel to both channels of a pair of speakers, and the right to a different pair

The possibilities are pretty endless. Here is a picture from the help page for Jack

On the left, you can see your output sources, and on the right are the devices you can output to.

enter image description here

Here is a picture of 3 LR audio sources where 2 of them are pipe to 1 speaker,

and the other source to the other speaker. enter image description here

1

strictly speaking no. a single sound card processes the data synch's all the channels and makes front left x% stronger and rear right x% weaker so that the explosion on the front left of the screen sounds right. or the reverse when a jet flies over from the rear.

you can make a psudo setup but if you want good sound get a proper card and speakers. a well equiped and setup system can sound amaizing. I got an omega sound card for the wifes pc because she watches a lot of dvd's even on the cheezy speakers we have it sounds decent. when I got that omega I was quite suprised how much a difference a good sound card makes. I was used to the creative labs audigy.

1

I got it to work by combining the advice from this thread http://forums.gentoo.org/viewtopic-t-859769-start-0.html and this article. http://confignewton.com/?p=211

from the confignewton article, do what it says about commenting out the module-udev-detect and module-detect lines in both default.pa and system.pa

next, I added this to default.pa:

### Load audio drivers statically
### (it's probably better to not load these drivers manually, but instead
### use module-udev-detect -- see below -- for doing this automatically)
load-module module-alsa-sink sink_name=rear device=hw:0 channels=2 channel_map=rear-left,rear-right tsched=0
load-module module-alsa-sink sink_name=front device=hw:1 channels=2 channel_map=front-left,front-right tsched=0

At the end of default.pa, I added a line similar to what is talked about in the gentoo thread:

load-module module-combine channels=4 channel_map=front-left,front-right,rear-left,rear-right

EDIT: I've added "tsched=0" to the end of each of those static declarations. It really helps with both echoing and crackling.

1
0

To answer the original question, yes this can be done with PulseAudio, but you will not get perfect synchronisation between a Bluetooth speaker and a non-Bluetooth speaker, so you probably won't like the result if you wanted to use it for "normal" listening.

However, there are situations where perfect synchronisation is not necessary. In our case we were playing a dual-language video, with English on the left channel and another language on the right channel, and we wanted the right channel to be sent to a separate Bluetooth device while the left channel was sent to the default sound device (in our case HDMI audio from a Raspberry Pi 400). So long as the audio stayed within half a second or so, we didn't mind minor latency differences in this scenario.

Attempting to do the load-module module-combine in default.pa did not work when one of the devices was Bluetooth, because Pulseaudio had not yet finished connecting to the Bluetooth device when it read that line during initialisation. Instead, we had to connect to the Bluetooth device first and then issue the load-module command at runtime, in other words do:

pacmd list-sinks | less

and note the sink names (if your Bluetooth sink is not present, connect to it and repeat this command), then

pactl load-module module-combine-sink sink_name=duplicate slaves=alsa_output.platform-fef05700.hdmi.hdmi-stereo,bluez_sink.01_23_45_67_89_AB.a2dp_sink channels=2

changing the two sink names to the ones listed by the list-sinks command above, then

pacmd set-default-sink duplicate

Now if you play a sound, you should find it plays on both devices, perhaps with a small delay between them (as I said the synchronisation might not be perfect). To be more selective about which channel goes to which device, run pavucontrol (if you don't have it then sudo apt install it), and in the "Output Devices" tab silence the channels you don't want on the underlying devices, for example silence the right-hand channel on the HDMI device and silence the left-hand channel on the Bluetooth device.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.