Just finished a simple Processing sketch for the Processing Monsters project by Lukas Vojir. He invited Processing developers to create and share (source code included) little black-and-white, mouse reactive monsters — there are some cool entries already, go check them out.
Jaded Afghan is one of the best tracks on their 2007 album This Is The New and also a song well suited to my beat detection algorithm (based on this gamedev.net article — look for “frequency selected sound energy algorithm #2”).
Inspired by this thread (especially comments from Chris O’Shea and Dave Bollinger), this Processing sketch has two modes: capture and render. In capture mode, there’s audio playback, FFT analysis and beat detection — the resulting data is saved to a text file. In render mode, there’s no audio: all data is retrieved from the text file and PNG still frames are rendered. It took approximately 1h30 to render the 6779 frames for this video, at 800×450 pixels, 24FPS. The movie file with audio was assembled in Adobe Premiere.
It’s highly recommended to download the original 170MB Quicktime file — the link is at the bottom of the page, below “Statistics”. A Vimeo account is required, but it’s free.
The song is Second Trace by Filipino band Moscow Olympics, from their recently released debut album Cut The World. Although the band’s musical references are clear (post-punk, shoegaze), their music has that ineffable quality that makes it stand out.
It seems that computing a Voronoi diagram with mathematical accuracy for a real-time animation is not really feasible. I found this Processing hack that takes advantage of graphic acceleration to draw an approximate Voronoi diagram. It works by drawing 3D cones at the points of interest of the diagram and rendering a top view — the regions are drawn automatically as the Voronoi edges sit on the intersections between the cones.
Using this hack, it is possible to make a real-time Voronoi diagram animation, albeit with a limited number of points and a restricted applet area. This video was rendered with 364 particles (= sum of powers of 3 from 0 to 5).