范围清晰,音符清晰(AudioKit:AKMusicTrack函数)

时间:2019-01-15 09:31:13

标签: audiokit

我熟悉AKMusicTrack函数,特别是用于清除给定序列中的音符数据的函数。

我看到clearRange()将清除开始范围和结束范围之间的音符数据,而clearNote()将删除该音符值序列中的所有事件。

有人知道清除单个音符的功能吗?像clearSingleNote(noteNumber MIDINoteNumber, position AKDuration, end AKDuration)这样的东西吗?

2 个答案:

答案 0 :(得分:1)

您可以使用getMIDINoteData()来获取AKMIDINoteData的数组,过滤掉不需要的音符,然后使用replaceMIDINoteData()将已过滤的数组覆盖音乐曲目:

// remove a C at timestamp 4.0
var trackData = myTrack.getMIDINoteData()
trackData = trackData.filter { $0.noteNumber =! 60 && 
                               $0.duration =! AKDuration(beats: 4.0) }
myTrack.replaceMIDINoteData(with: trackData)

MIDIFileEditAndSync示例项目中,有更多使用getMIDINoteData()的示例。

答案 1 :(得分:0)

正确的方法:

trackData = trackData.filter { 
    !($0.noteNumber == 60 && $0.duration == AKDuration(beats: 4.0))
}