Music is supposed to bring to people together, not drive them apart. In that spirit, we created a working app called UniSound that lets users easily send songs to the group speaker system,where they are ranked them in real time to generate a playlist that flows well and satisfies more people.

What it does

Hosts can create a party playlist at by clicking host and generating a special code. Others can click join and enter the code, letting them browse the Spotify music library and send selections to the host. UniSound uses a weighting ranking system, which the host can customize, to create a more harmonious playlist.

How we built it

We created UniSound with the new Spotify Web API, which is a little over a year old, in order to query Spotify's vast music library. The app converts the Spotify models into client-side objects (object-oriented javascript, indeed!) that carry out operations and calculations. Firebase provides the server-side, tracking the songs, participants, and mood of musical hangouts through objects we affectionately call, "jukeboxes."

Challenges we ran into

Spotify takes full advantage of its dual nature as a desktop application and web browser application, and using its API at first made our app unfriendly to non-Spotify users (the vile Pandora worshipers) and mobile devices. Since we don't want those groups to be left out of a fun party, we used the API to call 30-second song samples as MP3 files that can be played in more browsers and devices. Thankfully, for the browsers and devices that don't support audio players, all a group needs is one device/speaker pair in order to start rocking their beats!

Accomplishments that I'm proud of

Chloe, for designing the gorgeous graphics that make up UniSound's unique brand. Matt and Yongzheng for learning how to serve databases with Firebase literally overnight in order to bring the app to life. Matt for an admirable performance in the WUHacks cornhole tournament. Vinesh for connivingly devising a scheme to replace Spotify's song players with nicer, custom UIs. And everyone for struggling with OAuth tokens that conspired to expire at precisely the most inconvenient times.

What I learned

Firebase is beautiful. JavaScript does not care about your agenda. When you need the answer to a question so troubling that it didn't even make it onto StackOverflow, you will find it in the depths of the internet where some other kind soul has posted precisely the question you were wondering about... only to discover that that person forgot to respond when a respondent asked for more details.

What's next for UniSound

Coming soon...

Share this project: