For the last few years, my roommates and I have hosted costumed dance
parties every Halloween weekend. This year, we decided to add a twist by
allowing guests with smart phones to take part in remixing the music
while they dance!
To accomplish this, I built a web server in node to serve a web page with some simple
controls with the most common remixing tasks - a knob to filter high and
low frequencies, an X-Y pad to create stutter effects, and most
critically, a button to sound the all important air-horn. These controls
were adapted from a jQuery plug-in called jQuery-kontrol
by GitHub user aterrien
.
Each browser control (i.e., knob, pad, or button) communicated over
WebSockets (via socket.io) to the
server, which then translated the message into an OSC message, which was in turn
sent to the effects hosted in the DJ software. Changes to the positions
of the controls were broadcast to all other clients via WebSockets so
that guests could watch as others moved the controls. Also, UDP messages
were sent from the server to an Arduino that my roommate Tamas programmed with
amazing lighting effects.
We printed QR code posters linking to the public URL of the site, and
included a simple password authorization lest mischeivous internet users
stumble upon the site. I was impressed with the responsiveness of
websockets over the internet: latency was low enough for the remixing
tools to be a lot of fun.
Code for the project is available on GitHub
under the CC0 license, and while it probably won't be directly
applicable for your project, I hope it can serve as starting-off point
for similar parties.