For my first post, I figured I’d tackle the topic of my process much like Robert Hodgin did with his post.
One of the hardest things about creating anything just for the fun of it is having an idea about what you want to create. That blank void can sometimes be the most demoralizing thing in the world. For me, thinking of something to create comes after I’ve already started creating. When I’m programming for the fun of it, I just start doing something – anything – and it leads somewhere. Sure, many times it leads to the Trash, but sometimes it doesn’t and that’s all I need.
I draw a lot of inspiration from the music I listen to on a day to day basis, so it’s been folded into my creations. I’m inspired by the absolutely stunning work of everyone in my Blogroll so I learn from what they’ve done and then apply what I can to my creations as well. The knowledge and inspiration we need to create doesn’t have to be, and shouldn’t be, entirely internal. Go out and look for what peaks your interest, use it as a jumping off point and see where you end up.
Many times when I start creating anything, I’ll start in Processing. It’s simple, effective, quick, and has the full weight of Java behind it making it extremely capable. Now, I work with Actionscript 3.0 all day long, so why wouldn’t I use that and create Flash content? For my purposes, they have largely the same capabilities although the implementation differs. I use Processing because both the 2D and 3D renderers are faster and it supports OpenGL should I choose to do 3D work. I could easily start in Flash or Flash Builder instead. The point is for you to pick whatever you’re comfortable with and start there. If you’re just starting and looking for ideas about what to use, Keith Peters has a post about what he uses and what’s available.
So, I open up Processing and create a new Sketch. I usually set it up with the default code:
import ddf.minim.*;
Minim minim;
AudioPlayer player;
void setup()
{
size( 1024, 768, OPENGL );
colorMode( RGB, 1.0 );
background( 0.0 );
smooth();
frameRate( 30 );
minim = new Minim( this );
player = minim.loadFile( "pathToAudio.mp3" );
player.loop();
}
void draw()
{
}
void stop()
{
player.close();
// Delays cause harsh buzzing upon
// quitting the app to disappear
delay( 50 );
minim.stop();
delay( 50 );
super.stop();
}
This sets me up with a 1024 x 768px window with a black background that will load and loop an audio file. The colorMode has been set to conform to the OpenGL color values set. Almost everything I create is, at least in part, driven dynamically by the audio behind it so this is how I choose to set up.
From there, I usually create anything, anything at all, that will interact with the audio. Usually, I start by just using amplitude data from the audio, but as the Sketch progresses I usually switch over to using FFT (Fast Fourier Transform) data which allows me to view the audio in bands from low to high. Everything else just comes and goes.
I don’t aim for a deadline, I don’t aim for perfection, I just aim to create. Once I’ve got the ball rolling I keep going, testing often and judging solely by the mantra, “Does this look cool?”. I usually try to keep in mind things like interactivity and what I perceive to be the theme of the audio I’ve chosen, but those don’t always make the cut. These aren’t serious projects, so I don’t take them too seriously – I just go with the flow of it all.
I don’t want to be a bad influence on anyone, so do keep in mind that this is just how I work for my fun time. With real projects, I take a much, much different approach. The point of this post is just for you to see that programming as a form of art can be fun and fulfilling.
Keep an eye out for my next post in which I’ll go over how my creation process evolved into an interesting little audio visualizer.