I'm not actually well versed in C++ or SDL\_Mixer, but I'm asking this question anyway on behalf on the Doom community. Put simply, nobody writing Doom source ports can seem to figure out how to control normal sound volume and MIDI sound volume independently using SDL\_Mixer on Windows Vista or 7. I'll let James Haley, author of Eternity Engine, put it in his own words:

> 
> Seems the concept of independent volume for native MIDI doesn't exist under Windows Vista or 7, as using MIDI volume sliders in any application that has them (including most games that use SDL\_mixer) also affects the volume of digital sound output. This makes attempting to adjust the relative volume of music for comfort impossible. 
> 
> 
> Has anybody found any workarounds for this? I'm guessing it's unlikely given how Microsoft seems to have skimped throughout the OS on any way to control the volume of individual sound devices separately. 
> 
> 
> 

I've heard of various workarounds all involving a Timidity driver, but this requires the user go above and beyond simply installing the game on his system. The only port that I know of that definitively fixes this issue is ZDoom, but it uses the GPL-incompatible FModEx and is thus not a suitable solution.

If you want some code to look at, Chocolate Doom is perhaps the easiest Doom source port to grok and you can grab its source [here](https://chocolate-doom.svn.sourceforge.net/svnroot/chocolate-doom/trunk/chocolate-doom/).

Any suggestions on other open-source sound and music libraries would be welcome as well.