gpt4 book ai didi

audio - 如何将使用 DirectMusic 在内部播放 MIDI 的旧游戏转换为将原始 MIDI 输出到默认设备?

转载 作者:行者123 更新时间:2023-12-03 01:30:58 25 4
gpt4 key购买 nike

我有一个播放 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 设备。

最佳答案

你有两个选择:

  • 传统Win32 MIDI API
  • UWP MIDI API

  • UWP API 允许使用 Win32 API 支持的所有 MIDI 设备,以及 Windows 10 上的蓝牙 LE MIDI。

    顺便说一句:VirtualMIDISynth 创建一个 MIDI 设备,模拟一个硬件 MIDI 设备,如 MS GS Wavetable Synth。但 FluidSynth 没有,因此您需要一个虚拟 MIDI 电缆驱动程序才能从 Windows 中的另一个应用程序向其输出 MIDI。

    关于audio - 如何将使用 DirectMusic 在内部播放 MIDI 的旧游戏转换为将原始 MIDI 输出到默认设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57999947/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com