From d2c31059dd4814cfc8365c76499e21fdeaf723fe Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 29 May 2019 11:23:28 +0200 Subject: [PATCH] AM demod: implemented low pass filter after the demod --- plugins/channelrx/demodam/amdemod.cpp | 6 ++++++ plugins/channelrx/demodam/amdemod.h | 1 + 2 files changed, 7 insertions(+) diff --git a/plugins/channelrx/demodam/amdemod.cpp b/plugins/channelrx/demodam/amdemod.cpp index 9ed8f1303..d6be41e0a 100644 --- a/plugins/channelrx/demodam/amdemod.cpp +++ b/plugins/channelrx/demodam/amdemod.cpp @@ -260,6 +260,10 @@ void AMDemod::processOneSample(Complex &ci) demod = m_bandpass.filter(demod); demod /= 301.0f; } + else + { + demod = m_lowpass.filter(demod); + } Real attack = (m_squelchCount - 0.05f * m_audioSampleRate) / (0.05f * m_audioSampleRate); sample = demod * StepFunctions::smootherstep(attack) * (m_audioSampleRate/24) * m_settings.m_volume; @@ -383,6 +387,7 @@ void AMDemod::applyAudioSampleRate(int sampleRate) m_interpolatorDistanceRemain = 0; m_interpolatorDistance = (Real) m_inputSampleRate / (Real) sampleRate; m_bandpass.create(301, sampleRate, 300.0, m_settings.m_rfBandwidth / 2.0f); + m_lowpass.create(301, sampleRate, m_settings.m_rfBandwidth / 2.0f); m_audioFifo.setSize(sampleRate); m_squelchDelayLine.resize(sampleRate/5); DSBFilter->create_dsb_filter((2.0f * m_settings.m_rfBandwidth) / (float) sampleRate); @@ -456,6 +461,7 @@ void AMDemod::applySettings(const AMDemodSettings& settings, bool force) m_interpolatorDistanceRemain = 0; m_interpolatorDistance = (Real) m_inputSampleRate / (Real) m_audioSampleRate; m_bandpass.create(301, m_audioSampleRate, 300.0, settings.m_rfBandwidth / 2.0f); + m_lowpass.create(301, m_audioSampleRate, m_settings.m_rfBandwidth / 2.0f); DSBFilter->create_dsb_filter((2.0f * settings.m_rfBandwidth) / (float) m_audioSampleRate); m_settingsMutex.unlock(); diff --git a/plugins/channelrx/demodam/amdemod.h b/plugins/channelrx/demodam/amdemod.h index 9baba749a..1b2d2f764 100644 --- a/plugins/channelrx/demodam/amdemod.h +++ b/plugins/channelrx/demodam/amdemod.h @@ -207,6 +207,7 @@ private: MovingAverageUtil m_movingAverage; SimpleAGC<4800> m_volumeAGC; Bandpass m_bandpass; + Lowpass m_lowpass; Lowpass > m_pllFilt; PhaseLockComplex m_pll; fftfilt* DSBFilter;