Hi guys,
I've spent quite a few hours over the past couple of weeks trying to get simultaneous sync'd music playing in my living room and office. I think using Virtual Audio Cable may be a good alternative to trying to play the same thing on multiple instance of WinAmp at the same time. NO, I'm not affiliated with VAC in any way, I just think this might help some people. VAC can be found here:
http://spider.nrcde.ru/music/software/eng/vac.html
The idea is to use only 1 source (e.g. WinAmp, foobar, streaming music from Yahoo!, etc.) and then use VAC to "pipe" the output to multiple sound cards or multiple other fat clients.
I don't have a lot of time to write a long explanation, but the people here are smart enough to get what I'm talking about.
MULTIPLE SOUND CARDS IN SAME MACHINE
-Send output from WinAmp or whatever to a virtual audio cable.
-Use the repeater application included with VAC to "pipe" the output from the virtual cable to each sound card. Note that the buffer sizes (measured in ms) MUST be the same for each repeater, or you are guaranteed to get out of sync.
DISTRIBUTED FAT CLIENTS
The idea for distributed fat clients is to "pipe" the output to remote machines using esound. You must have an esound server running on the remote client. I only experimented with this a little, so I don't know how well it scales beyond 2 machines. I also only used the esound server on linux, but a windows version exists.
Some tools:
esound server for windows:
http://www.liquid-reality.de/main/projects/esound
esound server written in java:
http://www.jcraft.com/jesd/
esound winamp output plugin (winamp 2 ver works with ver 5):
http://www.linuxfan.dk/index.php?page=esound
Jasper's Line In plugin for winamp:
http://home.hccnet.nl/th.v.d.gronde/dev ... index.html
esound windows "soundcard driver" (can only output to 1 esound server):
http://www.clingman.org/winesd/
IMPORTANT, both the winamp esound plugin and the winesd "soundcard driver" have problems if the esound server is using authentication. To avoid this, I started my esound server on my linux box like this:
esd -promiscuous -public -tcp -port 16001 &
Please also note that there seems to be a lot of warnings about running the esound server on a machine that is not firewalled to the internet.
-Send output from WinAmp or whatever to a virtual audio cable.
-For local machine, you can either use repeater application to "pipe" from virtual audio cable to local sound card, or use winamp with linein plugin and output to local sound card.
-For remote machines, you can either use repeater application to "pipe" from VAC to WinESD driver (which then broadcasts to remote machine), or use winamp with linein and esound output. Note that the WinESD driver can only send output to 1 esound server, but you can have multiple winamps, each sending to a different fat client.
I had pretty good success with a 2 computer setup using 3 instance of winamp. 1 source playing to VAC, 1 client using linein from VAC and outputting to local sound card, and other using linein from VAC and esound plugin output to remote machine.
NOTE that I had to run both "client" winamps in REALTIME to maintain sync. I played mp3's continuously for 4.5 hours maintining perfect sync the whole time.
I tried to do the same thing from living room to office, but the living room computer has an nforce2 with soundstorm. I really like using the soundstorm to encode stereo sound to 5.1. However, doing so introduces about a 400 ms delay for encode + receiver decode. I tried to adjust the buffer output to esound, but it will always get out of sync after skipping songs, pause, etc. because the buffer sizes are different.
SO, all this will only work if all the soundcards are analog output and all the buffer sizes are the same.
The mechanics are there, but getting this all integrated into Xlobby might be a little work. Just wanted to share my experiences.
Good Luck,
Sean.
keywords: sync synchronized multizone multi zone audio