Audio Visualizers (2020)
Sound-reactive animation is my useless superpower.
I’ve always loved graphics programing, and I’ve always loved music. I’ve been making these animations over the years to add some visual appeal to my shows. (Not that I play many shows these days…) All these animations respond to incoming audio, and can run in real time on a Raspberry Pi. Then I can throw the Pi in my bag and set it up at a gig if the venue has a projector. Running the animation on the Pi also keeps my music computer free to focus on audio stuff.
It’s also a fun challenge to work on limited hardware!
I don’t like to just draw an FFT or an oscilloscope. Instead, the audio thread identifies “events” in the audio that correspond to musical features. Those events are tossed over to the animation thread, which then incrementally modifies the behavior of the animation entities.
I won’t go into too many tech details here, but I’ve built up quite a toolbox of tricks for this stuff; maybe I’ll write some of them up one day.
Discogrid
The first, and the simplest, but it looks cool.
Flower
I tried to make an animation that pushes nearly all the work onto the GPU.
Honeycomb
One of my favorites! One one level it’s basically Discogrid but with hexagons. But the hexagonal shape suggests slightly different motion concepts, which generate some lovely patterns.
Gravity
The idea I had here is that blocks would stack up on top of each other, and eventually slide down under their own weight. This one doesn’t totally come off; it’s ok, but it’s not really any more visually interesting than Discogrid, despite being more complex.
Cubes
Do you remember La Roux? (She’s still making music!) This animation was pretty directly inspired by the music video for “Bulletproof”:
Bubbles
My attempt to do something a little more fluid. The bubbles push against each other, which creates interesting dynamics.
Portal
This one was loosely inspired by the final episode of the Netflix show “Dark.” It’s based on a particle system, and it’s the only animation (so far) that does the bulk of the work in the vertex shader.