Java停止MIDI播放

时间:2010-09-23 14:28:38

标签: java audio midi

您好我有java应用程序从序列播放midi消息。我正在使用jfugue库。

问题是当我试图用停止按钮停止播放时(调用sequencer.stop()和sequencer.close()),最后播放的音符都是休息时间,我无法阻止它。

所以我要问关于停止所有音频和MIDI的解决方案!从java应用程序中播放声音。

注意: 如果你想提出静音音量,你需要知道我希望最终用途能够再次按下播放按钮并再次听到声音,所以静音volumr将不是解决方案,或者请解释。

谢谢!

2 个答案:

答案 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() ,看看是否有帮助。