Секвенсор Java Midi перестает воспроизводить звук через несколько раз. Как отлаживать/решать?

Я пишу код для воспроизведения музыки с использованием звуковой библиотеки Java.

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

Когда я вызываю метод play 19 раз, из моего динамика выходит звук. Однако на 20-й раз, когда я его вызываю, звука не слышно. Это происходит всегда, несмотря ни на что. Мне нужно перезапустить программу, чтобы снова получить звук.

Есть ли обходной путь для этой проблемы? Или какой-то способ отладить это? Или где-нибудь, где я могу получить поддержку API звука MIDI?


person ATDeveloper    schedule 23.05.2011    source источник
comment
Связанный: stackoverflow.com/questions/5972603/terminate-java-midi- вывод   -  person finnw    schedule 23.05.2011


Ответы (1)


Я не знаю, почему это останавливается. Возможно, это как-то связано с тем, что в миди всего 16 каналов, но вместо того, чтобы открывать секвенсор несколько раз, вы можете повторно использовать секвенсор и менять его последовательность. Это то, что у меня есть, и это работает для меня:

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