如何在带有 AudioKit 4.6.1 的 AKMIDICallbackInstrument 回调中使用 AKMIDIStatus
Posted
技术标签:
【中文标题】如何在带有 AudioKit 4.6.1 的 AKMIDICallbackInstrument 回调中使用 AKMIDIStatus【英文标题】:How do you use AKMIDIStatus in a AKMIDICallbackInstrument callback with AudioKit 4.6.1 【发布时间】:2019-02-20 12:52:49 【问题描述】:将 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 Implementation Issue
【问题讨论】:
【参考方案1】:尝试使用传入字节创建 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 中测试过
【讨论】:
感谢您,使用AKMIDIStatus(byte: statusByte)?.type
可以按预期工作。一如既往地在我的鼻子底下......以上是关于如何在带有 AudioKit 4.6.1 的 AKMIDICallbackInstrument 回调中使用 AKMIDIStatus的主要内容,如果未能解决你的问题,请参考以下文章