We wanted to play music at HackTX, but puny laptop speakers can't fill a five-star hotel. A legion of microspeakers, however... a first estimate puts around a couple thousand devices in the area.

What it does

Thunderfly - syncing multiple audio devices like fireflies do light - is a web application. A host starts a lobby of sorts, can select an MP3 song hosted elsewhere on the internet, and is given a 5-letter code to share. Any other device with the code is synced to the main server. At the host's command, magic happens, and all devices begin to play the same song, in sync, for maximum decibels.

How we built it

A Flask application runs on a Heroku instance. It serves HTML/Javascript/CSS to each client. The host and every other device client communicate only with the Flask server.

Challenges we ran into

Javascript timing is, um, poor. After hours of work, we still can't get audio start deltas within more than a second or so, which means there will always be some disharmony in the orchestra. Ah, well. Oh, Javascript...

Accomplishments that we're proud of

On the other hand, we can generate some pretty big decibels.

What we learned

Um, how to build web apps. First time for both of us. And Javascript sucks.

What's next for Thunderfly

Commercialization! (nah. It'll be on GitHub for the next interested party to take on)

Share this project: