[英]Get ID from MIDI devices in C++
我是音樂家和程序員,並且想創建自己的程序來制作音樂。 在制作GUI之前,我將從C ++中的控制台應用程序開始。
我是C / C ++的新手,並且知道如何制作基本的控制台應用程序,並且已閱讀有關Win32 API的信息。
我一直在研究Win32應用程序中用於多媒體的MSDN,並且發現了很多MIDI功能: http : //msdn.microsoft.com/zh-cn/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
的結果。 每次調用都使用第N個設備的信息填充MIDIINCAPS結構(在調用函數時將指針傳遞給該結構)。 要打開設備並填充其他呼叫所需的HMIDIIN,請使用設備號(再次包括0到N-1)作為第二個參數來調用midiInOpen 。
相同的概念適用於輸出設備,除了名稱使用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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.