New recursive structure

June 26, 2007

The first song, ‘The Power of Independent Trucking’ by Big Black, the second, ‘Sporting Life’, by Young Marble Giants.

YouTube absolutely destroyed the quality. I’d recommend you watch it on Vimeo where it looks slightly better:

Render Test 2: Structure 2 from njmcgee on Vimeo

(Vimeo won’t embed in a wordpress.com hosted blog (and doesn’t look that good anyway). I’ll be thinking about a way to get better quality video embedded. Any ideas? Let me know.)

Best results so far with heavy rock music. Moments of real rhythm, and surprisingly dynamic visual response. The exponential relationship between element size and fft values allows individual legs to be simultaneously effected by their corresponding spectrum band with great effect. I will probably tone things down – reduce the number of elements and better control over the overall scale. Oh, and for some reason one of the legs gets stuck…

Thankfully, as I continue to bash out ‘programs’, complex visual outcomes I have not, or could not have planned are emerging.
As I tip toe towards generativity I’m wondering how to approach a ‘final’ piece – considering the unique movements, forms and reactions each time sketch is run.

Windowed Averaging

June 18, 2007

Recently I’ve been keeping things very simple – eight frequency bands driving all my graphics. My previous experiments used 64 bands, split into four groups of sixteen with Ess kindly working out the average for these groups. My past methods were based completely on event triggering – when a spectrum band peaks above its group’s average by a certain amount something happens.

I’ll definitely work a feature like this back into the mix. If tamed correctly it finds drum hits (particularly the snare) and highlights big dynamic changes really well.

For now, I’ve stripped things back to find more complex ways of interpreting these spectrum values. The plan is to have these always changing spectrum values controlling movement and speed. Turns out it’s quite tricky – even with audio dampening, getting smooth results will take a bit more work. Until then I’ve been thinking up ways to visually highlight structural change beyond a keyboard or time based trigger.

Here is St. Anthony’s Fire (the song I will be using, right click to download) split into eight frequency bands and averaged every 60 frames (two seconds). Not exactly a sexy piece of data visualisation I know but useful enough.

windowaverage
(right click to see a larger version)

The song is very heavy and a total mess of frequencies but windowed averaging has made the structural changes quite clear to the trained eye. I’ve circled the points in which I could set thresholds or even better link a windowed average to a particular variable to get a nice gradual transition rather than an instant shift. Hopefully I can give these six sections a completely different look/structure and provide smooth transitions to create a clip that’s always flowing and moving. Generative animation’s beauty is its capacity to provide output, shapes and movements beyond the programmer’s initial intention – visuals that are somewhat ‘alive’. I’d like to turn the visuals into a character of sorts, a complex and wild beast that twists, turns and changes with the music. Avoiding hard cuts and instant transitions will help the visuals to live and breathe.

Offline rendering

June 14, 2007

All my processing based AV experiments to date have been in real time. In preparation for my dissertation piece I thought I should get rendering. This post at the processing forums was immensely helpful. This Davbol fella has given many budding flight 404s a nice head start.

With Davbol’s structure –

progress();
analyze();
render();
store();
advance();

I worked in my still very rough leech code and had things working surprisingly quickly. At 320 x 240 it took over ten minutes to render about 3800 jpegs. Loaded the images into after effects, dropped in the audio and everything synced nicely.

Finally, I could see the sketch running smoothly but unfortunately after all that waiting, the problems that real time chunkiness were hiding became apparent. Everything was flashing and blisteringly fast so I had to slow down all my motion and increase the audio dampening to settle things down.

Whenever I make a programming breakthrough it seems inevitable that along with it comes a set of new tasks and a haunting and realistic vision of the workload ahead.

I’ll have to find a way to work in real time and with offline rendering. Real time for experimenting with new forms and structures and offline to fine tune values and variables. Sitting around and waiting for things to render just seems so strange and inefficient after a year and a half of playing with this stuff in real time. I guess its the price you pay for detail. Time to refine this leech code and get it reacting in a smooth and dynamic manner.