1

我已经使用 Core MIDI 在我的 iOS 应用程序中成功获得了 MIDI。但是,如果我打开一个输出 MIDI 的应用程序(例如,免费应用程序 Little MIDI Machine),我的应用程序不会出现在可能的设备列表中(对于 LMM,在名为“CoreMIDI 输出”的列表中) ,即使我的应用程序无论如何都会收到 MIDI 音符。其他应用程序确实按名称显示(即 iMS-20) 我如何将我的应用程序“宣传”到同一系统上的其他 MIDI 应用程序?

4

1 回答 1

4

好的,折腾了一段时间后,我已经解决了。我会尽力解释,如果此信息有任何错误,我希望一些专家随时加入。

使用 Core MIDI 接收 MIDI 信息有两种方式。您可以使用 MIDIInputPortCreate 创建一个 MIDIPortRef 作为输入端口,然后遍历所有可能的源,依次使用 MIDIPortConnectSource 连接每个源。或者您可以使用 MIDIDestinationCreate 创建一个 MIDIEndpointRef 作为 MIDI 目标 - 然后无需遍历所有源,并且在这两种情况下都需要 MIDIReadProc - 即您将用于读取传入消息的函数具有完全相同两种情况下的签名。

当您使用 MIDIDestinationCreate 时,您的应用程序会在其他应用程序中显示为可以选择的目的地。这比在应用程序中选择输入源更有意义,尤其是因为在任何给定时间这些源可能存在也可能不存在。但它也依赖于其他应用程序能够选择你的作为目的地。也许这两件事都是需要的,以涵盖所有场景。

我没有找到任何使用 MIDIDestinationCreate 在 iOS 上进行应用间通信的示例代码,所以我希望这个信息有一些用处。

无论如何,请注意您的应用程序需要设置为背景音频,根据这个问题:

iOS6 中的 CoreMIDI/PGMidi 虚拟 MIDI 错误

于 2013-04-01T14:20:31.093 回答