A sound playground of your very own.
Holofunk is an improvisational way to make music with your voice and your body, almost like a symphony that you both create and conduct.
Holofunk integrates Kinect body tracking for gesturing, a Wiimote for clicking and picking, the BASS audio library for audio processing, an ASIO sound driver for low-latency recording, and XNA for a fast and attractive interface.
Go here to see it in action.
Current Features
- Low-latency pass-through of microphone audio.
- Squeeze Wiimote trigger to start a loop; release it to let the loop start running.
- Loops appear as colored circles, that throb according to the loop's volume.
- Loops are stretched (or slightly scrunched) to fit the current tempo, so everything syncs up.
- Press the Wiimote minus button and wave over sounds to mute them and turn them grey.
- Press the plus button and wave over sounds to unmute and re-colorize them.
- Press minus over a muted loop to delete it altogether.
- Press Home to wipe the slate clean and start again.
- Everything is recorded in real time to a .WAV file.
That's all it does now, but it's a decent start, and it's already fun to play with :-)
Background and Contact Info
For more background on Holofunk's inspirations and ambitions, see this blog post:
http://robjsoftware.org/2011/07/12/first-steps-on-the-road-to-holofunkiness/.
If you are interested in future developments, please consider joining the
Holofunk facebook group.
Click here to browse the latest source.
This project is licensed under the quite permissive Microsoft Public License, and I am very much seeking collaborators! The potential of this project is pretty near limitless, and it is just getting started.
In fact, it is so much just getting started that it currently uses various non-commercial components that I am not able to redistribute! So this is not yet a trivial project to get running. Not only that, but since multiple components in this
project are non-commercial, you (and I) are forbidden from selling or profiting from this project in its current form. You are hereby warned!
If you still want to try it, check out
the Setup and Playing instructions.
For a meta perspective, consider that Holofunk is a
synesthizer.
What's Next
Oh, basically an infinite number of things. Some obvious features that should be added:
- Ditching the microphone and Wiimote, and using Kinect gestures and the Kinect microphone array, for pure hands-free looping. (The latency issues here are serious, but it could be a fun mode for fooling around, even if it can't get as tight as the
additional hardware permits.)
- Selecting multiple loops with the A button.
- Multiple skins because not everyone likes hippy dippy rainbows :-D
- Pushing on the cross-pad to pick various effects (you name it -- volume, pitch shift, filters, compression, reverb, scratching...).
- Converting the loops to use an FFT-driven frequency display.
- Integrating the Kinect video stream so you see yourself, not just your shadow.
- Two-player support! (would be pretty straightforward, the Kinect Window SDK already supports it.)
- Gesture support -- warp your sounds with your body.
- Muting or otherwise effecting whole groups of sounds.
- Collapsing sounds together, or splitting them apart.
- Rendering multiple video outputs, one for the performer, one for the audience.
- Rewrite the sound callbacks in unmanaged code, to eliminate the occasional sound glitch caused by .NET garbage collection.
- Implement reusable sound buffers -- at this point, the amount of sound you could get into a single performance would be nigh limitless.
- Importing multiple sound sources, integrating other instruments, integrating MIDI, bringing in multiple visualizers.
- AND THEN SOME.
Also, Windows 8 will not support XNA for Metro style applications, and this would be a great Metro app, so that's another reason to move towards C++ (in addition to avoiding garbage-collection glitches, which was plenty enough reason already).
Now you can see why I'd love your help!