Our FMOD Studio project is authored in 7.1 surround sound for PC. For players with stereo speakers or headphones, we rely on FMOD to downmix the output to stereo before passing the signal to the driver. This generally works well.
We have certain unit sounds configured to spatialize but not to attenuate with distance (the attenuation curve is set to OFF in FMOD Studio). This works fine, although some testers have reported that these sounds still attenuate a little, especially when the unit is far behind the camera. I figured this is related to the way FMOD downmixes from 7.1 to stereo, where rear speakers are given less weight than front speakers. Thus units far to the rear will mix down to a softer overall volume than units to the front. The difference in volume is fairly mild, and we are not too worried about it. One could even argue that it’s a nice way to indicate that a unit is obscured behind you.
But one of our testers has reported this volume attenuation effect being much more severe than for other testers. I got them to send me their logs and this is what System::getDriverInfo()
reports:
[BSoundManagerFMOD] Drivers: numdrivers=5, current=0
[BSoundManagerFMOD] Driver 0: name="Stereo Speakers (Realtek(R) Audio)", systemrate=48000, speakermode=7, speakermodechannels=8
[BSoundManagerFMOD] Driver 1: name="Speakers (Steam Streaming Speakers)", systemrate=48000, speakermode=3, speakermodechannels=2
[BSoundManagerFMOD] Driver 2: name="C27-30 (NVIDIA High Definition Audio)", systemrate=48000, speakermode=3, speakermodechannels=2
[BSoundManagerFMOD] Driver 3: name="C27-30 (NVIDIA High Definition Audio)", systemrate=48000, speakermode=3, speakermodechannels=2
[BSoundManagerFMOD] Driver 4: name="Speakers (Steam Streaming Microphone)", systemrate=48000, speakermode=3, speakermodechannels=2
[BSoundManagerFMOD] Software Format: samplerate=48000, speakermode=7, numrawspeakers=8
The default sound driver describes itself as “Stereo Speakers”, and yet the format is 7.1 surround. This implies that the device will perform its own 7.1 to stereo downmix, and apparently it’s not doing a great job of that.
Ideally we want FMOD to do the downmix before passing the stereo signal to the output. But this driver is “lying”, so what can we do? The only things I can think of so far are:
- Add a game option for the user to manually force stereo output.
- Look for the word “stereo” in the device name and force stereo output in that case.
I’m interested to know how others have dealt with such sound drivers that lie about their output format and apparently do their own (poor) downmixing. Is there some method to get the real output format?