swift - 如何在带有 AudioKit 4.6.1 的 AKMIDICallbackInstrument 回调中使用 AKMIDIStatus
问题描述
将 AKSequencer 用于 midi 和控制轨道。我知道 AKMIDIStatus 在最近的修订版中发生了一些变化。我的探索使我相信这个简单的“note on”“note off”回调应该有效:
func playThroughCallback(_ statusByte: UInt8,
_ noteNumber: MIDINoteNumber,
_ velocity: MIDIVelocity) {
//print("MIDI Sequence Event \(status)")
guard let status = AKMIDIStatus(byte: statusByte) else { return }
switch status {
case .noteOn: midi?.sendNoteOnMessage(noteNumber: noteNumber, velocity: velocity)
case .noteOff: midi?.sendNoteOffMessage(noteNumber: noteNumber, velocity: velocity)
default: return
}
}
但是枚举案例似乎已经消失了。
编辑:恢复到 4.5.5 使我能够在这里使用解决方案:AKMIDICallbackInstrument 实现问题
解决方案
尝试使用传入字节创建AKMIDIStatus,然后读取AKMIDIStatusType
let callbackReceiver = AKMIDICallbackInstrument(midiInputName: "myCoolInput",
callback: { status, noteNumber, velocity in
let statusType = AKMIDIStatus(byte: status)?.type //can be noteOn, noteOff, etc
if(statusType == AKMIDIStatusType.noteOn){
print("Note on.")
}
})
myTrack.setMIDIOutput(callbackReceiver.midiIn)
刚刚测试为在 AudioKit 4.6.1 中工作
推荐阅读
- veins - 如何在 INET 框架中使用 ObstacleControl 模块?
- tensorflow - 我是否对将 15MB 模型应用于 3kB 图像需要 1-4GB 的 GPU 内存感到惊讶
- ruby - 在字符串周围添加双引号会在新行上添加右引号
- mysql - 如何在 Azure MySQL 数据库上产生 100% 的 cpu 和 100% 的内存使用率
- html - 我怎样才能把图片放在中心 | HTML、CSS
- amazon-dynamodb - 每次我的 lambda 由 SNS 触发时,我都试图在 DynamoDB 中增加一个计数值
- hadoop - 插入/值不支持 TOK_FUNCTION
- sql - 将数组列转换为新列 bigquery sql
- java - 我的while循环中的if语句在Java中不会自行激活?
- variables - 为什么整数变量大小受到限制(限制为 32/64 位等)?