// Example by Krister Olsson
import krister.Ess.*;
AudioStream myStream;
AudioInput myInput;
boolean inputReady=false;
float[] streamBuffer;
void setup() {
size(256,200);
background(0,0,255);
// start up Ess
Ess.start(this);
// create a new AudioInput
myInput=new AudioInput();
// create a new AudioStream
myStream=new AudioStream(myInput.size);
streamBuffer=new float[myInput.size];
// start
myStream.start();
myInput.start();
}
void draw() {
stroke(255,10);
// overlay an average of the samples in the input buffer
float inc=myInput.buffer.length/256.0f;
for (int i=0;i<256;i++) {
int y=(int)(100+myInput.buffer[(int)(i*inc)]*100);
line(i-200,y-200,i+200,y+200);
}
}
void audioStreamWrite(AudioStream theStream) {
// block until we have some input
while (!inputReady);
System.arraycopy(streamBuffer,0,myStream.buffer,0,streamBuffer.length);
inputReady=false;
}
void audioInputData(AudioInput theInput) {
System.arraycopy(myInput.buffer,0,streamBuffer,0,myInput.size);
inputReady=true;
}
// we are done, clean up Ess
public void stop() {
Ess.stop();
super.stop();
}
|