Java停止MIDI播放
嗨我有java应用程序播放来自序列的midi消息。 我是用jfugue库做的。
问题是,当我试图用停止按钮停止播放时(调用sequencer.stop()和sequencer.close()),最后播放的音符都是rest时间,我无法阻止它。
所以我要问关于停止所有音频和MIDI的解决方案! 从java应用程序声音播放。
注意:如果你想提出静音音量,你需要知道我希望最终用途能够再次按下播放按钮并再次听到声音,所以静音volumr将不是解决方案,或者请解释。
谢谢!
我猜你需要在调用Player.allNotesOff()
之前调用Player.allNotesOff()
sequencer.stop()
。 未经测试,如果不起作用,请告诉我。
MIDI播放音乐时,它使用NOTE_ON和NOTE_OFF事件的组合。 听起来就像按下停止按钮一样,序列在发送了NOTE_ON事件后停止,但在发送了NOTE_OFF事件之前。 这意味着声音将继续无限期播放。
JFugue中的allNotesOff()
在Channel类中调用JavaSound的allNotesOff()
方法; 此调用是针对每个MIDI通道进行的(有16个通道)。 不幸的是,这个解决方案无法正常工作。 尝试在 sequencer.stop()
Player.allNotesOff()
之后调用Player.allNotesOff()
,看看是否有帮助。