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 回答