sysex из полученного AudioKitMIDISystemCommand

Я очень новичок в 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, для моего проекта?

0 ответов

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