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サウンドを正常に再生しています(ただし、デフォルトの楽器でのみ)。
楽器を間違った方法でセットしようとしていますか?