【问题标题】:AKMIDICallbackInstrument implementation issueAKMIDICallbackInstrument 实现问题
【发布时间】:2018-11-18 17:18:47
【问题描述】:

更新到最新版本的 AudioKit 后,我​​将几个 AKCallbackInstrument 实例更改为新的 AKMIDICallbackInstrument 类,该类现在将前者合并为遗留行为。但是,这样做时,我遇到了这个奇怪的错误。也许我错过了 Swift 的细微差别?

let callback = AKMIDICallbackInstrument() { status, note, velocity in
    if status == .noteOn {  //errors out
       // do something
    }
}

比较 status.noteOn 错误: “表达式类型 'Bool' 在没有更多上下文的情况下是模棱两可的。”。有道理,因为 AKMIDICallbackInstrument 不再返回状态中的 AKMIDIStatus,而是直接返回 MIDIByte (UInt8)。使用直接 MIDI 命令数字有效。

let callback = AKMIDICallbackInstrument() { status, note, velocity in
    if status == 0x90 {
       // do something
    }
}

所以我们有一个问题和一个潜在的解决方案。我只是不确定这是要走的路,而且 AKMIDICallbackInstrument 还没有找到文档。

【问题讨论】:

  • 好收获。回调工具通常应该比以前更好,但也有更多更大的好变化即将到来。我现在正在旅行,但我回来后可以调查一下。
  • 嗨,有什么消息吗?将 AudioKit 升级到 4.6.1 时,我现在面临同样的问题

标签: swift xcode midi audiokit


【解决方案1】:

暂时,您可以像这样将MIDIByte 转换为AKMIDIStatus

let status = AKMIDIStatus(rawValue: Int(statusByte >> 4))

在开发分支上,AKMIDIStatus 有一个新的初始化程序,它直接将 MIDIByte 作为参数,使这更容易一些。

【讨论】:

  • 酷 - 我将在即将发布的版本之一中寻找新的初始化程序。
猜你喜欢
  • 2011-07-22
  • 2010-10-15
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多