cax*_*xix 5 midi xcode swift audiokit
更新到AudioKit的最新版本后,我将几个AKCallbackInstrument实例更改为新的AKMIDICallbackInstrument类,该类现在将前者合并为旧行为。但是,这样做时,我遇到了这个奇怪的错误。也许我想念的Swift细微差别?
let callback = AKMIDICallbackInstrument() { status, note, velocity in
if status == .noteOn { //errors out
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
将状态与.noteOn错误进行比较,结果是:“表达式类型'Bool'是模棱两可的,没有更多上下文。”。这是有道理的,因为AKMIDICallbackInstrument不再返回AKMIDIStatus状态,而是直接返回MIDIByte(UInt8)。使用直接MIDI命令数字即可。
let callback = AKMIDICallbackInstrument() { status, note, velocity in
if status == 0x90 {
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
因此,我们有一个问题和潜在的解决方案。我只是不确定这是否可行,AKMIDICallbackInstrument尚未发布到文档中。
目前,您可以将其转换MIDIByte为AKMIDIStatus:
let status = AKMIDIStatus(rawValue: Int(statusByte >> 4))
Run Code Online (Sandbox Code Playgroud)
在开发分支上,有一个新的初始化程序,AKMIDIStatus它直接作为MIDIByte参数,使这变得更容易一些。
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |