Certainly this is not a new idea, but I haven't seen anyone go all out with it yet (sorry if I just didn't look hard enough). At school, we throw a lot of parties and we like the same music blasting from every room. To do that I need all the computers in my house play music in perfect sync and stay in perfect sync. Already developed, we could use ShoutCast, but then each stream is a few seconds out of sync. There's also NetSync for 2.x, which I haven't actually tried but I've heard looses sync after a couple songs (please tell me if this is not the case). Anyway, I'd like to start an open-source project designing a perfectly synced Winamp across a LAN and am calling upon Winamp community to help with ideas, the high-level design and perhaps the implementation.
Some thoughts on making the sound sync:
What I know is that when I use ShoutCast, the streams are off, but why? There are several buffers in the system that cause delay but I have no idea which would cause a significant difference in different computers.
There's the network delay which could be brought down significantly by forgeting about TCP and using UDP broadcast (or multicast if practical) to send just one packet to multiple clients on the LAN. Every computer would get the same real-time data within milliseconds of each other. It's also possible the network delay is just caused by the packets being too big.
There's the Winamp buffering delay. Here's an area where I'm really in the dark. Will faster computers buffer less, simply because they can? If so, if there's hooks within Winamp, it should be possible and not all that hard to sync the clocks on everyone's computer. Then you could simply have a massive buffer controlled by time.
Lastly, there's the sound card delay. If the time it takes for a sound packet to propagate through the card causes more than a half-second difference between cards, then I may just bail on this idea all together, because I can think of no generic way to sync everyone's sound card. That'd be a royal pain. The only hack I can think of is to calibrate your Winamp by listening to the room next to you and adjusting a delay till they sound okay and then hope they stay in sync.
So I'm looking for feedback. If you've tried to sync and know it's just about impossible to make perfect, please tell me and save me some time.
If it turns out it is possible...
In Winamp3, where's the hook to for a component to pull out the sound packet before it plays (and likewise where I can drop one in)?
Let me know if you'd like to help develop in this project. I have plenty more ideas that follow up syncing that would require more people if you want to see every feature before Winamp4:
sync each playlist
allow any computer to modify the playlist, and change songs
access permissions so that you and your roommates can change songs anywhere, but some drunk won't clear a massive playlist you set up.
keychain remote Winamp, so that you don't have to get off your lazy ass to skip a bad song or turn up the tunes.
Some thoughts on making the sound sync:
What I know is that when I use ShoutCast, the streams are off, but why? There are several buffers in the system that cause delay but I have no idea which would cause a significant difference in different computers.
There's the network delay which could be brought down significantly by forgeting about TCP and using UDP broadcast (or multicast if practical) to send just one packet to multiple clients on the LAN. Every computer would get the same real-time data within milliseconds of each other. It's also possible the network delay is just caused by the packets being too big.
There's the Winamp buffering delay. Here's an area where I'm really in the dark. Will faster computers buffer less, simply because they can? If so, if there's hooks within Winamp, it should be possible and not all that hard to sync the clocks on everyone's computer. Then you could simply have a massive buffer controlled by time.
Lastly, there's the sound card delay. If the time it takes for a sound packet to propagate through the card causes more than a half-second difference between cards, then I may just bail on this idea all together, because I can think of no generic way to sync everyone's sound card. That'd be a royal pain. The only hack I can think of is to calibrate your Winamp by listening to the room next to you and adjusting a delay till they sound okay and then hope they stay in sync.
So I'm looking for feedback. If you've tried to sync and know it's just about impossible to make perfect, please tell me and save me some time.
If it turns out it is possible...
In Winamp3, where's the hook to for a component to pull out the sound packet before it plays (and likewise where I can drop one in)?
Let me know if you'd like to help develop in this project. I have plenty more ideas that follow up syncing that would require more people if you want to see every feature before Winamp4:
sync each playlist
allow any computer to modify the playlist, and change songs
access permissions so that you and your roommates can change songs anywhere, but some drunk won't clear a massive playlist you set up.
keychain remote Winamp, so that you don't have to get off your lazy ass to skip a bad song or turn up the tunes.
Comment