Java остановить воспроизведение MIDI - PullRequest
2 голосов
/ 23 сентября 2010

Привет, у меня есть Java-приложение, которое воспроизводит MIDI-сообщения из последовательности.Я делаю это с помощью библиотеки jfugue.

проблема в том, что когда я пытаюсь остановить воспроизведение с помощью кнопки остановки (которая вызывает sequencer.stop () и sequencer.close ()), последняя проигранная нота звучит всевремени отдыха, и я не могу это остановить.

Так что я спрашиваю о решении об остановке всего аудио и MIDI тоже!Воспроизведение звука из Java-приложения.

Примечание: если вы хотите предложить просто отключить звук, вам нужно знать, что я хочу, чтобы конечный пользователь мог снова нажать кнопку воспроизведения и снова услышать звук, так что отключение звука volumrне быть решением или объяснить, пожалуйста.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 04 января 2011

Когда MIDI воспроизводит музыку, он использует комбинацию событий NOTE_ON и NOTE_OFF.Похоже, когда вы нажимаете кнопку «Стоп», последовательность останавливается после отправки события NOTE_ON, но до того, как было отправлено событие NOTE_OFF.Это означает, что звук будет продолжать играть бесконечно.

Player.allNotesOff() в JFugue вызывает метод allNotesOff() JavaSound в классе Channel;этот вызов выполняется для каждого MIDI-канала (всего 16 каналов).К сожалению, это решение не работает.Попробуйте позвонить Player.allNotesOff() после sequencer.stop(), посмотрите, поможет ли это.

0 голосов
/ 27 сентября 2010

Полагаю, вам нужно позвонить Player.allNotesOff(), прежде чем звонить sequencer.stop(). Не проверено, поэтому, пожалуйста, дайте мне знать, если это не сработало.

...