我有一个播放 MIDI 文件的旧游戏,其中包含以下内容:
IDirectMusicPerformance8* m_pDMPerformance;
IDirectMusicLoader8* m_pDMLoader;
CoCreateInstance(CLSID_DirectMusicLoader, NULL, CLSCTX_INPROC, IID_IDirectMusicLoader8, (void**)&m_pDMLoader);
CoCreateInstance(CLSID_DirectMusicPerformance, NULL, CLSCTX_INPROC, IID_IDirectMusicPerformance8, (void**)&m_pDMPerformance);
m_pDMPerformance->InitAudio(NULL, NULL, m_hWnd, DMUS_APATH_SHARED_STEREOPLUSREVERB, 128, DMUS_AUDIOF_ALL, NULL);
无论用户的配置如何,这都会导致 MS GS Wavetable Synth + 混响。我需要能够将正确的原始 MIDI 输出到默认的 MIDI 设备,对于一些精明的用户来说,它是像 VirtualMidiSynth 或 FluidSynth 这样的软合成器、MT-32 仿真器、OPL3 仿真器,甚至是具有它自己的机载样本,例如真正的 MT-32。在应用程序中选择设备不是必需的——我宁愿让它选择默认/#0 MIDI 设备并将原始 MIDI 发送给它。.mid 文件本身是标准的,可以在其他媒体播放器中完美播放,这些播放器将原始 MIDI 输出到用户选择的设备或默认/#0 设备。