gpt4 book ai didi

swift - AKMIDIListener 没有收到 SysEx

转载 作者:IT王子 更新时间:2023-10-29 05:53:52 25 4
gpt4 key购买 nike

我在类上使用 AudioKit 的 AKMIDIListener 协议(protocol)来监听 MIDI 消息。这适用于标准消息,例如 Note On,但 SysEx 消息无法通过。

func receivedMIDINoteOn(noteNumber: MIDINoteNumber, velocity: MIDIVelocity, channel: MIDIChannel) {
NSLog("Note On \(noteNumber), \(velocity), \(channel)") // works perfectly
}
func receivedMIDISystemCommand(_ data: [MIDIByte]) {
NSLog("SysEx \(data)") // never triggers

// More code to handle the messages...
}

SysEx 消息是从外部硬件或测试软件发送的。我使用 MIDI 监控应用程序来确保消息被正确发送,但在我的应用程序中它们没有触发 receivedMIDISystemCommand

是否需要任何额外的步骤来接收我遗漏的 SysEx 消息?

提前感谢您提供任何线索。

最佳答案

编辑:感谢您提请我们注意此事。 SysEx 接收问题现已在 AudioKit 的开发分支中修复:https://github.com/AudioKit/AudioKit/pull/1017

--

代替

NSLog("SysEx \(data)")

你试过吗?

if let sysExCommand = AKMIDISystemCommand(rawValue: data[0]) {
print("MIDI System Command: \(sysExCommand)")
}

AKMIDISystemCommand 会将您的 SysEx 数据转换为更有用的数据,定义如下:

public enum AKMIDISystemCommand: MIDIByte {
/// Trivial Case of None
case none = 0
/// System Exclusive
case sysex = 240
/// Song Position
case songPosition = 242
/// Song Selection
case songSelect = 243
/// Request Tune
case tuneRequest = 246
/// End System Exclusive
case sysexEnd = 247
/// Clock
case clock = 248
/// Start
case start = 250
/// Continue
case `continue` = 251
/// Stop
case stop = 252
/// Active Sensing
case activeSensing = 254
/// System Reset
case sysReset = 255
}

-- 马修@audiokit

关于swift - AKMIDIListener 没有收到 SysEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45413400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com