Interective Audio Visualizer

This is one of my undergraduate projects done in University of Seoul in 2003. I made interactive 2D animation engine using thread control and double buffering in Java. It has also a drop frame function, so if CPU cannot handle too many graphics elements, it skips some frames, so it can be accurately synchronized with audio. I used Java 2D graphics API for some image processing function such as "blur", so Java 2 plug-in is required.



reset . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 . 20 . 21

Java 2 Plug-in download for Windows or others

I like watching an audio visualizer of Win-Amp or iTune. Sometimes it’s so beautiful, so I loose myself and just keep watching it. I thought if I could add some interactivity to them, it would be even more interesting. Also at that time, I had just learned some programming languages (Java, PHP) and Data Structure and Algorithm, so I wanted to try something interesting with my new tech. As a graphic design collage student, learning programming was not usual, but I think it really enlarged the area of my expression.

I wanted to use audio amplitude to move particles and draw lines. I looked at Java multimedia api and check every possible way, but I found it’s not so easy. It’s pretty simple to play music or control volume. However, to get audio amplitude, I needed to write my own audio file format decoder. Well, finally I couldn’t do that. Instead, I used little dirty method. First, I made a sequence of very small images whose brightness represents audio amplitude using Adobe After Effects in which we can connect audio amplitude to any attribute of image. Then, I converted those images to Java array code using PHP image function, so each applet includes audio amplitude data in its code, which means if I want to use long music, the applet file size gets larger. It’s not good, but I thought it’s ok for this project, and I didn’t have any better solution. Actually few month later, after I finished this project, I found there was a better solution if have used Processing with a plug-in.

For this 2D particle system, I used Linked List data structure which is more efficient then Array when the number of particles has to continuously change, and especially the maximum number of particles is not decided.