[pulseaudio-discuss] synchronous over IP network

Michael Dressel michael.dressel at desy.de
Tue Jun 15 07:30:10 PDT 2010


I'm trying to play sound from one computer (A) on three computers (B,C,D).
The computers are connected via a simple 100 Mbs switch. 
This is a test setup. I have all the computers on my desk and I have attached
several speakers to the computers B,C and D. I want to find out how well
synchronized the sound is played. In the real case I'm interested in not all
the speakers are next to each other. But there will be places where sound from
two speakers attached to different computers will overlap or interfere.

I tried this in two ways:
1) Multicast using RTP
2) use tunneling to all the sinks on B,C,D and create a combined sink on
server A

The result of scenario 1) was terrible even if I changing the format to
ulaw, 8000Hz and one channel.

Using scenario 2 was a bit better but still clearly noticeable echo occurs.

Are there more options or suggestions to improve the synchronicity?

The scenario 1) using RTP would be the preferred way because I believe
it would potentially scale to a larger number of computers and speakers?

Is RTP meant to be used for this case anyway?

The setup for scenario 1) looks something like this:
On computers B,C and D:
load-module module-rtp-recv

On computer A:
load-module module-null-sink sink_name=rtp format=ulaw rate=8000 channels=1
load-module module-rtp-send source=rtp.monitor format=ulaw rate=8000 channels=1
set-default-sink rtp

The setup for scenario 2) looks something like this:
On computers B,C and D:
load-module module-native-protocol-tcp auth-anonymous=1
load-module module-alsa-sink sink_name=chnl1 device=chnl1 format=alaw rate=8000 channels=1
load-module module-alsa-sink sink_name=ch2 device=channel2 format=alaw rate=8000 channels=1

On computer A:
load-module module-tunnel-sink server= sink=chnl1 sink_name=r12_1
load-module module-tunnel-sink server= sink=ch2 sink_name=r12_2
load-module module-tunnel-sink server= sink=chnl1 sink_name=r11_1
load-module module-tunnel-sink server= sink=ch2 sink_name=r11_2
load-module module-tunnel-sink server= sink=chnl1to8 sink_name=r10_all
load-module module-combine sink_name=cbi slaves=r12_1,r12_2,r11_1,r11_2,r10_all format=alaw rate=8000 channels=1

Bests regards,

More information about the pulseaudio-discuss mailing list