同时从多个应用程序中打开一个单个MIDI输入流



我们正在添加支持我们应用程序中各种MIDI控制器设备的支持。从我们使用midiInOpen的试验中,似乎只有一个应用程序可以使用midiInOpen访问MIDI输入设备。试图打开MIDI设备的第二个应用程序失败,错误MMSYSERR_NOMEM

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

我使用API嗅探器查看API调用,并且此应用程序不使用midiInOpen。它使用midiInMessagemidiOutMessage,并且从API文档中,它们似乎直接与驱动程序进行通信。

我从文档中可以看到,Windows 10中提供了对MIDI的新支持;我尚未尝试与使用midiInOpen的应用程序一起工作,但是如果可能的话,我需要找到一个与Windows 7及更高版本一起使用的解决方案。

我已经联系了第三方应用程序开发人员,以查看他们是否可以提供帮助。现在。我们的应用程序与他们的应用程序一起工作,但是还有其他使用midiInOpen访问MIDI数据的应用程序,而我们的应用程序无法与它们的应用程序共存。第一个称为midiInOpen的应用程序获取MIDI流;第二个电话失败。

所有这些测试都是对Windows 7进行的。我们需要支持7及以上。

我们的Mac版本在这方面工作正常。

某些设备具有具有多客户支持的非标准Winmm驱动程序。但这显然不是这样。

当前,微软在Windows中提供了三个MIDI API:

  • Winmm Midi功能(midiInOpen等),
  • DirectMusic API和
  • Windows 10 UWP MIDI API。

显然,3 rd -party应用程序使用DirectMusic。

最新更新