我正在尝试在 JSyn 中编写一个循环站程序,灵感来自类似的东西。这个想法是,我可以录制到 Wav 文件并从程序中播放它们。在我尝试同时对多个文件执行此操作之前,这一直很好。我该如何处理?我无法创建多个合成器引擎,否则会出现错误,因此我创建了一个带有线路输出和合成器的类。但是如果音频只在合成器休眠时播放,我怎么能同时播放多个文件呢?
System.out.println("queue the sample");
samplePlayer.dataQueue.queue(sample);
System.out.println("queued the sample");
// Wait until the sample has finished playing.
do {
mySynth.sleepFor(1); //synth has to sleep while sample is being played
} while (samplePlayer.dataQueue.hasMore()); //this seems to always return true -> synth never wakes up & the program crashes
这改编自 JSyn 库中包含的示例。我的大部分代码都是基于JSyn Programmer's Guide
这就是 GUI 的样子(用 Java Swing 编程)。它响应鼠标和小键盘。这行得通。
我的输出类的构造函数。这包含合成器和线路输出。
public OutputMix() {
filePath = sampleMachineFrame.filePath; //string containing path to location for sample files
mySynth = JSyn.createSynthesizer();
myLineOut = new LineOut();
mySynth.add(myLineOut);
recorder = new RecordMic[10]; //one recorder for each button (my own class)
player = new PlayFromWav[10]; //one player for each button (my own class)
}
录音工作非常好。我什至可以开始重叠录制(即一次录制到两个文件)并使用外部程序播放它们。但是当我尝试播放它们时,合成器永远不会醒来,我也在努力想象如何一次播放多个文件。谢谢你的帮助 :)