sound, minor FM filter improvements
authorkub <derkub@gmail.com>
Tue, 4 Feb 2025 21:01:18 +0000 (22:01 +0100)
committerkub <derkub@gmail.com>
Tue, 4 Feb 2025 21:01:18 +0000 (22:01 +0100)
pico/sound/sound.c

index f24572c..d7de6e9 100644 (file)
@@ -91,7 +91,7 @@ PICO_INTERNAL void PsndReset(void)
 }\r
 \r
 // FM polyphase FIR resampling\r
-#define FMFIR_TAPS     9\r
+#define FMFIR_TAPS     8\r
 \r
 // resample FM from its native 53267Hz/52781Hz with polyphase FIR filter\r
 static int ymchans;\r
@@ -128,7 +128,7 @@ static void YMFM_setup_FIR(int inrate, int outrate, int stereo)
 {\r
   int mindiff = 999;\r
   int diff, mul, div;\r
-  int minmult = 22, maxmult = 55; // min,max interpolation factor\r
+  int minmult = 11, maxmult = 61; // min,max interpolation factor\r
 \r
   // compute filter ratio with largest multiplier for smallest error\r
   for (mul = minmult; mul <= maxmult; mul++) {\r
@@ -138,7 +138,7 @@ static void YMFM_setup_FIR(int inrate, int outrate, int stereo)
       mindiff = diff;\r
       Pico.snd.fm_fir_mul = mul;\r
       Pico.snd.fm_fir_div = div;\r
-      if (abs(mindiff) <= inrate/1000+1) break; // below error limit\r
+      if (abs(mindiff)*1000 <= inrate) break; // below error limit\r
     }\r
   }\r
   printf("FM polyphase FIR ratio=%d/%d error=%.3f%%\n",\r