I had been wanting to do some sound driven animations and visualizers for a while but had always managed to put it off for one thing or another. I had looked at some options and ended up using ofxFFT addon by Kyle McDonald. After quickly looking through his example was able to create some of my own visuals and customize the visualizer settings at runtime. Below is the result of my first stable iteration :
The video allows you to see the animation http://vimeo.com/29234695
But how does it work? There are several options you can take for sound analysis. The simplest example would be the audio input example provided with openFrameworks 007 which provides you with stereo channels of audio and the scaled average.
But this wasn’t enough information. Sure both input channels and the average values are good starting point, but I wanted to be able to have bass control one animation, and have the higher registers control another graphic. I kept looking and came across this post on the openFrameworks forums, which detailed the ofxFFT addon created By Kyle McDonald ( http://kylemcdonald.net/ ) available here : http://code.google.com/p/kyle/downloads/list
This was a solution I could use! I looked at Kyle’s example and started to play. The addon uses FFT method or the Fast Fourier Transform. This process ( which is more detailed here : http://www.dspguru.com/dsp/faqs/fft ) allows a large set of data, like waveform sound data, into a smaller set of data which we can work with. One of the first issues I ran into was that lots of music I tested did not have a high range. I needed a way to limit my visuals to only work within certain ranges. Below you can see that the ranges of each circle animation are clearly marked making it easy to setup on site, tweak settings to music, and save them for the show.
Through testing I found that classical music like Gustav Holst : http://grooveshark.com/s/Mars+The+Bringer+Of+War/1t79vR?src=5 or Dubstep such as Dodge +& Fuski : http://grooveshark.com/s/Guettastep/3Hi4WY?src=5 worked really well for testing out sound and ranges. Rock and pop seemed to be very limited to the bottom register. This is just a first iteration but I’ll continue to work on it and improve the tool. I included project files and tested it for CodeBlocks on Windows and xCode on OSX Snow Leopard. All the source code is available on my github at : https://github.com/benMcChesney/ofFFtPlayground