Я очень новичок в Swift и изо всех сил, поэтому, пожалуйста, успокойтесь.Я создаю проект macOS с использованием Swift 4 в XCode 10.1
. Я получаю сообщение sysex от устройства, используя следующий код, полученный из примера проекта MIDIUtility, поставляемого с AudioKit:
func receivedMIDISystemCommand(_ data: [MIDIByte]) {
if let command = AKMIDISystemCommand(rawValue: data[0]) {
var newString = "MIDI System Command: \(command) \n"
var hexArray = [UInt8]()
for bit in data {
hexArray.append(bit) //this requires 'public typealias MIDIByte = UInt8'
newString.append(String("\(bit) "))
}
updateText("\(newString) \n")
updateData(hexArray)
}
updateText("received \(data.count) bytes of data \n\n")
}
Sysex, который я получаю, сильно отличается от того, что я получаю при использовании SysEx Librarian или MIDI Monitor для получения того же sysEx.Оба эти приложения получают 6 пакетов по 32 110 110 110 110 и 110 байт.Это то, что я ожидаю получить от моего MIDI-устройства.Мой код получает 6 пакетов по 520,1300,20,1538,1294 и 1544 байта.Похоже, данные, которые мне нужны, находятся в этих пакетах, но они разбиты кучей нулей.
данных, полученных в MIDI Monitor или SysEx Librarian: некоторые изданные, полученные моим кодом
Почему мой код получает так много дополнительных данных?Есть ли способ отфильтровать нежелательные данные или мне нужно будет выяснить, как использовать что-то другое, кроме AudioKit, для моего проекта?