我是一个音乐家和程序,并想创建自己的节目做音乐。我将开始与控制台应用程序在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;
    }
}

和感谢您的帮助!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top