0

ToneMatrixと呼ばれる本当にクールなオーディオ「おもちゃ」があります。Javaアプレットとして再実装したいと思います。JFugueplayer.play音とThread.sleepタイミングを個別に使ってみましたが、ひどい結果になりました。

JFugueは、17回目の呼び出し(はい、実際、私は数えました)の後に応答を停止し、player.play不規則Thread.sleepすぎて良いリズムを提供できません。

代わりに何をお勧めしますか?基本的に、私はその場で音の単音を生成する簡単な方法を探しています。そのため、サウンドが再生される数分の1秒前に、データを確認して、再生するノートをオーディオライブラリに指示できるようにする必要があります。(複数の音符が調和している可能性があります。)

4

1 に答える 1

1

私の推測では、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);
于 2009-04-17T13:56:30.030 に答える