Synced audio ouput on multiple machines? VLC? hardware solutions?

7

5

I'm wondering if there is any software or hardware solutions to synced audio or audio and video across multiple computers or devices on a network.

I've seen Sonos, and it might be a good solution, but it's also a very expensive solution.

I'd like to be able to play something with realtime audio output on one PC, but hear it on speakers throughout the house, being it the home theater receiver, or another computer in another room.

I saw a solution using the apple iport express, but the latency was unacceptable for anything other than just music. I'd like to avoid running audio wires with baluns to a bunch of amplifiers scattered all over the place when I have cat5 run everywhere.

Is anyone familiar with using this kind of process for whole home audio? The latency is a big deal for me, if I've got video attached to the sound (e.g. watching a hockey game)

UPDATE

I've since installed several squeezeboxes around the house for music purposes, and hook up a serial controlled Onkyo receiver to my automation system. This gives me a little more flexibility, and in most zones I can get realtime audio from a game by using the multizones on the receiver, and for music I can get the rest of the zones all synced up. The sqeezeboxes will sync with each other (thought there is latency for live events) In the areas where this is a problem (such as watching a hockey game) I've distributed HDMI using a matrix switch to 4 different TV's all which have audio out to an amplifier in that room. Allowing me to have zero latency across rooms for live events that need video.

All in all I appreciate the responses but none of them worked for me. I think the HDMI distribution is by far one of the best for video and audio, and squeezebox is cheaper than sonos for the audio (and there are software players that you can run on any PC with a little tweaking they can sync right up for a many zone home audio solution)

zimmer62

Posted 2009-08-28T21:05:10.153

Reputation: 1 343

I really haven't found a good supported solution. I think I'm going to end up purchasing a rs232 controllable multizone audio matrix, and run a bunch of wires from the points I need sound output, sound input. Sucks, but every software option was either unsupported, added lots of latency, or the syncing wasn't begin done when multiple output zones were being used at the same time. I guess I just don't understand why a solution doesn't exist over TCPIP – zimmer62 – 2009-11-23T19:38:19.097

Answers

1

If latency is unacceptable your best bet might be to send the audio around the house through FM or wireless speakers (or even cables) How to pipe internet radio into a tuner?

Matthew Lock

Posted 2009-08-28T21:05:10.153

Reputation: 4 254

going to run cables, and get a matrix audio switcher. – zimmer62 – 2009-11-23T19:38:50.543

3

Give Airfoil a try. Yes, it does work best for music, but it can handle any audio output from any application. It does have its own video player app, which will keep the audio/video in sync for video files.

I have speakers scattered around the house attached to either a computer or airport express. I can output sound from any program on any computer in the house, and pick and choose which speakers the sound comes out on. Heck, I've been known to hook up an ipod touch to some portable speakers outdoors during parties too.

Curtis Tasker

Posted 2009-08-28T21:05:10.153

Reputation: 651

I've tried Airfoil, and my biggest complaint was latency, it was just fine for music, but in my application I'm need as close to no latency as possible. Most music wouldn't matter, but imagine trying to watch a live sporting event if your sound was delayed even by a few hundred milliseconds. – zimmer62 – 2009-09-29T14:11:12.957

2

pulseaudio should do that i believe- least thats what the FAQ says

Journeyman Geek

Posted 2009-08-28T21:05:10.153

Reputation: 119 122

"Microsoft Windows binaries can be downloaded from Cendio. Note that these are for 0.9.6, dated November 2007. They work, as long as you use one soundcard only, apparently."

It seems that the windows platform isn't very well supported for this software. I remember trying it a year back, and was unsuccessful. – zimmer62 – 2009-09-07T13:22:29.473

2

Sorry for the length of this answer - it represents several weeks of trial-and-error research. I'm afraid the details may matter so I've provided more rather than less. It's focused on audio sharing

Like others on this thread, I've been interested in having synchronized audio distributed throughout the house with spaces where the acoustic environments overlap. Since sound travels at about a foot/millisecond, this requires synchronization at approximately the 10s of millisecond level. I've found a way to make this work with VLC and have it remain in sync for hours without wandering. While I admit that I've looked at the VLC source code to try to understand which clocks are being used, I don't pretend to understand what's going on there. Furthermore, much of what I've done has been empirical. Thus, if the folks who really do understand VLC offer clarification on a better way to do this, I'm most receptive. With those caveats out of the way here's what I've done that seems to work.

Configuration

I have four areas where I'd like to share audio and a collection of computers of various vintages I'm willing to devote to provide audio. Some of these machines run Linux (Ubuntu 12.04) while others run Windows. Overall, it was easier to sync the Linux boxes than the Windows boxes, but it was possible.

