Sysex из AudioKit получил MIDISystemCommand - PullRequest
0 голосов
/ 13 декабря 2018

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

...