0
我试图创建一个长片段的音频,这是一个记录音频剪辑的集合,在时间上合并成一个大型声音拼贴。我正在使用Minim音色库,但目前我很难将此工作。这与我的编程技巧完全相同,但我认为这将是一项非常简单的任务! I:它的工作方式与Minim的示例文件夹中的'RecordAndPlayback'完全一样,但是通过自动完成点击触发事件。音频循环Processing.org(Java/Minim声音库)
这里是我到目前为止的代码:
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();
}
请任何帮助将非常欢迎,因为这是推动我疯了!
感谢
丹尼尔