// Example by Krister Olsson
import krister.Ess.*;
AudioStream myStream;
SineWave myWave;
boolean recording=false;
AudioFile myFile;
int bytesWritten;
void setup() {
size(256,200);
// start up Ess
Ess.start(this);
// create a new AudioStream
myStream=new AudioStream();
// our wave
myWave=new SineWave(240,.33);
// our AudioFile
myFile=new AudioFile();
// we wont be recording that much, so set our buffer
// grow size to two seconds
//
// outputBufferGrowSize can be set to the estimated
// size of sample data being stored in the file
myFile.outputBufferGrowSize(myStream.frames(2000));
// start
myStream.start();
}
void draw() {
}
void audioStreamWrite(AudioStream theStream) {
// next wave
myWave.generate(myStream);
// adjust our phase
myWave.phase+=myStream.size;
myWave.phase%=myStream.sampleRate;
// record
if (recording) {
myFile.write(myStream);
bytesWritten+=myStream.size*2;
}
}
void keyPressed() {
if (recording) {
// stop
myFile.close();
println("Finished recording. "+bytesWritten+" bytes written.");
} else {
// start
myFile.open("out.aif",myStream.sampleRate,Ess.WRITE);
bytesWritten=0;
println("Recording started.");
}
recording=!recording;
}
// we are done, clean up Ess
public void stop() {
Ess.stop();
super.stop();
}
|