2010-09-23 3 views
2

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

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

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

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

Спасибо!

ответ

0

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

+0

Нет, это не так. текущая звуковая заметка все еще звучит. очень странно. (( – user456268

0

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^