4

javax.sound.midiパッケージでインストゥルメントを設定するのに問題があります。

Synthesizer synthesizer = MidiSystem.getSynthesizer();
MidiChannel[] channels = synthesizer.getChannels();

channels[0].programChange(5);
System.out.println(channels[0].getProgram());

MidiChannelのドキュメントから、 channels [0] .programChange(int)を呼び出すと、MidiChannelが設定されているインストゥルメントが変更され、すぐにchannels [0] .getProgram()に反映されます。しかし、私のプログラムは「0」を出力し、何も変更されていないことを示します。

コードの後半では、MidiChannel.getSequencer()を使用して、MIDIサウンドを正常に再生しています(ただし、デフォルトの楽器でのみ)。

楽器を間違った方法でセットしようとしていますか?

4

1 に答える 1

3

私はあなたと同じ問題に遭遇しましたが、MIDIメッセージを作成するためにまったく同じ実装を使用していませんが、私の質問を自由に見てください。

再生中に Java で楽器を変更する

于 2011-04-06T11:57:21.490 に答える