我正在编写一些代码来使用Java声音库播放音乐。

private Sequencer sequencer ;
...
void play(Sequence sequence) {
    sequencer.open() ;
    sequencer.setSequence(sequence) ;
    sequencer.start() ; // plays sequence
    sequencer.close() ;
}

当我调用play方法19次时,声音从扬声器中发出。但是,我第20次调用它时,没有声音发出。无论如何,这总是会发生。我需要重新启动程序才能再次获得声音。

这个问题有解决方法吗?还是一些调试方法?或在某个地方可以获得MIDI声音API的支持?

最佳答案

我不知道为什么会停止。也许与midi中只有16个通道有关,但是您不必重复打开音序器,而是可以重用音序器并更改其音序。这是我所拥有的,对我有用:

public void play(Sequence sequence) {
    sequencer.setSequence(sequence);
    sequencer.stop();
    sequencer.setTickPosition(0);
    sequencer.start();
}

10-01 01:24