2014-08-27 29 views
0

我正在使用javax.sound.midi.Sequencer播放一個序列,並且當達到特定刻度時我需要跳轉到序列的其他部分。設想一個循環,當我們到達滴答號「y」時,我們跳回到滴答號「x」。但是我沒有做一個循環,所以內置的循環方法不適用於我。如何在midi序列中達到特定刻度時通知我?

目前我正在使用一個擺動計時器,每毫秒觸發一次getTickPosition(),直到達到我想要的刻度,但是這給了我稍微不一致的結果,我有一種感覺,它使用了大量的CPU相當簡單的任務。

我希望有一個事件監聽器能在通過音序器處理某個特定節拍時通知我,但沒有AFAIK。任何建議將不勝感激。

回答

0

我對MIDI只有很少的想法,但總是着迷於電腦音樂,所以我看了一下,發現你可以添加一個MetaMessage到所需刻度線的一個軌道上,並使用MetaEventListener消息處理完成時通知?

0

我建議您降低

getTickPosition()每毫秒

其中= 1000×第二 - 過於頻繁 您可以通過100至10×其次 一個因素減少這會減少你的CPU使用率(到目前的1%)

MIDI定時時鐘信息(在120 bpm)只有兩個節拍/每秒 w這是(每四分音符24個滴答聲)1/50秒(20 mSecs)捕捉子節拍間隔 - 你需要做什麼?

更好的解決方案可能是爲序來告訴你什麼時候已經到來,但我不知道,如果一個機制存在此

我很想知道什麼解決的作品爲您

相關問題