2010-09-23 110 views
2

嗨我有java應用程序播放序列midi消息。我正在使用jfugue庫來做這件事。Java停止MIDI播放

問題是當我試圖用停止按鈕停止播放(哪個調用sequencer.stop()和sequencer.close())最後播放的音符在所有休息時間都是健全的,我無法阻止它。

所以我想諮詢一下關於解決方案停止所有的音頻和MIDI呢!從Java應用程序播放聲音。

提示: 如果您只想提出靜音音量,您需要知道我希望最終用戶能夠再次按播放按鈕並再次聽到聲音,因此靜音音量將不是解決方案或解釋請。

謝謝!

回答

0

我猜你需要在調用sequencer.stop()之前調用Player.allNotesOff()。未經測試,請讓我知道它是否無效。

+0

不行。當前的演奏音符仍然是聲音。很奇怪。 (( – user456268 2010-09-27 18:32:21

0

當MIDI播放音樂,它使用的NOTE_ON和NOTE_OFF事件的組合。這聽起來像是當你按下停止按鈕時,在NOTE_ON事件發送之後,但在發送NOTE_OFF事件之前,序列停止。這意味着聲音將繼續無限期地播放。

Player.allNotesOff() JFugue在Channel類中調用了JavaSound的allNotesOff()方法;這個調用是爲每個MIDI通道進行的(有16個通道)。不幸的是,這個解決方案不起作用。嘗試撥打Player.allNotesOff()sequencer.stop(),看看是否有幫助。