「ToneMatrix」を再実装オーディオおもちゃの[を閉じ]
-
09-09-2019 - |
質問
ToneMatrix に呼ば本当にクールオーディオ "おもちゃ" があります。私は、Javaアプレットとしてそれを再実装したいと思います。私はタイミングのためのサウンドとplayer.play
のための個々のリアクション JFugueするのThread.sleep
を使用してみましたが、結果は恐ろしいます。
JFugueは(はい、本当に、私は数えて)17日後に応答を停止player.play
とThread.sleep
の呼び出しは良いリズムを実現するにはあまりにも不規則でます。
あなたの代わりに何を勧めますか?基本的に、私はその場で音の単音を生成するための簡単な方法を探しています。だから、音の前に第二の画分は、私がプレイするノート何オーディオライブラリをデータを見て伝えることができるようにする必要があり、プレーする予定です。 (調和の複数のノートは可能性があります。)
解決
私の推測では、あなたはJFugueでノートを消し忘れているか、または一度ノートの再生を停止することを忘れているバグがあります開始します。
MIDIを使用すると、あなたは何を言ってるのか行うにはかなり簡単な方法です。ここでは、始めるのだろう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);
所属していません StackOverflow