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