我在javax.sound.midi包中设置乐器时遇到了问题。
Synthesizer synthesizer = MidiSystem.getSynthesizer();
MidiChannel[] channels = synthesizer.getChannels();
channels[0].programChange(5);
System.out.println(channels[0].getProgram());
来自MidiChannel上的documentation,对频道[0] .programChange(int)的调用应该改变MidiChannel设置的乐器,并立即反映在频道[0] .getProgram()中。但是我的程序打印“0”,表示没有任何改变。
稍后在代码中,我正在使用MidiChannel.getSequencer()成功播放midi声音(尽管只使用默认乐器。)
我是否打算以错误的方式设置仪器?
答案 0 :(得分:3)
我遇到了和你一样的问题,虽然我们没有使用完全相同的实现来让MIDI信息随意查看我的问题,因为它可能对你有用: