Java midi Sequencer - 更改程序仅适用于通道0

时间:2013-08-21 10:55:46

标签: java midi javasound

这是尝试通过javax.sound.midi

制作midi-sound
ShortMessage first = new ShortMessage();
first.setMessage(ShortMessage.PROGRAM_CHANGE, 1, 7, 0); // changing instrument here
MidiEvent changeInstrument = new MidiEvent(first, 1);
track.add(changeInstrument);

ShortMessage a = new ShortMessage();
a.setMessage(ShortMessage.NOTE_ON, 1, 44, 127);
MidiEvent noteOn = new MidiEvent(a, 2);
track.add(noteOn);

ShortMessage b = new ShortMessage();
a.setMessage(ShortMessage.NOTE_OFF, 1, 44, 127);
MidiEvent noteOff = new MidiEvent(b, 32);
track.add(noteOff);

player.setSequence(seq);
player.start();

问题是乐器没有改变(“原声三角钢琴”独立于所选号码播放)。

然而我起初发现,如果频道号为0而不是1,所有作品都是完美的。后来我发现了更令人困惑的事情 - 即使在频道0上调用节目更改而在任何其他频道上播放音符,所有这些都很完美。 / p>

我正在使用(我想)程序合成器在Windows上进行测试。

有人可以告诉我这种API可疑行为的原因吗?

我发现了旧的bug,但我不知道它是否相关: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4425843

以下是我无法理解它们是否相关的主题: Setting instrument channels using the javax.sound.midi package

0 个答案:

没有答案