It can get very irritating when going around the house jamming to your favorite mix only to hear your music fade away. We brainstormed possible solutions and existing solutions and recognized that everything that existed was forced to a specific operating system or costed a large amount of money. With this tool we were able to successfully have the same track broadcast across multiple operating systems to create one coherent speaker.
How it works
BeatSync is a multi part program branching into many languages to create an overall product. We use a node backend as the core executor, a custom python server for providing song streaming and a searching API. The front end uses an angular base with a custom bootstrap theme to give it its style. Finally, all come together using python libraries to synchronize the clients and server.
Challenges I ran into
The major challenge we ran into was with ensuring that all of the streams were synchronized. Even a minute difference in timing could have a significant affect on the overall product.
Accomplishments that I'm proud of
We are the most proud of the fact we were able to pull of a huge feat that required a lot of dedication. Clock syncing to make multiple computers that can function as one large speaker required a lot of networking knowledge and prior research before we were able to begin coding.
What I learned
There was a lot each team member learned from the project. Brandon, one of the python devs, learned how to integrate several API servers to create an overall song search algorithm and streamer service. Sadat, another python dev, learned how to implemented several different networking protocols to create a efficient streaming service. Victor, the front-end dev and node dev, learned how to synchronize clients and servers to create a speaker that plays in unison over the internet.
What's next for BeatSync
We plan on making this an actual service people can use for recreational events, gatherings and personal use. We also plan on adding the ability to create multiple playlists and import their existing playlists from other services. Finally, we would like to port our User Interface to mobile so we can support a wider range of devices.