SDL_mixer: timidity: fix S32 and F32 output:

From f9bf1c9d67d7e7cf0c5f257be3a30b2908cc1ccc Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Thu, 20 Aug 2026 23:40:40 +0300
Subject: [PATCH] timidity: fix S32 and F32 output:

timidity internal output isn't full-width 32 bits:
GUARD_BITS should be taken into account.

Reference issue: https://github.com/icculus/SDL_sound/issues/128 .
---
 src/timidity/output.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/timidity/output.c b/src/timidity/output.c
index 7df26369..7e8c92d1 100644
--- a/src/timidity/output.c
+++ b/src/timidity/output.c
@@ -75,7 +75,7 @@ void timi_s32tof32(void *dp, Sint32 *lp, Sint32 c)
   float *sp=(float *)(dp);
   while (c--)
     {
-      *sp++ = (float)(*lp++) / 2147483647.0f;
+      *sp++ = (float)(*lp++) / (float)(1<<(32 - GUARD_BITS - 1));
     }
 }
 
@@ -84,7 +84,7 @@ void timi_s32tof32x(void* dp, Sint32* lp, Sint32 c)
     float* sp = (float*)(dp);
     while (c--)
     {
-        *sp++ = SDL_SwapFloat((float)(*lp++) / 2147483647.0f);
+        *sp++ = SDL_SwapFloat((float)(*lp++) / (float)(1<<(32 - GUARD_BITS - 1)));
     }
 }
 
@@ -93,7 +93,7 @@ void timi_s32tos32(void *dp, Sint32 *lp, Sint32 c)
   Sint32 *sp=(Sint32 *)(dp);
   while (c--)
     {
-      *sp++ = (*lp++);
+      *sp++ = (*lp++)<<GUARD_BITS;
     }
 }
 
@@ -102,6 +102,6 @@ void timi_s32tos32x(void *dp, Sint32 *lp, Sint32 c)
   Sint32 *sp=(Sint32 *)(dp);
   while (c--)
     {
-      *sp++ = SDL_Swap32(*lp++);
+      *sp++ = SDL_Swap32((*lp++)<<GUARD_BITS);
     }
 }