From a8e14a6adb2e9ee29da163b1b85e9c8fcb9875ae Mon Sep 17 00:00:00 2001 From: GenericHeroGuy Date: Tue, 2 Dec 2025 23:41:54 +0100 Subject: [PATCH] Clamp floating-point sample data to +-1.0 for OpenAL Fixes horrendously amplified horns being loud as fuck (yes, Vorbis can encode samples louder than 0 dB!) --- src/sdl/al_sound.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/sdl/al_sound.c b/src/sdl/al_sound.c index cdd0c46b3..e719bcdd4 100644 --- a/src/sdl/al_sound.c +++ b/src/sdl/al_sound.c @@ -790,6 +790,14 @@ static ALuint LoadDataIntoBuffer(void *input, size_t size) size = pos; samplerate = info.samplerate; sf_close(snd); + + // SFC_SET_NORM_FLOAT apparently doesn't work, so gotta do this ourselves + if (sample_format == Float) + { + float *norm = (float *)data; + for (pos = 0; pos < size / sizeof(float); pos++) + norm[pos] = CLAMP(norm[pos], -1.0f, 1.0f); + } } }