download for fun
download file. unzip said file. make. run fft. enjoy!
ripple is a way to visualize an audio stream ripples eminating out from the center of a technorainbow puddle.
you can adjust the number of ripples, the gain(/decay) of each ripple, and how the frequency bins of the fft are spread around the circle (watch out!!). to see the full usage, run: fft -h .
to create the surface, i create a "ring" for each fft buffer in the x and z planes. the y values correspond to the magnitude of the fft bin at that frequency. as time flows forward, a given fft buffer moves from the center toward the edge. this is acheived by increasing the radius of the ring associated with that buffer. i scale the y-values of each fft buffer by values from a sine wave to produce a rippling effect. the 3-d surface arises from drawing lots and lots of triangle between successive points using GL_TRIANGLE_FAN .
i also created a class called MyColors that is used to generate a continuous rainbow of colors in HSV values and convert them to RGB values. i pulled most of this code straight from here.