1

我们正在添加对在我们的应用程序中访问各种 MIDI 控制器设备的支持。从我们自己的使用试验来看midiInOpen,似乎只有一个应用程序可以使用midiInOpen. 尝试打开 MIDI 设备的第二个应用程序失败并出现错误MMSYSERR_NOMEM

但是,我有一个商业应用程序(第 3 方)的示例,它设法与我们的应用程序(使用midiInOpen)同时访问 MIDI 输入流。这表明还有另一种访问 MIDI 流的方法。

我使用 API 嗅探器查看 API 调用,而此应用程序不使用midiInOpen. 它使用midiInMessageand midiOutMessage,并且从 API 文档中,这些似乎直接与驱动程序通信。

我从文档中看到,Windows 10 提供了对 MIDI 的新支持;我还没有尝试过它如何与使用midiInOpen.

我已经联系了第三方应用程序开发人员,看看他们是否可以提供帮助。目前。我们的应用程序与他们的应用程序一起工作,但还有其他应用程序用于midiInOpen访问 MIDI 数据,我们的应用程序不能与他们的应用程序共存。第一个调用midiInOpen的应用程序获取 MIDI 流;第二次调用失败。

所有这些测试都是在 Windows 7 上完成的。我们需要支持 7 及更高版本。

我们的应用程序的 mac 版本在这方面运行良好。

4

1 回答 1

0

某些设备具有支持多客户端的非标准 WinMM 驱动程序。但这显然不是这里的情况。

目前,微软在 Windows 中提供了三种 MIDI API:

显然,第 3应用程序使用 DirectMusic。

于 2017-09-19T07:49:11.890 回答