我们正在添加对在我们的应用程序中访问各种MIDI控制器设备的支持。从使用midiInOpen
的我们自己的试验来看,似乎只有一个应用程序可以使用midiInOpen
访问MIDI输入设备。尝试打开MIDI设备的第二个应用程序失败,错误为MMSYSERR_NOMEM
。
但是,我有一个商业应用程序(第三方)的例子,它设法在我们的应用程序(使用midiInOpen
)的同时访问MIDI输入流。这表明还有另一种访问MIDI流的方法。
我使用API嗅探器查看API调用,此应用程序不使用midiInOpen
。它使用midiInMessage
和midiOutMessage
,并且从API文档中,这些似乎与驱动程序直接通信。
我从文档中看到Windows 10中提供了对MIDI的新支持;我还没有尝试使用midiInOpen
的应用程序,但如果可能的话,我需要找到适用于Windows 7及更高版本的解决方案。
我已与第三方应用开发者联系,看看他们是否可以提供帮助。目前。我们的应用程序与他们的应用程序一起工作,但还有其他应用程序使用midiInOpen
来访问MIDI数据,而我们的应用程序无法与他们的应用程序共存。第一个调用midiInOpen
的应用获取MIDI流;第二次通话失败。
所有这些测试都是在Windows 7上完成的。我们需要支持7及以上版本。
我们的应用程序的mac版本在这方面运行良好。
答案 0 :(得分:0)
某些设备具有支持多客户端的非标准WinMM驱动程序。但这显然不是这种情况。
目前,Microsoft在Windows中提供了三种MIDI API:
midiInOpen
等),显然,3 rd -party应用程序使用DirectMusic。