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

Synthesizer synthesizer = MidiSystem.getSynthesizer();
MidiChannel[] channels = synthesizer.getChannels();

channels[0].programChange(5);
System.out.println(channels[0].getProgram());

从 MidiChannel 上的 documentation 调用 channels[0].programChange(int) 应该更改 MidiChannel 设置为并立即反射(reflect)在 channels[0].getProgram() 中的工具。但是我的程序打印“0”,表明没有任何改变。

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

我是否打算以错误的方式设置乐器?

最佳答案

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

Changing instrument in Java during playback

关于java - 使用 javax.sound.midi 包设置乐器 channel ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2828820/

10-08 22:07