- UID
- 1
- 精华
- 积分
- 76361
- 威望
- 点
- 宅币
- 个
- 贡献
- 次
- 宅之契约
- 份
- 最后登录
- 1970-1-1
- 在线时间
- 小时
|
发表于 2017-11-23 07:18:22
|
显示全部楼层
使用 midiOutGetDevCaps 即可。
- #include<stdio.h>
- #include<tchar.h>
- #include<Windows.h>
- int print_device(UINT nDevId)
- {
- MIDIOUTCAPSA midiCaps; // 设备信息
- if(midiOutGetDevCapsA(nDevId, &midiCaps, sizeof midiCaps) == MMSYSERR_NOERROR)
- {
- printf("制造商标识:%u\n", midiCaps.wMid);
- printf("产品标识:%u\n", midiCaps.wPid);
- printf("驱动版本:%u.%u\n", HIBYTE(midiCaps.vDriverVersion), LOBYTE(midiCaps.vDriverVersion));
- printf("产品名:%s\n", midiCaps.szPname);
- printf("MIDI输出方式:");
- switch(midiCaps.wTechnology)
- {
- case MOD_MIDIPORT:
- printf("MIDI硬件端口\n");break;
- case MOD_SYNTH:
- printf("合成器\n");break;
- case MOD_SQSYNTH:
- printf("方波合成器\n");break;
- case MOD_FMSYNTH:
- printf("FM合成器\n");break;
- case MOD_MAPPER:
- printf("微软MIDI波表\n");break;
- case MOD_SWSYNTH:
- printf("软件合成器\n");break;
- default:
- printf("未知原理\n");break;
- }
- if(midiCaps.wTechnology != MOD_MIDIPORT) // 端口不存在合成声音数量概念
- {
- printf("内部合成器支持的声音数量:%u\n", midiCaps.wVoices);
- printf("内部合成器支持的最大同时播放音符数:%u\n", midiCaps.wNotes);
- }
- printf("响应的通道的掩码:0x%04X\n", midiCaps.wChannelMask);
- if(midiCaps.dwSupport)
- {
- printf("支持的功能:(0x%04X)\n", midiCaps.dwSupport);
- if((midiCaps.dwSupport & MIDICAPS_CACHE) == MIDICAPS_CACHE)
- {
- printf("\t补丁缓存\n");
- }
- if((midiCaps.dwSupport & MIDICAPS_LRVOLUME) == MIDICAPS_LRVOLUME)
- {
- printf("\t左右声道音量控制\n");
- }
- else if((midiCaps.dwSupport & MIDICAPS_VOLUME) == MIDICAPS_VOLUME)
- {
- printf("\t音量控制\n");
- }
- if((midiCaps.dwSupport & MIDICAPS_STREAM) == MIDICAPS_STREAM)
- {
- printf("\t流式输出\n");
- }
- }
- return 1;
- }
- else
- {
- printf("获取该设备信息失败。\n");
- return 0;
- }
- }
- int main(int argc, char**argv)
- {
- UINT numDevs; // 设备个数
- UINT i;
- numDevs = midiOutGetNumDevs(); // 取得设备个数
- printf("MIDI设备个数:%u\n", numDevs);
- for(i = 0; i < numDevs; i++)
- {
-
- printf("================================\n");
- printf("第 %u 个设备的信息:\n", i + 1);
- print_device(i);
- }
-
- printf("================================\n");
- printf("微软内置波表合成器(MIDI_MAPPER):\n");
- print_device(MIDI_MAPPER);
- return 0;
- }
复制代码
midiOutEnum.exe
(62.5 KB, 下载次数: 0)
midiOutEnum_src.zip
(4.19 KB, 下载次数: 0)
|
|