import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*;
Minim minim;
AudioInput in;
FFT fft;
void setup(){
size(513, 513);
minim = new Minim(this);
in = minim.getLineIn(Minim.STEREO, 1024);
fft = new FFT(in.bufferSize(), in.sampleRate());
colorMode(HSB, 360, 100, 100);
background(240, 100, 100);
}
void draw(){
fft.forward(in.mix);
loadPixels();
for(int x = 0; x < width; x++){
for(int y = 0; y < height; y++){
if(x < width - 1){
pixels[y * width + x] = pixels[y * width + x + 1];
} else {
float hue = 240 - fft.getBand(height - 1 - y) * 30;
if(hue < 0) hue = 0;
if(hue > 240) hue = 240;
pixels[y * width + x] = color(hue, 100, 100);
}
}
}
updatePixels();
}
void stop(){
in.close();
minim.stop();
super.stop();
}