sound, increase output level a bit
authorkub <derkub@gmail.com>
Thu, 3 Jun 2021 19:55:17 +0000 (21:55 +0200)
committerkub <derkub@gmail.com>
Thu, 3 Jun 2021 20:06:03 +0000 (22:06 +0200)
pico/sound/mix.c
pico/sound/mix_arm.S

index 099b8c9..51882f7 100644 (file)
@@ -14,7 +14,7 @@
 
 /* limitter */
 #define Limit16(val) \
-       val -= val >> 2; /* reduce level to avoid clipping */   \
+       val -= val >> 3; /* reduce level to avoid clipping */   \
        if ((short)val != val) val = (val < 0 ? MINOUT : MAXOUT)
 
 int mix_32_to_16l_level;
index 6043898..20a1911 100644 (file)
@@ -156,7 +156,7 @@ m16_32_s2_no_unal2:
 @ limit
 @ reg=int_sample, r12=1, r8=tmp, kills flags
 .macro Limit reg
-    sub     \reg, \reg, \reg, asr #2   @ reduce audio lvl some to avoid clipping
+    sub     \reg, \reg, \reg, asr #3   @ reduce audio lvl some to avoid clipping
     add     r8, r12, \reg, asr #15
     bics    r8, r8, #1                 @ in non-overflow conditions r8 is 0 or 1
     movne   \reg, #0x8000
@@ -166,7 +166,7 @@ m16_32_s2_no_unal2:
 @ limit and shift up by 16
 @ reg=int_sample, r12=1, r8=tmp, kills flags
 .macro Limitsh reg
-    sub     \reg, \reg, \reg, asr #2   @ reduce audio lvl some to avoid clipping
+    sub     \reg, \reg, \reg, asr #3   @ reduce audio lvl some to avoid clipping
     add     r8, r12,\reg, asr #15
     bics    r8, r8, #1                 @ in non-overflow conditions r8 is 0 or 1
     moveq   \reg, \reg, lsl #16