未收到SysEx事件

时间:2019-04-18 11:24:01

标签: audiokit

我有一个小应用程序,它从蓝牙通道接收MIDI。 使用Core API可以很好地工作,因此我尝试使用AudioKit简化代码。

问题是:我在侦听器中看不到SysEx事件(尽管我在基本代码中看到了它们)。收到其他Midi事件。

            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(with :):102:开始接收Sysex AKMIDI.swift:stopReceivingSysex():107:完成接收Sysex

但没有通过侦听器...

如何获取Sysex消息数据?

1 个答案:

答案 0 :(得分:0)

我可以在当前版本(4.7.2)中确认此行为,但是:在版本4.5.6中,midilistener会收到sysex(和其他MIDI消息)。因此我的应用仍在使用该版本。由于某些原因,在以后的版本中接收MIDI似乎已损坏。

但是4.5.6版本也不是完美的。它将大型sysex消息切成多个小消息。我有一些代码可以解决这个问题,请告诉我是否需要。