Recording
in
Core Library Questions
•
2 years ago
My project is related to sound, recording and playback the recording.
Every time I record a sound the sound is saved but when I try to record another sound there is not a new recording file but the second sound is saved in the first recording file.
Another thing that I want to achieve is to save the one recording file above the other (blended-merge sounds)
How can I achieve that?
This is what I have done so far:
/**
* Record Line In
* by Damien Di Fede.
*
* This sketch demonstrates how to an <code>AudioRecorder</code>
* to record audio to disk. To use this sketch you need to have
* something plugged into the line-in on your computer. Press 'r'
* to toggle recording on and off and the press 's' to save to disk.
* The recorded file will be placed in the sketch folder of
* the sketch.
*/
import ddf.minim.*;
Minim minim;
AudioInput in;
AudioRecorder recorder;
int counter;
AudioSample kick;
String filename;
void setup()
{
size(512, 200, P2D);
textMode(SCREEN);
counter = 5;
filename = "myrecording" + counter + ".wav" ;
minim = new Minim(this);
// get a stereo line-in: sample buffer length of 2048
// default sample rate is 44100, default bit depth is 16
in = minim.getLineIn(Minim.STEREO, 2048);
// create a recorder that will record from the input to the filename specified, using buffered recording
// buffered recording means that all captured audio will be written into a sample buffer
// then when save() is called, the contents of the buffer will actually be written to a file
// the file will be located in the sketch's root folder.
recorder = minim.createRecorder(in, filename, true);
textFont(createFont("SanSerif", 12));
}
void draw()
{
//counter = counter + 1;
//filename = "myrecording" + counter + ".wav" ;
background(0);
stroke(255);
// draw the waveforms
// the values returned by left.get() and right.get() will be between -1 and 1,
// so we need to scale them up to see the waveform
for(int i = 0; i < in.bufferSize() - 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);
}
if ( recorder.isRecording() )
{
text("Currently recording...", 5, 15);
}
else
{
text("Not recording.", 5, 15);
}
}
void keyReleased()
{
if ( key == 'r' )
{
// to indicate that you want to start or stop capturing audio data, you must call
// beginRecord() and endRecord() on the AudioRecorder object. You can start and stop
// as many times as you like, the audio data will be appended to the end of the buffer
// (in the case of buffered recording) or to the end of the file (in the case of streamed recording).
if ( recorder.isRecording() )
{
recorder.endRecord();
}
else
{
recorder.beginRecord();
}
}
if ( key == 'k' ) kick.trigger();
if ( key == 's' )
{
// we've filled the file out buffer,
// now write it to the file we specified in createRecorder
// in the case of buffered recording, if the buffer is large,
// this will appear to freeze the sketch for sometime
// in the case of streamed recording,
// it will not freeze as the data is already in the file and all that is being done
// is closing the file.
// the method returns the recorded audio as an AudioRecording,
// see the example AudioRecorder >> RecordAndPlayback for more about that
recorder.save();
counter = 10;
filename = "myrecording" + counter + ".wav" ;
println("Done saving.");
//in.close();
//kick.trigger();
//kick = minim.loadSample(filename, 2048);
}
}
void stop()
{
// always close Minim audio classes when you are done with them
in.close();
minim.stop();
super.stop();
}
Thank you,
I
1