From 8ee5edc9f243c0ad4da889f01e980e25a4132741 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Wed, 16 Aug 2023 17:07:18 +0200 Subject: [PATCH] add a lowpass to improve decoding performance --- csdr/chain/digimodes.py | 10 +++++++--- docker/scripts/install-owrx-tools.sh | 8 ++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/csdr/chain/digimodes.py b/csdr/chain/digimodes.py index a399c58d..015624be 100644 --- a/csdr/chain/digimodes.py +++ b/csdr/chain/digimodes.py @@ -3,7 +3,7 @@ from csdr.module.msk144 import Msk144Module, ParserAdapter from owrx.audio.chopper import AudioChopper, AudioChopperParser from owrx.aprs.kiss import KissDeframer from owrx.aprs import Ax25Parser, AprsParser -from pycsdr.modules import Convert, FmDemod, Agc, TimingRecovery, DBPskDecoder, VaricodeDecoder, RttyDecoder, BaudotDecoder +from pycsdr.modules import Convert, FmDemod, Agc, TimingRecovery, DBPskDecoder, VaricodeDecoder, RttyDecoder, BaudotDecoder, Lowpass from pycsdr.types import Format from owrx.aprs.module import DirewolfModule @@ -94,10 +94,12 @@ class RttyDemodulator(SecondaryDemodulator, SecondarySelectorChain): # this is an assumption, we will adjust in setSampleRate self.sampleRate = 12000 secondary_samples_per_bit = int(round(self.sampleRate / self.baudRate)) + cutoff = self.baudRate / self.sampleRate workers = [ Agc(Format.COMPLEX_FLOAT), FmDemod(), - TimingRecovery(Format.FLOAT, secondary_samples_per_bit, 0.5, 2), + Lowpass(Format.FLOAT, cutoff), + TimingRecovery(Format.FLOAT, secondary_samples_per_bit, 5, 2), RttyDecoder(invert), BaudotDecoder(), ] @@ -111,4 +113,6 @@ class RttyDemodulator(SecondaryDemodulator, SecondarySelectorChain): return self.sampleRate = sampleRate secondary_samples_per_bit = int(round(self.sampleRate / self.baudRate)) - self.replace(2, TimingRecovery(Format.FLOAT, secondary_samples_per_bit, 0.5, 2)) + cutoff = self.baudRate / self.sampleRate + self.replace(2, Lowpass(Format.FLOAT, cutoff)) + self.replace(3, TimingRecovery(Format.FLOAT, secondary_samples_per_bit, 5, 2)) diff --git a/docker/scripts/install-owrx-tools.sh b/docker/scripts/install-owrx-tools.sh index 7938b5f5..bc1d1c5c 100755 --- a/docker/scripts/install-owrx-tools.sh +++ b/docker/scripts/install-owrx-tools.sh @@ -32,13 +32,13 @@ popd rm -rf js8py git clone https://github.com/jketterl/csdr.git -# latest develop as of 2023-08-15 (rtty and baudot) -cmakebuild csdr 8966688f748d04486560e973a599c26ed4297f34 +# latest develop as of 2023-08-16 (added lowpass) +cmakebuild csdr 64a1603c4433e79f4b6a449711bfd86f977a997b git clone https://github.com/jketterl/pycsdr.git cd pycsdr -# latest develop as of 2023-08-15 (rtty and baudot) -git checkout 4e30b6c6a4d73ab4cf99698847c4df68e8206f73 +# latest develop as of 2023-08-16 (added lowpass) +git checkout eec718ae365583ebf5f315ae45967d2f635ff209 ./setup.py install install_headers cd .. rm -rf pycsdr