如何确保RecordToSample正确写入Java Beads中的样本?
我正在使用Java音频库。我正在尝试修改第7个教程文件,以非实时模式录制声音,并将声音写入文件。我是通过使用如何确保RecordToSample正确写入Java Beads中的样本?,java,audio,audio-recording,Java,Audio,Audio Recording,我正在使用Java音频库。我正在尝试修改第7个教程文件,以非实时模式录制声音,并将声音写入文件。我是通过使用RecordToSample类来实现的。但是,当我尝试将样本写入文件时,RecordToSample看起来并没有实际将任何数据写入样本-写入的文件只是几秒钟的静默,这取决于我初始化样本时使用的缓冲区的长度,而不是记录的长度 这就是我到目前为止所做的: public class Lesson07_RecordToSample { public static void main(St
RecordToSample
类来实现的。但是,当我尝试将样本写入文件时,RecordToSample看起来并没有实际将任何数据写入样本-写入的文件只是几秒钟的静默,这取决于我初始化样本时使用的缓冲区的长度,而不是记录的长度
这就是我到目前为止所做的:
public class Lesson07_RecordToSample {
public static void main(String[] args) {
final AudioContext ac;
ac = new AudioContext();
/*
* I added this code
*/
final Sample sample = new Sample(10000D);
final RecordToSample recorder = new RecordToSample(ac, sample);
Clock clock = new Clock(ac, 700);
clock.addMessageListener(
//this is the on-the-fly bead
new Bead() {
// snip
/*
* I added this code
*/
if(c.getCount() == 70) {
Sample sample = recorder.getSample();
try {
sample.write("audio/song.wav", AudioFileType.WAV);
} catch (IOException e) {
e.printStackTrace();
}
ac.stop();
}
}
}
);
ac.out.addDependent(clock);
/*
* I changed this line
*/
ac.runNonRealTime();
}
public static float random(double x) {
return (float)(Math.random() * x);
}
}
这将在audio/song.wav创建一个新文件,但该文件仅包含10秒的静默时间。在我看来,记录器实际上并没有改变样本中的任何数据,而在写入样本时,它只使用了我初始化样本时使用的10000毫秒的空数据
我一直在浏览Beads库的文档,似乎没有任何方法可以强制RecordToSample将其数据推送到其样本中。什么是确保我用RecordToSample记录的数据正确写入样本的正确方法?您能提供一个简短的代码示例吗?我也在寻求有关Beads项目Google Group的帮助:Beads项目中现在有一个教程,介绍如何使用
RecordToSample
: