在javax.sound.midi包中设置仪器时遇到问题。
Synthesizer synthesizer = MidiSystem.getSynthesizer();
MidiChannel[] channels = synthesizer.getChannels();
channels[0].programChange(5);
System.out.println(channels[0].getProgram());在MidiChannel上的documentation中,对channels.programChange(int)的调用应该更改MidiChannel设置的仪器,并立即反映在channels.getProgram()中。然而,我的程序打印"0",表示没有任何变化。
在后面的代码中,我将使用MidiChannel.getSequencer()成功播放midi声音(尽管只使用默认乐器)。
我是不是要试着把仪器设置成错误的方式?
发布于 2011-04-06 19:57:21
我遇到了和你一样的问题,尽管我们没有使用完全相同的实现来使MIDI消息可以随意查看我的问题,因为它可能会对你有所帮助:
https://stackoverflow.com/questions/2828820
复制相似问题