From 4324709fe453f681adba7dadb78f91e3b4424431 Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Wed, 17 Apr 2024 10:05:49 +0200 Subject: [PATCH] filter out too short and too long pulses --- app/src/main/java/xdsopl/robot36/Demodulator.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/xdsopl/robot36/Demodulator.java b/app/src/main/java/xdsopl/robot36/Demodulator.java index 85b05ed..3f11ed2 100644 --- a/app/src/main/java/xdsopl/robot36/Demodulator.java +++ b/app/src/main/java/xdsopl/robot36/Demodulator.java @@ -18,7 +18,8 @@ public class Demodulator { private final Phasor baseBandOscillator; private final Delay syncPulseDelay; private final Delay scanLineDelay; - private final int syncPulseSamples; + private final int syncPulseLowMark; + private final int syncPulseHighMark; private float syncPulseMaxValue; private int syncPulseMaxPosition; private int syncPulseCounter; @@ -40,7 +41,9 @@ public class Demodulator { int scanLineFilterSamples = (int) Math.round(0.443 * sampleRate / scanLineCutoff) | 1; scanLineFilter = new ComplexMovingAverage(scanLineFilterSamples); double syncPulseSeconds = 0.009; - syncPulseSamples = (int) Math.round(syncPulseSeconds * sampleRate) | 1; + int syncPulseSamples = (int) Math.round(syncPulseSeconds * sampleRate) | 1; + syncPulseLowMark = syncPulseSamples / 2; + syncPulseHighMark = syncPulseSamples * 2; syncPulseFilter = new ComplexMovingAverage(syncPulseSamples); float lowestFrequency = 1100; float highestFrequency = 2300; @@ -78,7 +81,7 @@ public class Demodulator { syncPulseMaxPosition = syncPulseCounter; } ++syncPulseCounter; - } else if (syncPulseCounter > 0 && syncPulseCounter < syncPulseSamples) { + } else if (syncPulseCounter > syncPulseLowMark && syncPulseCounter < syncPulseHighMark) { syncPulseOffset = i + syncPulseMaxPosition - syncPulseCounter; syncPulseDetected = true; syncPulseCounter = 0;