题
我是一个音乐家和程序,并想创建自己的节目做音乐。我将开始与控制台应用程序在C++之前,我作一个图形用户界面。
我宁静的新C/C++和知道如何使一个基本的控制台应用程序和阅读有关的Win32API。
我找到MSDN多媒体Win32中的应用程序和我发现了很多功能MIDI: http://msdn.microsoft.com/en-us/library/dd798495(VS。85).aspx
我可以收到多少MIDI设备插入这样的:
#include <windows.h>
#include <iostream>
using namespace std;
int main() {
cout << midiInGetNumDevs();
cout << " MIDI devices connected" << endl;
return 0;
}
但现在我想找出如何将这些设备被称作, midiInGetID
能我想和一个 while
循环。有人可以帮我这个?功能要求一个 HMIDIIN
参数我不知道我怎么能得到一个由于几乎所有的MIDI功能使用这一参数。
我知道这是不是最明显的主题,但这将是巨大的,如果有人可以帮助我。
谢谢:)
解决方案
得到信息,您叫循环 midiInGetDevCaps, 与第一参数变化包括从0到的结果 midiInGetNumDevs
排除在外。每个填补了一个呼叫 MIDIINCAPS 结构(您通过一个指向结构的,当你打电话的功能)与信息有关的N的设备。要 打开 一个装置,并填补HMIDIIN所需的其他电话,你的呼叫 midiInOpen 与设备的数字(再次,0至N-1)作为第二个参数。
同一概念适用于设备的输出,除了名字 Out
而不是的 In
(和结构 OUT
而不是的 IN
).
其他提示
确定我计算出来。我不知道midiInGetDevCaps
需要到它的特定性质的调用返回的设备名称。
下面是我的代码:
#include <windows.h>
#include <iostream>
using namespace std;
int main() {
unsigned int devCount = midiInGetNumDevs();
cout << devCount << " MIDI devices connected:" << endl;
MIDIINCAPS inputCapabilities;
for (unsigned int i = 0; i < devCount; i++) {
midiInGetDevCaps(i, &inputCapabilities, sizeof(inputCapabilities));
cout << "[" << i << "] " << inputCapabilities.szPname << endl;
}
}
和感谢您的帮助!
不隶属于 StackOverflow