Inspiration
The theme for PennApps XVII is "retro," so we decided to dive head first into all things neon, funky, analog, and furby. We created the ultimate hyperstylized interactive jukebox. You're welcome, dad.
What it does
FunkBud not only plays some of the greatest hits of bygone decades, but allows anyone to seize control of one of its virtual instruments for a live jam session using any mobile device. Get groovy with a group of friends or strangers - whoever you funk with, satisfaction and algebraic vibes are guaranteed.
How we built it
We sampled a number of live and synthesized instruments from Ableton, mapped the key ranges and MIDI data to javascript-friendly format, and used socket to allow anyone to access a simple URL to take control of one of FunkBud's instruments. Don't worry, if you're prone to stage fright there's always autopilot.
Challenges we ran into
We really wanted to make something that gushed a 90's aesthetic - it turns out, combining that objective with an ultra-slick user interface wasn't so easy at first (but boy oh boy did we figure it out). Also, we actually arranged every single song from scratch - we practically wrote an entire interactive/manipulable album for this baby. Of course, there were the usual challenges like reducing latency at countless points even outside of interfacing our hub and controllers through socket.
Accomplishments that we're proud of
The visuals on this thing are pretty insane if we do say so ourselves. Also, the instruments are actually sampled from either live/analog instruments or professional-grade synthesizers - plus it's so intuitive, even a toddler could rock out on it (but for the musically oriented, there's plentiful room for juicy riffs and expression).
What we learned
Vanilla javascript can't keep (precise) time for its life - a toast to fantastic libraries yet again.
What's next for FunkBud
Automated song transcription and louder speakers (obviously).
Built With
- ableton-live
- adobe-illustrator
- express.js
- html5
- node.js
- socket.io
- webaudio-api


Log in or sign up for Devpost to join the conversation.