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(640, 480);
minim = new Minim(this);
in = minim.getLineIn(Minim.STEREO, 1024);
fft = new FFT(in.bufferSize(), in.sampleRate());
}
void draw(){
colorMode(RGB, 255);
background(0);
fft.forward(in.mix);
noStroke();
colorMode(HSB, 360, 100, 100, 255);
for(int i = 0; i < fft.specSize(); i++){
float hue = map(i, 0, fft.specSize(), 0, 360);
fill(hue, 100, 100, 10);
float radious = fft.getBand(i) * 5;
ellipse(width/2, height/2, radious * 2, radious * 2);
}
}
void stop(){
in.close();
minim.stop();
super.stop();
}