0

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

我想知道如何“注入”一个命令来告诉音序器(或者更确切地说是合成器?)只需按一下按钮就停止播放。

到目前为止,我已经尝试关闭合成器和音序器,但声音仍在播放。同样,删除轨道或关闭通道中的所有音符(如Java stop MIDI 播放中所建议的)都不起作用:

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

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

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

4

1 回答 1

1

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

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

于 2012-09-10T13:45:20.340 回答