import ddf.minim.*; import ddf.minim.analysis.*; import peasy.*; import processing.opengl.*; import javax.media.opengl.*; final boolean REVERSECOLOR = false; OctInterface iTree; ArrayList leaves; PeasyCam cam; // Handi-Cam Camera eye; // Auto-Cam GameTime gameTime; Timer colorTimer; // +------------------------------------+ // SOUND AudioPlayer player; Minim minim; FFT fft; BeatDetect beat; void setup() { InitPalettes(); //size( 1680, 1050, OPENGL ); size( 645, 645, OPENGL ); noStroke(); fill( 255, 255, 255, 20 ); OctTree tree = new OctTree(5, 200); iTree = new OctInterface ( tree ); leaves = tree.GetLeafNodes(); cam = new PeasyCam(this, 500); cam.setMinimumDistance(200); cam.setMaximumDistance(600); eye = new Camera(); glSetup(); gameTime = new GameTime(); colorTimer = new Timer( 10000 ); iTree.AssignColors(); minim = new Minim(this); player = minim.loadFile( GetSong(), 2048); player.play(); fft = new FFT( player.bufferSize(), player.sampleRate() ); fft.logAverages(22, 400); fft.window(FFT.HAMMING); beat = new BeatDetect( player.bufferSize(), player.sampleRate() ); } void draw() { gameTime.Update(); colorTimer.Update( gameTime.Delta ); fft.forward( player.mix ); beat.detect( player.mix ); eye.Update( gameTime ); glDraw(); background( (REVERSECOLOR) ? 255 : 0 ); iTree.Update( gameTime ); for( int i = 0; i < iTree.Register.length; ++i ) { iTree.Register[i].Tap( fft.getAvg(i % fft.avgSize()), gameTime.Delta); } if ( beat.isKick() ) { eye.Kick(); } if( beat.isHat() && colorTimer.IsDone() ) { colorTimer.Reset(); iTree.AssignColors(); } eye.Apply(); iTree.Draw( gameTime ); } void stop() { player.close(); minim.stop(); super.stop(); } // OPENGL Stuffs PGraphicsOpenGL pgl; void glSetup() { pgl = (PGraphicsOpenGL) g; } void glDraw() { pgl.beginGL(); pgl.gl.glDisable(GL.GL_DEPTH_TEST); pgl.gl.glEnable(GL.GL_BLEND); pgl.gl.glBlendFunc(GL.GL_SRC_ALPHA,GL.GL_ONE); if ( REVERSECOLOR ) { pgl.gl.glBlendEquation(GL.GL_FUNC_REVERSE_SUBTRACT); } pgl.endGL(); }