Я пытаюсь создать длинную часть аудио, которая представляет собой коллекцию записанных аудиоклипов, которые со временем сливаются в один большой коллаж звуков. Я использую звуковую библиотеку Minim, но на данный момент мне нелегко заставить это работать. Это работает точно так же, как мои навыки программирования довольно простые, но я думал, что это будет очень простая задача! Я: ant, чтобы он работал точно так же, как «RecordAndPlayback» в папке примеров Minim, но чтобы события были инициированы кликами, выполненными автоматически.Audio Loop Processing.org (Java/Minim sound Library)
Вот код, который я до сих пор:
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();
}
Пожалуйста, любая помощь будет очень приветствуется, поскольку это сводит меня с ума!
Благодаря
Daniel