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