使用javax.sound.midi包设置仪器通道

我在javax.sound.midi包中设置仪器时遇到问题。

Synthesizer synthesizer = MidiSystem.getSynthesizer(); MidiChannel[] channels = synthesizer.getChannels(); channels[0].programChange(5); System.out.println(channels[0].getProgram()); 

从MidiChannel上的文档中,对通道[0] .programChange(int)的调用应该改变MidiChannel设置的仪器并立即反映在通道[0] .getProgram()中。 但是我的程序打印“0”,表示没有任何改变。

稍后在代码中,我使用MidiChannel.getSequencer()成功播放midi声音(尽管只使用默认乐器。)

我是否打算尝试以错误的方式设置仪器?

我遇到了和你一样的问题,虽然我们没有使用完全相同的实现来让MIDI消息随意查看我的问题,因为它可能对你有用:

在播放期间用Java更改乐器