Audiokit 4.9 midi 输入不再工作 IOS

Audiokit 4.9 midi input no longer working IOS

最新版本 4.9 中关于 MIDI 输入有什么变化吗?似乎适用于 4.7,但现在只有 MIDI 输出在工作。使用 IOS 12 和 13 进行测试。

启动时,我调用 midi.openInput(),然后调用 midi.addListener(self),然后使用委托函数接收消息。

@肯尼叔叔,

我不认为 MIDI 输入问题出在 AudioKit 上;变化似乎围绕着 Xcode 11、iOS 13 和 macOS Catalina 现在如何处理(或不处理)MIDI。 AudioKit 4.9 是用 Xcode 11.1 编译的版本。它的 MIDI 库应该是相同的,但这可能是问题所在; Apple 可能在没有警告的情况下更改了它。

您能否让您的 MIDI 控制器控制 iOS13 上的任何其他 MIDI 应用程序,例如 Animoog、GarageBand 或 ?我无法通过我的 KMI QuNexus 控制器触发任何 Korg 合成器或 GarageBand,并且它在 iOS 13 之前可以正常工作。所以,这就是为什么我不认为 MIDI 问题是有限的到 AudioKit。但是,我可能是错的。

如您所知,许多音乐硬件和软件公司都建议音乐家不要升级到 macOS Catalina 或 iOS 13,如果他们希望保留现有的工作流程,或继续使用外部 MIDI 设备进行演奏:

另一个奇怪的是,iOS 11.1 中的 iOS 13 个模拟器没有包含成功 运行 支持 MIDI 的应用程序所必需的 MIDI 驱动程序。这是一个解决方法:

https://github.com/AudioKit/AudioKit/issues/1872#issuecomment-536223521

我建议您提交有关它的错误报告。我们都应该这样做,因为这是一个严重的问题,似乎正在破坏 iOS 和 macOS 上的 MIDI 体验。如果有新的 MIDI 变化,Apple 应该清楚地说明这些变化是什么。

https://developer.apple.com/bug-reporting/

希望对您有所帮助。

确保您正确实施了 AKMIDIListener 协议。最近进行了一些更改,为 MIDI 输入和偏移量添加了 portID,以实现采样精确的 MIDI 处理。您的协议方法签名应包括如下新元素:

func receivedMIDINoteOn(noteNumber: MIDINoteNumber,
                        velocity: MIDIVelocity,
                        channel: MIDIChannel,
                        portID: MIDIUniqueID? = nil,
                        offset: MIDITimeStamp = 0) {

如果您还有:

func receivedMIDINoteOn(noteNumber: MIDINoteNumber,
                        velocity: MIDIVelocity,
                        channel: MIDIChannel) {

不会再调用了,您需要两个新参数。 HTH

这个问题通过更新到 iOS 13.3 得到解决,但正如 Aurelius 指出的那样,您还必须更新 AKMIDIListener 协议