Я не очень хорошо разбираюсь в C ++ или SDL_Mixer, но я все равно задаю этот вопрос от имени сообщества Doom. Проще говоря, никто, пишущий исходные порты Doom, не может понять, как управлять нормальной громкостью звука и громкостью звука MIDI независимо, используя SDL_Mixer в Windows Vista или 7. Я позволю Джеймсу Хейли, автору Eternity Engine, написать это своими словами. :
Кажется, что концепция независимой громкости для родного MIDI не существует в Windows Vista или 7, поскольку использование ползунков громкости MIDI в любом приложении, в котором они есть (включая большинство игр, использующих SDL_mixer), также влияет на громкость вывода цифрового звука. Это делает попытку отрегулировать относительную громкость музыки для комфорта невозможной.
Кто-нибудь нашел обходные пути для этого? Я предполагаю, что это вряд ли, учитывая, что Microsoft, похоже, экономит на всей ОС, чтобы контролировать громкость отдельных звуковых устройств по отдельности.
Я слышал о различных обходных путях, связанных с драйвером Timidity, но это требует от пользователя не только простой установки игры в своей системе. Единственный известный мне порт, который решает эту проблему, - это ZDoom, но он использует FModEx, несовместимый с GPL, и поэтому не является подходящим решением.
Если вы хотите, чтобы какой-то код просматривал, Chocolate Doom, пожалуй, самый простой исходный порт Doom для поиска, и вы можете взять его источник здесь .
Приветствуются любые предложения по другим библиотекам звука и музыки с открытым исходным кодом.