このようなものに触発されたJSynでloopstationプログラムをプログラムしようとしています。アイデアは、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)
}
録音はまったく問題なく動作します。オーバーラップ録音 (一度に 2 つのファイルに録音) を開始して、外部プログラムで再生することもできます。しかし、それらを再生しようとしても、シンセサイザーが起動せず、複数のファイルを一度に再生する方法を想像するのにも苦労しています。ご協力いただきありがとうございます :)