2009-04-17 13 views
0

ToneMatrixという本当にクールなオーディオ「おもちゃ」があります。私はそれをJavaアプレットとして再実装したいと思います。私はJFugueplayer.playをサウンドのための個々の音符とタイミングのためのThread.sleepと使用しようとしましたが、結果は恐ろしいです。「ToneMatrix」オーディオおもちゃの再実装

JFugueは、player.playThread.sleepの17回目(実際には、私が数えた)呼び出しが良いリズムを与えるにはあまりにも不規則です。

代わりに何をお勧めしますか?基本的には、オンザフライで音のシングルノートを生成する簡単な方法を探しています。サウンドが再生される前の1秒間に数秒かかるので、データを見て再生するノートをオーディオライブラリに伝える必要があります。 (複数の音符が調和している可能性があります)

答えて

1

JFugueで音符をオフにすることを忘れてしまった、または一度開始した音符の演奏を停止するのを忘れるバグがあります。

MIDIの使用は、あなたが話していることを行うのはかなり簡単な方法です。ここでは、あなたを起動させる便利なメソッドのちょっとしたヒントがあります:

Synthesizer synth = MidiSystem.getSynthesizer(); 
synth.open(); 
MidiChannel midiChannel = synth.getChannels()[0]; 
midiChannel.allNotesOff(); 
currentInstrument = synth.getAvailableInstruments()[index]; 
System.out.println("Switching instrument to #" + index + ": " + currentInstrument.getName()); 
synth.loadInstrument(currentInstrument); 
midiChannel.programChange(currentInstrument.getPatch().getBank(), currentInstrument.getPatch().getProgram()); 
midiChannel.noteOn(noteNumber, velocity); 
midiChannel.noteOff(noteNumber); 
関連する問題