我其实不太熟悉C++或SDL_Mixer,但是我仍然代表Doom社区问这个问题。简而言之,没有人写Doom源端口似乎可以找出如何使用Windows Vista或7上的SDL_Mixer独立控制正常音量和MIDI音量。我会让Eternity Engine的作者James Haley用他自己的话说出来:SDL_Mixer Windows Vista/7上的MIDI音量问题
似乎对本地MIDI独立音量的概念,在Windows Vista或Windows 7不存在,因为在具有它们(包括使用SDL_mixer大多数游戏)的任何应用程序使用MIDI音量滑块也影响体积数字声音输出。这使得尝试调整音乐的相对音量以实现舒适是不可能的。
有没有人发现这方面的任何解决方法?我猜这不太可能是因为微软似乎在整个操作系统中以任何方式分别控制单个音频设备的音量。
我听说过所有涉及Timidity驱动程序的各种解决方法,但这要求用户不仅仅是在他的系统上安装游戏。我知道的唯一一个明确修复此问题的端口是ZDoom,但它使用GPL不兼容的FModEx,因此不是合适的解决方案。
如果你想要看一些代码,巧克力末日也许是最简单的末日来源港口grok,你可以抓住它的来源here。
对其他开源声音和音乐库的任何建议也会受到欢迎。
为什么不只是将现有的MIDI文件转换为WAV(或任何可以解压缩到PCM流的文件格式)并管理音乐流就好像它是与您混合的任何其他声音? – selbie 2011-05-03 04:16:19
MIDI文件被嵌入。WAD数据文件,并且有成千上万个用户自制的.WAD数据文件,其中一些可追溯到1994年。事先做好转换可能是不可能的。在程序本身中有Timidity ++和Fluidsynth,但我已经听说过两种情况下都不满意转换的抱怨。 – AlexMax 2011-05-03 05:21:28