无法立即停止midi序列

时间:2012-09-10 13:23:08

标签: java midi

我使用了相同的javax.sound.midi示例作为问题Terminate Java Midi output的结构主义者。那里的问题是关于在播放一次序列而不是循环它之后终止序列。

我想知道我怎么能“注入”一个命令来告诉音序器(或者说合成器?)只需按一下按钮就可以停止播放。

到目前为止,我已经尝试关闭合成器和音序器,但声音仍在播放。此外,既不删除音轨也不关闭通道中的所有音符(如Java stop MIDI playback中所示):

if (synth != null) {
        javax.sound.midi.MidiChannel[] channels = synth.getChannels();

        channels[0].allNotesOff();
        channels[0].allSoundOff();
    }

我希望能够在停止当前序列后播放另一个序列。

1 个答案:

答案 0 :(得分:1)

据我了解,Sun JRE中的Midi支持使用完全外部(和本机)midi实现。我自己遇到了很多问题(音量控制不正常,例如将音量设置为0并且仍然可以听到。音质也远低于其他midi播放器提供的音质)。您可能无法轻易解决的本机绑定存在局限性。

我通过切换到Gervill解决了我的问题,这是一个纯java实现,旨在取代原生java midi支持(有许可证问题阻止midi部分作为开​​源发布)。 AFAIK他们没有出于任何原因切换,但也许他们仍将在未来的Java版本中发布。