Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
Commit 3c01757 introduced scaling down all sounds to prevent too many loud-ish sounds from making OpenAL scale the overall volume down. The problem is that before this change, many sounds had a volume > 1.0, but vastly different: e.g. player_machinegun_fire was 5.039685 (14dB) and player_chaingun_fire was 1.414214 (3dB). But in the end, all volumes were clamped to 1.0 before setting AL_GAIN (because AL_GAIN only supports values between 0 and 1 by default), so the machinegun and chaingun had the same volume after all. When scaling those down to 1/3 of the original volume, some sounds that used to have a volume of >= 1.0 (=> AL_GAIN set to 1.0) had a volume lower than 1.0, so they suddenly the chaingun sounded quiter than the machinegun. While theoretically this is more correct than before (after all, the sound shader of player_chaingun_fire set a much lower volume than that of player_machinegun_fire), it doesn't sound like it used to (even with the old software sound backend!). Clamping to 1.0 *before* scaling to 1/3 should restore the old behavior (of all sounds with volume > 1.0 before clamping using the same AL_GAIN) while still avoiding the issue of having OpenAL (Soft) scale down the overall volume when shooting a metal wall with the shotgun. Unsurprisingly the same problem (inconsistent weapon volumes due to incorrect sound shaders setting the volume way to high and thus relying on being clamped to 1.0) that occurred with my volume *= 0.333 hack also happens when reducing the global volume. So apply that global volume scale *after* clamping to 1.0 see bibendovsky/eaxefx#28 (comment)
- Loading branch information