I'm trying to create a long piece of audio which is a collection of recorded audio clips that are, in time, merged into one large collage of sounds. I am using the Minim sound library, but at the moment I'm having a hard time getting this to work. This works exactly the same as My programming skills are fairly basic but I was thinking this would be a very easy task! I :ant it to work just exactly as the 'RecordAndPlayback' in the examples folder of Minim but to have the events triggered by clicks done autonamously.
Here's the code I have so far:
import ddf.minim.*;
Minim minim;
AudioInput in;
AudioRecorder recorder;
AudioPlayer player;
Timer timer;
class Timer {
int savedTime; // When Timer started
int totalTime; // How long Timer should last
Timer(int tempTotalTime) {
totalTime = tempTotalTime;
}
// Starting the timer
void start() {
// When the timer starts it stores the current time in milliseconds.
savedTime = millis();
}
// The function isFinished() returns true if 5,000 ms have passed.
// The work of the timer is farmed out to this method.
boolean isFinished() {
// Check how much time has passed
int passedTime = millis()- savedTime;
if (passedTime > totalTime) {
return true;
} else {
return false;
}
}
}
void setup()
{
size(512, 200, P3D);
textMode(SCREEN);
minim = new Minim(this);
timer = new Timer(5000);
timer.start();
in = minim.getLineIn(Minim.STEREO, 2048);
recorder = minim.createRecorder(in, "myrecording.wav", true);
textFont(createFont("Arial", 12));
}
void draw()
{
background(0);
player = minim.loadFile("myrecording.wav");
player.play();
player.loop();
//GUI
stroke(255);
for(int i = 0; i < in.left.size()-1; i++)
{
line(i, 50 + in.left.get(i)*50, i+1, 50 + in.left.get(i+1)*50);
line(i, 150 + in.right.get(i)*50, i+1, 150 + in.right.get(i+1)*50);
}
//-- end of GUI
//recorder switching
if (timer.isFinished())
{
text("not..", 5, 15);
if(recorder.isRecording() == true){
recorder.endRecord();
recorder.save();
timer.start();
}
}else
{
text("recording...", 5, 15);
recorder.beginRecord();
println(recorder.isRecording());
}
///--- end recorder switching
}
void stop()
{
// always close Minim audio classes when you are done with them
in.close();
if ( player != null )
{
player.close();
}
minim.stop();
super.stop();
}
Please any help would be much welcomed as this is driving me mad!
Thanks
Daniel
You seem to handle only one file and you're not loading what you're recording.
If you want to toggle recording on and off you could use a boolean to keep track of than, then save what was recorded.
Here's a basic sketch using the modified sample:
If, for some reason you want to save each recording to a separate file, rather one, you could use some integers to hold the id of recording and the playing sample.
Goodluck !