我是Swift的新手,正在努力挣扎,所以请放轻松。我正在XCode 10.1中使用Swift 4构建一个macOS项目
我正在使用以下代码从设备接收sysex消息,该代码是从AudioKit提供的MIDIUtility示例项目中获得的:
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库管理器或MIDI监视器接收相同的sysEx时所得到的完全不同。这两个应用程序均接收6个32,110,110,110,110和110字节的数据包。这就是我希望从MIDI设备获得的东西。我的代码得到6个520,1300,20,1538,1294和1544字节的数据包。看起来我想要的数据在这些数据包中,但被一堆0填满了。
data as received in MIDI Monitor or SysEx Librarian: some of the data as received by my code
为什么我的代码收到了这么多额外的数据?有没有办法过滤掉不需要的数据,或者我需要弄清楚如何为我的项目使用AudioKit之外的其他东西?