簡體   English   中英

在midi序列中達到某個刻度時,如何通知我?

[英]How can I be notified when a certain tick is reached in a midi sequence?

我正在使用javax.sound.midi.Sequencer播放序列,當達到某個刻度時,我需要跳到序列的另一部分。 想象一下一個循環,當我們到達刻度號“ y”時,我們跳回到刻度號“ x”。 但是我沒有做循環,所以內置的循環方法對我不起作用。

目前,我正在使用一個擺動計時器,該計時器每毫秒觸發一次getTickPosition()直到達到所需的滴答聲為止,但這給我帶來了一些不一致的結果,並且我感覺它正在使用大量CPU來完成一個相當簡單的任務。

我希望有一個事件偵聽器,當音序器處理了某個滴答聲但沒有AFAIK時會通知我。 任何建議將不勝感激。

我對midi知之甚少,但總是對計算機音樂着迷,因此我四處張望,發現您可以在所需的滴答處將MetaMessage添加到其中一個曲目中,並使用MetaEventListener在消息出現時得到通知被處理了嗎?

我建議你減少你的

每毫秒getTickPosition()

哪個= 1000 x秒-太頻繁了,您可以減少100到10 x秒,這將減少CPU使用率(降至當前的1%?)

MIDI定時時鍾信息(每秒120 bpm)僅每秒2個節拍,即(每四分音符24個滴答聲)1/50秒(20毫秒)以捕獲次節拍間隔-這就是您需要做的?

更好的解決方案可能是讓Sequencer告訴您何時到達,但我不知道是否存在對此的機制

我想知道哪種修補程序對您有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM