Очистить диапазон, очистить заметку (AudioKit: функции AKMusicTrack) - PullRequest
0 голосов
/ 15 января 2019

Я знакомлюсь с функциями AKMusicTrack, в частности, функциями, используемыми для очистки данных заметок из заданной последовательности.

Я вижу, что clearRange() удалит данные заметки между начальным и конечным диапазоном, а clearNote() удалит все события в последовательности этого значения заметки.

Кто-нибудь знает функцию, которая удаляет одну заметку? Как в чем-то вроде clearSingleNote(noteNumber MIDINoteNumber, position AKDuration, end AKDuration)?

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

Правильный путь:

trackData = trackData.filter { 
    !($0.noteNumber == 60 && $0.duration == AKDuration(beats: 4.0))
}
0 голосов
/ 15 января 2019

Вы можете использовать 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().

...