我有一个小应用程序接收来自蓝牙通道的MIDI。它使用核心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:Starting to receive AKMIDI.swift:stopReceivingSysex():107:Done receiving Sysex这样的日志消息
但是没有通过听者..。
如何获取Sysex消息数据?
发布于 2019-05-24 02:47:47
但是,我可以在当前版本(4.7.2)中确认这一行为:在版本4.5.6中,sysex (和其他MIDI消息)由您的midilistener接收。所以我的应用程序仍然在使用这个版本。由于某些原因,在以后的版本中,接收MIDI似乎被破坏了。
但是4.5.6版本也不是完美的。它将大的sysex消息分成多个小消息。我有一些代码来处理这个问题,如果你需要的话,请告诉我。
https://stackoverflow.com/questions/55744978
复制相似问题