簡體   English   中英

從AKSequencer刪除速度事件

[英]Deleting tempo events from AKSequencer

我需要從AKSequencer實例中刪除所有的速度事件,但我找不到辦法。

我嘗試使用如下所示的clearRange()方法,但我不確定它是否正確,因為它不起作用:

var sequencer = AKSequencer()

// successfully adding a few tempo events with addTempoEventAt(tempo bpm: Double, position: AKDuration)

...

// trying to remove them

let sequenceLength = sequencer.length
sequencer.clearRange(start: AKDuration(beats: 0.0), duration: sequenceLength)

有什么我想念的嗎?

不幸的是clearRange()刪除音符事件和元事件,但是,當你觀察到的,它不會刪除節拍事件(文檔的下一版本將更加明確-謝謝你抓住這一點)。 AKSequencer有一個私有的clearTempoEvents方法,由setTempo()方法在內部調用,因此您可以使用setTempo()清除所有現有的速度事件。 當然,在刪除現有的速度事件之后,這也將在序列的開頭添加一個新的速度事件,其中包含作為參數的速度。

所以它不會給你一個沒有速度事件的序列 - 但是一個序列需要一個節奏而沒有節奏事件它將默認為120 - 所以強迫你明確關於起始節奏並不是一件壞事。 無論如何,除非你真的需要絕對沒有節奏事件,否則setTempo()應該能夠清除序列中所有現有的節奏事件。

暫無
暫無

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

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