import krister.Ess.*; Pulser[] pulsers = new Pulser[4]; Player pl; AudioFile daft; AudioStream out; FFT analysis; void setup() { size(400, 400); noCursor(); rectMode(CENTER); framerate(24); noSmooth(); pl = new Player(width/2, height/2, 5, 3); // x, y, r, fd, pa, c pulsers[0] = new Pulser(50, 70, 25, 50, 1.5, color(255, 0, 0)); pulsers[1] = new Pulser(150, 90, 20, 40, 1.5, color(255, 0, 0)); pulsers[2] = new Pulser(45, 300, 15, 30, 1.5, color(255, 0, 0)); pulsers[3] = new Pulser(234, 300, 10, 20, 1.5, color(255, 0, 0)); // bins, averages initEss(256, 16); } void draw() { background(0); analysis.getSpectrum(out); // println("Frame: " + frameCount); for (int i = 0; i < pulsers.length; i++) { // println(" Average " + i*4 + ": " + analysis.averages[i*4]); if ( analysis.averages[i*4]*100 > 50 - i*10) pulsers[i].pulse(); pulsers[i].update(); pulsers[i].render(); } pl.render(); } void keyPressed() { if ( key == CODED ) { pl.move(); } else { if ( key == 'a' ) pl.speedUp(); else if ( key == 's' ) pl.slowDown(); } } void initEss(int bins, int avgs) { Ess.start(this); daft = new AudioFile("hbfs.mp3", 0, Ess.READ, Ess.MIX); out = new AudioStream(128*1024); out.sampleRate(daft.sampleRate); out.start(); analysis = new FFT(bins); analysis.equalizer(false); analysis.limits(); analysis.damp(0.8); analysis.averages(avgs); } void audioStreamWrite(AudioStream theStream) { // read the next chunk int samplesRead = daft.read(out); if (samplesRead == 0) { // start over daft.close(); daft.open("expedition.wav", out.sampleRate, Ess.READ, Ess.MIX); samplesRead = daft.read(out); } } public void stop() { Ess.stop(); super.stop(); }