From 7f57e4f45c3ec172b8a41d62c94b5e08992ed3fc Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Sat, 8 Aug 2020 22:51:03 +0200 Subject: [PATCH] compensate oversampling with the prefilter of csdr --- csdr/csdr.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/csdr/csdr.py b/csdr/csdr.py index 2945ca2..82e3f48 100644 --- a/csdr/csdr.py +++ b/csdr/csdr.py @@ -261,9 +261,12 @@ class dsp(object): if not self.output.supports_type("audio"): return chain # safe some cpu cycles... no need to decimate if decimation factor is 1 - last_decimation_block = ( - ["csdr fractional_decimator_ff {last_decimation}"] if self.last_decimation != 1.0 else [] - ) + last_decimation_block = [] + if self.last_decimation >= 2.0: + # activate prefilter if signal has been oversampled, e.g. WFM + last_decimation_block = ["csdr fractional_decimator_ff {last_decimation} 12 --prefilter"] + elif self.last_decimation >= 1.0: + last_decimation_block = ["csdr fractional_decimator_ff {last_decimation}"] if which == "nfm": chain += ["csdr fmdemod_quadri_cf", "csdr limit_ff"] chain += last_decimation_block @@ -275,7 +278,10 @@ class dsp(object): else: chain += ["csdr convert_f_s16"] elif which == "wfm": - chain += ["csdr fmdemod_quadri_cf", "csdr limit_ff"] + chain += [ + "csdr fmdemod_quadri_cf", + "csdr limit_ff", + ] chain += last_decimation_block chain += [ "csdr deemphasis_wfm_ff {audio_rate} 50e-6",