On the Linux boxes, it was necessary to update the pulseaudio drivers using ppa:ubuntu-audio-dev/ppa to get the low latency version. Otherwise, the configuration was vanilla. VLC complained about latency without this upgrade. I'm hoping that when we get the 14.04 this problem will go away.

On the Windows boxes I'm running Windows 7 Pro.

The audio is served from VLC a Linux box that is independent of the playback machines. It's just downstream of the firewall where the network enters the house.

The network is a mixture of gigabit wired and wireless (802.11g).

Things that may not matter

Because I'm a time nut, all the machines are locked together in time at the sub-millisecond level using NTP. On the Linux boxes this is trivial. On the windows box, I'm using the Meinberg implementation of ntp (found at http://www.meinbergglobal.com/english/sw/ntp.htm) The box that is serving the audio is synced to the normal external time servers. However, the playback machines have their time synced exclusively to the audio server and follow it closely. The line from the ntp.config file on the playback machines that does this is

server 10.17.0.12 iburst burst minpoll 4 maxpoll 4 prefer

This ensures that time checks are done every 16 seconds - obviously I'm not concerned about network traffic.

Server

The server is set up to monitor the PulseAudio stream so that anything I play on the server will be fed to the output stream.

The output stream is an rtsp stream serving two channels at 44.1kHz. Again, there are probably things I could do to conserve bandwidth, but I'm more interested in getting the sync right than in minimizing bandwidth.

In the Preferences (Under Tools)

  1. In the Simple settings, Audio - ensure that Time-Stretching audio is enabled

    For the rest of the settings, click "All" at the bottom of Preferences page

  2. Allow real-time priority

  3. Network synchronization - Check Network master clock and provide the IP of the Master server (this machine in my case)
  4. Audio - enable High quality audio resampling and check Enable time stretching audio
  5. Input/Codecs - this one seems to matter the most - scroll down to the bottom of the page
    1. Set Network caching to 300ms - you may need to vary this based on the speed and contention of your machines - on mine 300 is enough
    2. Clock reference average counter - I found that 1000 worked well - this seems to affect how quickly the synchronization follows small changes in time
    3. Enable Clock synchronisation
    4. Clock jitter - 30 ms works on my systems
    5. Check Network synchronisation
    6. I've provided file names for Record directory and Timeshift directory - I don't know if this matters
    7. Timeshift granularity - I've set to 1000, again, I'm not sure this matters.

Clients

Set up the clients to play the stream your server is providing.

The clients are set up to match the master with a few exceptions - here I'll list just the differences

Windows- Preferences

  1. Increase the priority of the process
  2. Set the clock source to System time (Dangerous!) - I've tried the other settings and they tend to drift. This seems to work well as long as the NTP is doing it's job. When I turn off NTP, things begin to drift. From looking at the source code, it appears that this option uses GetSystemTimePreciseAsFileTime () - on modern systems this is a sub-microsecond timer and appears to be the clock that NTP is managing. I'm sure there's a reason it's marked Dangerous so use at your own risk - it seems to be working for me.
  3. In Network Sync - Don't check the Network master clock (this is client after all) Do supply the IP for your master clock.

Otherwise, everything is the same as on the master.

Linux -

Preferences

  1. You don't have a choice on the clock - you do need to provide the IP of the master just as you do for Windows.

Caveats

Having said all of the above, all of the Linux clients I've set up seem to work well - even a very antique netbook with very little horsepower.

Windows is a different story. I've tried two boxes both with i7 processors - they are relatively new and fast. One, a Lenovo laptop, works with the recipe above. The other, a Shuttle Box, worked to a certain degree but after a few hours would start drift. I finally gave up and set it up to dual boot with Ubuntu. Once I did that, everything just worked. While I'm convinced that Windows can be made to work since I have an existence proof, Linux seems to be closer to a reliable solution. I now have three boxes with the Linux client and they all work flawlessly and stay in sync on time scales of many hours without needing to restart the VLC client.

Charles McMillan

Posted 2009-08-28T21:05:10.153

Reputation: 21

Welcome to [su]. Don't be sorry about the length! Long answers are better. Try to avoid the word "thread" here, since this is not a discussion forum, it is just a question and answer. – Kevin Panko – 2014-03-13T03:02:18.653

1

It should be possible to use VLC for this purpose.

See e.g. How-To: Stream almost anything using VLC:

"... we are going to show you how to stream any type of media file from your computer to another device on your network ... Using these techniques you could stream video from your office computer to a laptop plugged into the living room TV and control the playlist with your PDA."

Peter Mortensen

Posted 2009-08-28T21:05:10.153

Reputation: 10 992

I didn't see anything in that article about synchronizing the playback on multiple computers. I guess I can install it and play with the software to see if I discover any options that will keep the two machine in sync. – zimmer62 – 2009-08-31T17:53:59.997