我实际上并不精通 C++ 或 SDL_Mixer,但我还是代表 Doom 社区提出了这个问题。简而言之,编写 Doom 源端口的人似乎无法弄清楚如何在 Windows Vista 或 7 上使用 SDL_Mixer 独立控制正常音量和 MIDI 音量。我会让 Eternity Engine 的作者 James Haley 用他自己的话说:
似乎在 Windows Vista 或 7 下不存在本机 MIDI 独立音量的概念,因为在任何具有它们的应用程序(包括大多数使用 SDL_mixer 的游戏)中使用 MIDI 音量滑块也会影响数字声音输出的音量。这使得试图调整音乐的相对音量以获得舒适感是不可能的。
有没有人找到任何解决方法?鉴于微软似乎在整个操作系统中以任何方式分别控制单个声音设备的音量,我猜这不太可能。
我听说过各种涉及胆小的驱动程序的解决方法,但这需要用户超越简单地在他的系统上安装游戏。我所知道的唯一能彻底解决这个问题的端口是 ZDoom,但它使用了与 GPL 不兼容的 FModEx,因此不是一个合适的解决方案。
如果您想查看一些代码,Chocolate Doom 可能是最容易理解的 Doom 源代码端口,您可以在此处获取它的源代码。
也欢迎对其他开源声音和音乐库提出任何建议。