我有一个小应用程序,它从蓝牙通道接收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消息数据?
答案 0 :(得分:0)
我可以在当前版本(4.7.2)中确认此行为,但是:在版本4.5.6中,midilistener会收到sysex(和其他MIDI消息)。因此我的应用仍在使用该版本。由于某些原因,在以后的版本中接收MIDI似乎已损坏。
但是4.5.6版本也不是完美的。它将大型sysex消息切成多个小消息。我有一些代码可以解决这个问题,请告诉我是否需要。