Swift 2: Как разобрать временную подпись с MIDIMetaEvent?

До Swift доступ к данным MIDIMetaEvent осуществлялся через data[0], data[1] и т. Д. Чтобы получить временную сигнатуру, мне нужны два значения из части данных, которая помечена как (UInt8)... с паренами. Но когда я пытаюсь получить значение таким образом:

let midiMessage = UnsafePointer<MIDIMetaEvent>(eventData).memory
let data1 = midiMessage.data[0]

Это приводит к ошибке: "Cannot subscript a value of type 'UInt8' with an index of type 'Int'

Любая подсказка, что я здесь сделал не так? Просто получаю midiMessage.data возвращает только первый байт данных.

1 ответ

Никакой snark не предназначен, но подайте Radar и попросите "улучшение", чтобы избавиться от использования кортежей для динамически изменяемых массивов. Они сделали это уже с некоторыми частями Core MIDI, но не с мета-событиями. Или MIDI через.

Было бы хорошо, если бы они просто добавили функциональность Core MIDI в AVFoundation (они начали), чтобы полностью избавиться от C API.

В то же время вы можете пройти через такие искажения, которые используют Mirror https://github.com/jverkoey/swift-midi/blob/master/LUMI/CoreMIDI/MIDIPacket%2BSequenceType.swift

Другие вопросы по тегам