Событие SysEx не получено - PullRequest
       18

Событие SysEx не получено

0 голосов
/ 18 апреля 2019

У меня небольшое приложение, получающее MIDI с канала Bluetooth.Он хорошо работает с использованием Core API, поэтому я попытался использовать AudioKit для упрощения своего кода.

Проблема в том, что я не вижу события SysEx в слушателе (хотя я вижу их в своем основном коде).Другие события миди получены.

            AKMidi = AudioKit.midi
            AKMidi?.addListener(AVKMIDIControl())
...
                AKMidi?.openInput(index: i)
...
class AVKMIDIControl:AKMIDIListener {
...
// copy paste from audiokit.io example
    func receivedMIDISystemCommand(_ data: [MIDIByte]) {
        if let command = AKMIDISystemCommand(rawValue: data[0]) {
            var newString = "MIDI System Command: \(command) \n"
            for i in 0 ..< data.count {
                newString.append("\(data[i]) ")
            }
            print(newString)
        }
    }
...

Я должен получать события SysEx в приемнике (кстати, я реализовал все остальные функции, чтобы быть уверенным, что перехватываю все), но я получаю только сообщения журнала, такие как AKMIDI.swift: startReceivingSysex (с:): 102: Начало приема Sysex AKMIDI.swift: stopReceivingSysex (): 107: Завершено получение Sysex

, но ничего через прослушиватель ...

Как я могу получить данные сообщения Sysex?

1 Ответ

0 голосов
/ 23 мая 2019

Я могу подтвердить это поведение в текущей версии (4.7.2), однако: в версии 4.5.6 sysex (и другие MIDI-сообщения) получены вашим midilistener.Так что мое приложение все еще использует эту версию.По некоторым причинам получение MIDI в некоторых версиях кажется просто неработающим.

Но версия 4.5.6 тоже не идеальна.Он разрезает большие сообщения sysex на несколько маленьких сообщений.У меня есть код для решения этой проблемы, дайте мне знать, если он вам нужен.

...