From 71cdba9e32f7e34c8477f29b358f6f6bf992e759 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 14 Feb 2026 23:10:29 +0100 Subject: [PATCH 01/24] Frequency Scanner: added voice squelch for SSB --- plugins/channelrx/freqscanner/freqscanner.cpp | 15 +- plugins/channelrx/freqscanner/freqscanner.h | 5 +- .../channelrx/freqscanner/freqscannergui.cpp | 18 ++ .../channelrx/freqscanner/freqscannergui.h | 2 + .../channelrx/freqscanner/freqscannergui.ui | 95 +++++++++- .../freqscanner/freqscannersettings.cpp | 18 ++ .../freqscanner/freqscannersettings.h | 6 + .../channelrx/freqscanner/freqscannersink.cpp | 162 +++++++++++++++++- .../channelrx/freqscanner/freqscannersink.h | 1 + 9 files changed, 306 insertions(+), 16 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscanner.cpp b/plugins/channelrx/freqscanner/freqscanner.cpp index 0228d18f8..bdabfcf0c 100644 --- a/plugins/channelrx/freqscanner/freqscanner.cpp +++ b/plugins/channelrx/freqscanner/freqscanner.cpp @@ -454,9 +454,11 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< { frequencySettings = m_settings.getFrequencySettings(m_scanResults[i].m_frequency); Real threshold = m_settings.getThreshold(frequencySettings); + if (m_scanResults[i].m_power >= threshold) { - if (!activeFrequencySettings || (m_scanResults[i].m_power > maxPower)) + if (!activeFrequencySettings || ((m_scanResults[i].m_power > maxPower) + && checkVoiceThreshold(m_settings.m_voiceSquelchType, m_scanResults[i].m_voiceActivityLevel, m_settings.m_voiceSquelchThreshold))) { frequency = m_scanResults[i].m_frequency; maxPower = m_scanResults[i].m_power; @@ -465,14 +467,16 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< } } } - else + else // TABLE_ORDER { // Find first frequency in list above threshold for (int i = 0; i < m_scanResults.size(); i++) { frequencySettings = m_settings.getFrequencySettings(m_scanResults[i].m_frequency); Real threshold = m_settings.getThreshold(frequencySettings); - if (m_scanResults[i].m_power >= threshold) + + if ((m_scanResults[i].m_power >= threshold) + && checkVoiceThreshold(m_settings.m_voiceSquelchType, m_scanResults[i].m_voiceActivityLevel, m_settings.m_voiceSquelchThreshold)) { frequency = m_scanResults[i].m_frequency; activeFrequencySettings = frequencySettings; @@ -787,6 +791,11 @@ void FreqScanner::unmuteAll() m_autoMutedChannels.clear(); } +bool FreqScanner::checkVoiceThreshold(FreqScannerSettings::VoiceSquelchType voiceSquelchType, Real voiceActivityLevel, Real voiceSquelchThreshold) +{ + return (voiceSquelchType == FreqScannerSettings::VoiceSquelchType::None) || (voiceActivityLevel >= voiceSquelchThreshold); +} + void FreqScanner::applyChannelSetting(const QString& channel) { if (!MainCore::getDeviceAndChannelIndexFromId(channel, m_scanDeviceSetIndex, m_scanChannelIndex)) { diff --git a/plugins/channelrx/freqscanner/freqscanner.h b/plugins/channelrx/freqscanner/freqscanner.h index 6cea330d6..d3b3b63ce 100644 --- a/plugins/channelrx/freqscanner/freqscanner.h +++ b/plugins/channelrx/freqscanner/freqscanner.h @@ -154,9 +154,10 @@ public: struct ScanResult { qint64 m_frequency; float m_power; + float m_voiceActivityLevel; // 0.0-1.0, voice likelihood for SSB modes }; - const QDateTime& getFFTStartTime() { return m_fftStartTime; } + const QDateTime& getFFTStartTime() const { return m_fftStartTime; } QList& getScanResults() { return m_scanResults; } static MsgScanResult* create(const QDateTime& fftStartTime) { @@ -428,6 +429,7 @@ private: void unmuteAll(); void mute(unsigned int deviceSetIndex, unsigned int channelIndex); void unmute(unsigned int deviceSetIndex, unsigned int channelIndex); + bool checkVoiceThreshold(FreqScannerSettings::VoiceSquelchType voiceSquelchType, Real voiceActivityLevel, Real voiceSquelchThreshold); static QList *createFrequencyList(const FreqScannerSettings& settings); @@ -440,4 +442,3 @@ private slots: }; #endif // INCLUDE_FREQSCANNER_H - diff --git a/plugins/channelrx/freqscanner/freqscannergui.cpp b/plugins/channelrx/freqscanner/freqscannergui.cpp index cf9b2e616..723947cbe 100644 --- a/plugins/channelrx/freqscanner/freqscannergui.cpp +++ b/plugins/channelrx/freqscanner/freqscannergui.cpp @@ -361,6 +361,19 @@ void FreqScannerGUI::on_thresh_valueChanged(int value) applySetting("threshold"); } +void FreqScannerGUI::on_voiceThreshold_valueChanged(int value) +{ + ui->voiceThresholdText->setText(QString("%1").arg(value / 100.0, 0, 'f', 2)); + m_settings.m_voiceSquelchThreshold = value / 100.0; + applySetting("voiceSquelchThreshold"); +} + +void FreqScannerGUI::on_voiceSquelchType_currentIndexChanged(int index) +{ + m_settings.m_voiceSquelchType = (FreqScannerSettings::VoiceSquelchType)index; + applySetting("voiceSquelchType"); +} + void FreqScannerGUI::on_priority_currentIndexChanged(int index) { m_settings.m_priority = (FreqScannerSettings::Priority)index; @@ -607,6 +620,9 @@ void FreqScannerGUI::displaySettings() ui->tuneTimeText->setText(QString("%1 ms").arg(m_settings.m_tuneTime)); ui->thresh->setValue(m_settings.m_threshold * 10.0); ui->threshText->setText(QString("%1 dB").arg(m_settings.m_threshold, 0, 'f', 1)); + ui->voiceThreshold->setValue(m_settings.m_voiceSquelchThreshold * 100.0); + ui->voiceThresholdText->setText(QString("%1").arg(m_settings.m_voiceSquelchThreshold, 0, 'f', 2)); + ui->voiceSquelch->setCurrentIndex((int)m_settings.m_voiceSquelchType); ui->priority->setCurrentIndex((int)m_settings.m_priority); ui->measurement->setCurrentIndex((int)m_settings.m_measurement); ui->mode->setCurrentIndex((int)m_settings.m_mode); @@ -1256,6 +1272,8 @@ void FreqScannerGUI::makeUIConnections() QObject::connect(ui->retransmitTime, &QDial::valueChanged, this, &FreqScannerGUI::on_retransmitTime_valueChanged); QObject::connect(ui->tuneTime, &QDial::valueChanged, this, &FreqScannerGUI::on_tuneTime_valueChanged); QObject::connect(ui->thresh, &QDial::valueChanged, this, &FreqScannerGUI::on_thresh_valueChanged); + QObject::connect(ui->voiceSquelch, QOverload::of(&QComboBox::currentIndexChanged), this, &FreqScannerGUI::on_voiceSquelchType_currentIndexChanged); + QObject::connect(ui->voiceThreshold, &QDial::valueChanged, this, &FreqScannerGUI::on_voiceThreshold_valueChanged); QObject::connect(ui->priority, QOverload::of(&QComboBox::currentIndexChanged), this, &FreqScannerGUI::on_priority_currentIndexChanged); QObject::connect(ui->measurement, QOverload::of(&QComboBox::currentIndexChanged), this, &FreqScannerGUI::on_measurement_currentIndexChanged); QObject::connect(ui->mode, QOverload::of(&QComboBox::currentIndexChanged), this, &FreqScannerGUI::on_mode_currentIndexChanged); diff --git a/plugins/channelrx/freqscanner/freqscannergui.h b/plugins/channelrx/freqscanner/freqscannergui.h index 6cbc08553..4962b7e14 100644 --- a/plugins/channelrx/freqscanner/freqscannergui.h +++ b/plugins/channelrx/freqscanner/freqscannergui.h @@ -132,6 +132,8 @@ private slots: void on_retransmitTime_valueChanged(int value); void on_tuneTime_valueChanged(int value); void on_thresh_valueChanged(int value); + void on_voiceThreshold_valueChanged(int value); + void on_voiceSquelchType_currentIndexChanged(int index); void on_priority_currentIndexChanged(int index); void on_measurement_currentIndexChanged(int index); void on_mode_currentIndexChanged(int index); diff --git a/plugins/channelrx/freqscanner/freqscannergui.ui b/plugins/channelrx/freqscanner/freqscannergui.ui index bb057abaa..94f9bad24 100644 --- a/plugins/channelrx/freqscanner/freqscannergui.ui +++ b/plugins/channelrx/freqscanner/freqscannergui.ui @@ -6,8 +6,8 @@ 0 0 - 516 - 423 + 676 + 410 @@ -39,7 +39,7 @@ 0 0 - 511 + 671 411 @@ -166,6 +166,9 @@ + + Qt::Vertical + 40 @@ -257,8 +260,50 @@ + + + + VTH + + + + + + + + 24 + 24 + + + + Power threshold in dB + + + 0 + + + 100 + + + 1 + + + 50 + + + + + + + 0.01 + + + + + Qt::Vertical + 40 @@ -526,6 +571,9 @@ + + Qt::Vertical + 40 @@ -663,6 +711,32 @@ + + + + VSq + + + + + + + + None + + + + + LSB + + + + + USB + + + + @@ -863,6 +937,9 @@ Leave blank for no adjustment + + Qt::Vertical + 40 @@ -898,18 +975,18 @@ Leave blank for no adjustment QToolButton
gui/buttonswitch.h
- - ValueDialZ - QWidget -
gui/valuedialz.h
- 1 -
RollupContents QWidget
gui/rollupcontents.h
1
+ + ValueDialZ + QWidget +
gui/valuedialz.h
+ 1 +
deltaFrequency diff --git a/plugins/channelrx/freqscanner/freqscannersettings.cpp b/plugins/channelrx/freqscanner/freqscannersettings.cpp index ea7430cba..365d52874 100644 --- a/plugins/channelrx/freqscanner/freqscannersettings.cpp +++ b/plugins/channelrx/freqscanner/freqscannersettings.cpp @@ -46,6 +46,8 @@ void FreqScannerSettings::resetToDefaults() m_scanTime = 0.1f; m_retransmitTime = 2.0f; m_tuneTime = 100; + m_voiceSquelchThreshold = 0.5f; + m_voiceSquelchType = None; m_priority = MAX_POWER; m_measurement = PEAK; m_mode = CONTINUOUS; @@ -76,6 +78,8 @@ QByteArray FreqScannerSettings::serialize() const s.writeS32(2, m_channelBandwidth); s.writeS32(3, m_channelFrequencyOffset); s.writeFloat(4, m_threshold); + s.writeS32(5, (int)m_voiceSquelchType); + s.writeFloat(6, m_voiceSquelchThreshold); s.writeString(8, m_channel); s.writeFloat(9, m_scanTime); s.writeFloat(10, m_retransmitTime); @@ -130,6 +134,8 @@ bool FreqScannerSettings::deserialize(const QByteArray& data) d.readS32(2, &m_channelBandwidth, 25000); d.readS32(3, &m_channelFrequencyOffset, 25000); d.readFloat(4, &m_threshold, -60.0f); + d.readS32(5, (int*)&m_voiceSquelchType, (int)None); + d.readFloat(6, &m_voiceSquelchThreshold, 0.5f); d.readString(8, &m_channel); d.readFloat(9, &m_scanTime, 0.1f); d.readFloat(10, &m_retransmitTime, 2.0f); @@ -222,6 +228,12 @@ void FreqScannerSettings::applySettings(const QStringList& settingsKeys, const F if (settingsKeys.contains("threshold")) { m_threshold = settings.m_threshold; } + if (settingsKeys.contains("voiceSquelchThreshold")) { + m_voiceSquelchThreshold = settings.m_voiceSquelchThreshold; + } + if (settingsKeys.contains("voiceSquelchType")) { + m_voiceSquelchType = settings.m_voiceSquelchType; + } if (settingsKeys.contains("frequencySettings")) { m_frequencySettings = settings.m_frequencySettings; } @@ -303,6 +315,12 @@ QString FreqScannerSettings::getDebugString(const QStringList& settingsKeys, boo if (settingsKeys.contains("threshold") || force) { ostr << " m_threshold: " << m_threshold; } + if (settingsKeys.contains("voiceSquelchThreshold") || force) { + ostr << " m_voiceSquelchThreshold: " << m_voiceSquelchThreshold; + } + if (settingsKeys.contains("voiceSquelchType") || force) { + ostr << " m_voiceSquelchType: " << m_voiceSquelchType; + } if (settingsKeys.contains("frequencySettings") || force) { QStringList s; diff --git a/plugins/channelrx/freqscanner/freqscannersettings.h b/plugins/channelrx/freqscanner/freqscannersettings.h index 9a04b7103..7bfbec10d 100644 --- a/plugins/channelrx/freqscanner/freqscannersettings.h +++ b/plugins/channelrx/freqscanner/freqscannersettings.h @@ -49,11 +49,17 @@ struct FreqScannerSettings qint32 m_channelFrequencyOffset;//!< Minimum DC offset of tuned channel qint32 m_channelShift; //!< Channel frequency shift Real m_threshold; //!< Power threshold in dB + Real m_voiceSquelchThreshold; //!< Voice squelch threshold in the range [0.0, 1.0]. Only relevant if voice squelch is enabled. QString m_channel; //!< Channel (E.g: R1:4) to tune to active frequency QList m_frequencySettings; //!< Frequencies to scan and corresponding settings float m_scanTime; //!< In seconds float m_retransmitTime; //!< In seconds int m_tuneTime; //!< In milliseconds + enum VoiceSquelchType { + None, + VoiceLsb, + VoiceUsb, + } m_voiceSquelchType; //!< Voice squelch type for SSB modes. None means no voice squelch, VoiceLsb means voice squelch on lower sideband frequencies, VoiceUsb means voice squelch on upper sideband frequencies. enum Priority { MAX_POWER, TABLE_ORDER diff --git a/plugins/channelrx/freqscanner/freqscannersink.cpp b/plugins/channelrx/freqscanner/freqscannersink.cpp index c0bb5cd27..446866594 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.cpp +++ b/plugins/channelrx/freqscanner/freqscannersink.cpp @@ -144,8 +144,17 @@ void FreqScannerSink::processOneSample(Complex &ci) } else { power = totalPower(bin, channelBins); } - //qDebug() << "startFrequency:" << startFrequency << "m_scannerSampleRate:" << m_scannerSampleRate << "m_centerFrequency:" << m_centerFrequency << "frequency" << frequency << "bin" << bin << "power" << power; - FreqScanner::MsgScanResult::ScanResult result = {frequency, power}; + + // Calculate voice activity level if using voice trigger + Real voiceLevel = 0.0; + if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceLsb) { + voiceLevel = voiceActivityLevel(bin, channelBins, true); + } else if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceUsb) { + voiceLevel = voiceActivityLevel(bin, channelBins, false); + } + + //qDebug() << "startFrequency:" << startFrequency << "m_scannerSampleRate:" << m_scannerSampleRate << "m_centerFrequency:" << m_centerFrequency << "frequency" << frequency << "bin" << bin << "power" << power << "voiceLevel" << voiceLevel; + FreqScanner::MsgScanResult::ScanResult result = {frequency, power, voiceLevel}; results.append(result); } } @@ -268,3 +277,152 @@ void FreqScannerSink::applySettings(const FreqScannerSettings& settings, const Q m_settings.applySettings(settingsKeys, settings); } } + +// Voice activity detection for SSB signals +// Detects voice by looking for formant-like structure (broad spectral peaks) +// Returns a value from 0.0 (no voice) to 1.0 (strong voice signature) +Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) const +{ + // Voice band in SSB is typically 100-3000 Hz from carrier + // We look for 2-4 formant peaks with bandwidth 50-200 Hz each + + int startBin = bin - channelBins / 2 + 1; + int endBin = startBin + channelBins - 1; + + if (startBin < 0 || endBin >= m_fftSize) { + return 0.0; + } + + // Calculate bin bandwidth in Hz + float binBW = m_scannerSampleRate / (float)m_fftSize; + + // For LSB, spectrum is reversed - flip the search direction + int step = isLSB ? -1 : 1; + int searchStart = isLSB ? endBin : startBin; + int searchEnd = isLSB ? startBin : endBin; + + // Find peaks above noise floor + QVector peakBins; + QVector peakMags; + + // Calculate average noise floor + Real noiseFloor = 0.0; + int noiseCount = 0; + for (int i = startBin; i <= endBin; i++) { + noiseFloor += m_magSq[i]; + noiseCount++; + } + noiseFloor = (noiseCount > 0) ? (noiseFloor / noiseCount) : 1e-12; + Real threshold = noiseFloor * 3.0; // 4.77 dB above noise + + // Simple peak detection + int i = searchStart; + while ((isLSB && i >= searchEnd) || (!isLSB && i <= searchEnd)) + { + if (m_magSq[i] > threshold) + { + // Found potential peak start + Real peakMag = m_magSq[i]; + int peakBin = i; + + // Find local maximum + i += step; + while ((isLSB && i >= searchEnd) || (!isLSB && i <= searchEnd)) + { + if (m_magSq[i] > peakMag) { + peakMag = m_magSq[i]; + peakBin = i; + i += step; + } else if (m_magSq[i] > threshold) { + i += step; + } else { + break; // Peak ended + } + } + + peakBins.append(peakBin); + peakMags.append(peakMag); + } + i += step; + } + + if (peakBins.size() < 2) { + return 0.0; // Need at least 2 peaks for voice + } + + // Measure peak bandwidths + int broadPeakCount = 0; + for (int p = 0; p < peakBins.size(); p++) + { + int peakBin = peakBins[p]; + Real peakMag = peakMags[p]; + Real halfPower = peakMag * 0.5; // 3dB point + + // Measure bandwidth at half power (-3dB) + int bwCount = 1; // Peak bin itself + + // Search left + for (int j = peakBin - 1; j >= startBin; j--) { + if (m_magSq[j] > halfPower) { + bwCount++; + } else { + break; + } + } + + // Search right + for (int j = peakBin + 1; j <= endBin; j++) { + if (m_magSq[j] > halfPower) { + bwCount++; + } else { + break; + } + } + + float bandwidth = bwCount * binBW; + + // Voice formants are typically 50-200 Hz wide + // CW signals are <50 Hz wide + if (bandwidth >= 50.0 && bandwidth <= 200.0) { + broadPeakCount++; + } + } + + // Check formant spacing (voice formants are typically 500-1500 Hz apart) + bool goodSpacing = false; + if (broadPeakCount >= 2 && peakBins.size() >= 2) + { + for (int p = 0; p < peakBins.size() - 1; p++) + { + int spacing = std::abs(peakBins[p + 1] - peakBins[p]); + float spacingHz = spacing * binBW; + if (spacingHz >= 400.0 && spacingHz <= 1800.0) { + goodSpacing = true; + break; + } + } + } + + // Calculate voice activity score + // 2-4 broad peaks with good spacing = strong voice signature + float score = 0.0; + + if (broadPeakCount >= 2) + { + // Base score from number of broad peaks + score = std::min(broadPeakCount / 4.0f, 1.0f); + + // Boost if spacing is good + if (goodSpacing) { + score = std::min(score * 1.5f, 1.0f); + } + + // Penalize if too many narrow peaks (likely CW or noise) + int narrowPeakCount = peakBins.size() - broadPeakCount; + if (narrowPeakCount > broadPeakCount) { + score *= 0.5; + } + } + + return score; +} diff --git a/plugins/channelrx/freqscanner/freqscannersink.h b/plugins/channelrx/freqscanner/freqscannersink.h index 4fe85aeb4..976a312bc 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.h +++ b/plugins/channelrx/freqscanner/freqscannersink.h @@ -80,6 +80,7 @@ private: Real totalPower(int bin, int channelBins) const; Real peakPower(int bin, int channelBins) const; Real magSq(int bin) const; + Real voiceActivityLevel(int bin, int channelBins, bool isLSB) const; }; #endif // INCLUDE_FREQSCANNERSINK_H From 4312fc3f0c72ec069f12de132c5c7154aafa9363 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 15 Feb 2026 01:08:44 +0100 Subject: [PATCH 02/24] Frequency Scanner: for voice SSB calculate min bits so that bin size is ~25 Hz --- plugins/channelrx/freqscanner/freqscanner.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/channelrx/freqscanner/freqscanner.cpp b/plugins/channelrx/freqscanner/freqscanner.cpp index bdabfcf0c..ae378acd3 100644 --- a/plugins/channelrx/freqscanner/freqscanner.cpp +++ b/plugins/channelrx/freqscanner/freqscanner.cpp @@ -672,7 +672,13 @@ void FreqScanner::timeout() void FreqScanner::calcScannerSampleRate(int channelBW, int basebandSampleRate, int& scannerSampleRate, int& fftSize, int& binsPerChannel) { const int maxFFTSize = 16384; - const int minBinsPerChannel = 8; + int minBinsPerChannel = 8; + + if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceSquelchType::VoiceLsb + || m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceSquelchType::VoiceUsb) + { + minBinsPerChannel = channelBW / 25; // 25Hz bins for voice activity detection + } // Base FFT size on that used for main spectrum std::vector& deviceSets = MainCore::instance()->getDeviceSets(); From bb711fc96594bcdd3f584c0116e94c1862af85b0 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 15 Feb 2026 09:24:50 +0100 Subject: [PATCH 03/24] Frequency Scanner: for voice squelch use a fixed 48 kHz scanner sanple rate and FFT size of 2048 --- plugins/channelrx/freqscanner/freqscanner.cpp | 5 ++++- plugins/channelrx/freqscanner/freqscannersink.cpp | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscanner.cpp b/plugins/channelrx/freqscanner/freqscanner.cpp index ae378acd3..24d3d55b9 100644 --- a/plugins/channelrx/freqscanner/freqscanner.cpp +++ b/plugins/channelrx/freqscanner/freqscanner.cpp @@ -677,7 +677,10 @@ void FreqScanner::calcScannerSampleRate(int channelBW, int basebandSampleRate, i if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceSquelchType::VoiceLsb || m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceSquelchType::VoiceUsb) { - minBinsPerChannel = channelBW / 25; // 25Hz bins for voice activity detection + scannerSampleRate = 48000; // Use 48kHz sample rate for voice squelch, to give better resolution at low bandwidths + fftSize = 2048; // Use 2048 FFT size for voice squelch, to give better resolution at low bandwidths + binsPerChannel = fftSize / (scannerSampleRate / (float)channelBW); // 128 for typical channel bandwidth of 3000Hz + return; } // Base FFT size on that used for main spectrum diff --git a/plugins/channelrx/freqscanner/freqscannersink.cpp b/plugins/channelrx/freqscanner/freqscannersink.cpp index 446866594..ec827cf7c 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.cpp +++ b/plugins/channelrx/freqscanner/freqscannersink.cpp @@ -124,8 +124,10 @@ void FreqScannerSink::processOneSample(Complex &ci) // Ignore results in upper and lower 12.5%, as there may be aliasing here from half-band filters if ((diff >= m_scannerSampleRate / 8) && (diff < m_scannerSampleRate * 7 / 8)) { - int bin = std::round(diff / binBW); - int channelBins; + int bin = std::round(diff / binBW); // Bin corresponding to the frequency + int channelBins; // Number of bins in the channel containing the frequency. + // This is either the default (m_binsPerChannel) + // or calculated based on the channel bandwidth if specified in settings for this frequency if (m_settings.m_frequencySettings[i].m_channelBandwidth.isEmpty()) { From bc49e37f8b9ae2c56c0ac6658ef929142b22fdcd Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 15 Feb 2026 11:20:13 +0100 Subject: [PATCH 04/24] Frequency Scanner: added a button to force continue scanning --- plugins/channelrx/freqscanner/freqscanner.cpp | 12 +++++++++++ plugins/channelrx/freqscanner/freqscanner.h | 18 +++++++++++++++++ .../channelrx/freqscanner/freqscannergui.cpp | 7 +++++++ .../channelrx/freqscanner/freqscannergui.h | 1 + .../channelrx/freqscanner/freqscannergui.ui | 20 +++++++++++++++++++ 5 files changed, 58 insertions(+) diff --git a/plugins/channelrx/freqscanner/freqscanner.cpp b/plugins/channelrx/freqscanner/freqscanner.cpp index 24d3d55b9..f7222c47d 100644 --- a/plugins/channelrx/freqscanner/freqscanner.cpp +++ b/plugins/channelrx/freqscanner/freqscanner.cpp @@ -49,6 +49,7 @@ MESSAGE_CLASS_DEFINITION(FreqScanner::MsgReportChannels, Message) MESSAGE_CLASS_DEFINITION(FreqScanner::MsgStartScan, Message) MESSAGE_CLASS_DEFINITION(FreqScanner::MsgStopScan, Message) MESSAGE_CLASS_DEFINITION(FreqScanner::MsgScanComplete, Message) +MESSAGE_CLASS_DEFINITION(FreqScanner::MsgContinueScan, Message) MESSAGE_CLASS_DEFINITION(FreqScanner::MsgScanResult, Message) MESSAGE_CLASS_DEFINITION(FreqScanner::MsgStatus, Message) MESSAGE_CLASS_DEFINITION(FreqScanner::MsgReportActiveFrequency, Message) @@ -261,6 +262,12 @@ bool FreqScanner::handleMessage(const Message& cmd) return true; } + else if (MsgContinueScan::match(cmd)) + { + continueScan(); + + return true; + } else { return false; @@ -320,6 +327,11 @@ void FreqScanner::initScan() m_state = SCAN_FOR_MAX_POWER; } +void FreqScanner::continueScan() +{ + m_state = SCAN_FOR_MAX_POWER; +} + void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList& results) { switch (m_state) diff --git a/plugins/channelrx/freqscanner/freqscanner.h b/plugins/channelrx/freqscanner/freqscanner.h index d3b3b63ce..69118c382 100644 --- a/plugins/channelrx/freqscanner/freqscanner.h +++ b/plugins/channelrx/freqscanner/freqscanner.h @@ -146,6 +146,23 @@ public: } }; + class MsgContinueScan : public Message { + MESSAGE_CLASS_DECLARATION + + public: + + static MsgContinueScan* create() + { + return new MsgContinueScan(); + } + + private: + + MsgContinueScan() : + Message() + { + } + }; class MsgScanResult : public Message { MESSAGE_CLASS_DECLARATION @@ -422,6 +439,7 @@ private: void startScan(); void stopScan(); void initScan(); + void continueScan(); void processScanResults(const QDateTime& fftStartTime, const QList& results); void setDeviceCenterFrequency(qint64 frequency); void applyChannelSetting(const QString& channel); diff --git a/plugins/channelrx/freqscanner/freqscannergui.cpp b/plugins/channelrx/freqscanner/freqscannergui.cpp index 723947cbe..2d128d1ea 100644 --- a/plugins/channelrx/freqscanner/freqscannergui.cpp +++ b/plugins/channelrx/freqscanner/freqscannergui.cpp @@ -682,6 +682,12 @@ void FreqScannerGUI::on_startStop_toggled(bool checked) } } +void FreqScannerGUI::on_continueScan_clicked() +{ + FreqScanner::MsgContinueScan* message = FreqScanner::MsgContinueScan::create(); + m_freqScanner->getInputMessageQueue()->push(message); +} + void FreqScannerGUI::addRow(const FreqScannerSettings::FrequencySettings& frequencySettings) { int row = ui->table->rowCount(); @@ -1278,6 +1284,7 @@ void FreqScannerGUI::makeUIConnections() QObject::connect(ui->measurement, QOverload::of(&QComboBox::currentIndexChanged), this, &FreqScannerGUI::on_measurement_currentIndexChanged); QObject::connect(ui->mode, QOverload::of(&QComboBox::currentIndexChanged), this, &FreqScannerGUI::on_mode_currentIndexChanged); QObject::connect(ui->startStop, &ButtonSwitch::toggled, this, &FreqScannerGUI::on_startStop_toggled); + QObject::connect(ui->continueScan, &QPushButton::clicked, this, &FreqScannerGUI::on_continueScan_clicked); QObject::connect(ui->table, &QTableWidget::cellChanged, this, &FreqScannerGUI::on_table_cellChanged); QObject::connect(ui->addSingle, &QToolButton::clicked, this, &FreqScannerGUI::on_addSingle_clicked); QObject::connect(ui->addRange, &QToolButton::clicked, this, &FreqScannerGUI::on_addRange_clicked); diff --git a/plugins/channelrx/freqscanner/freqscannergui.h b/plugins/channelrx/freqscanner/freqscannergui.h index 4962b7e14..b92f98807 100644 --- a/plugins/channelrx/freqscanner/freqscannergui.h +++ b/plugins/channelrx/freqscanner/freqscannergui.h @@ -145,6 +145,7 @@ private slots: void columnSelectMenu(QPoint pos); void columnSelectMenuChecked(bool checked = false); void on_startStop_toggled(bool checked = false); + void on_continueScan_clicked(); void on_addSingle_clicked(); void on_addRange_clicked(); void on_remove_clicked(); diff --git a/plugins/channelrx/freqscanner/freqscannergui.ui b/plugins/channelrx/freqscanner/freqscannergui.ui index 94f9bad24..b8e1a8c98 100644 --- a/plugins/channelrx/freqscanner/freqscannergui.ui +++ b/plugins/channelrx/freqscanner/freqscannergui.ui @@ -698,6 +698,26 @@
+ + + + + 32 + 16777215 + + + + Force scanner to continue on next frequency + + + + + + + :/arrow_left.png:/arrow_left.png + + + From 37afa7be74eff057eb176b57aeadcae56e56a1e7 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 15 Feb 2026 18:22:23 +0100 Subject: [PATCH 05/24] Freq Scanner Voice squelch: eliminate formants outside audio band --- plugins/channelrx/freqscanner/freqscannersink.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscannersink.cpp b/plugins/channelrx/freqscanner/freqscannersink.cpp index ec827cf7c..a4054f082 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.cpp +++ b/plugins/channelrx/freqscanner/freqscannersink.cpp @@ -342,8 +342,17 @@ Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) c } } - peakBins.append(peakBin); - peakMags.append(peakMag); + // Calculate frequency offset from carrier + // For USB: carrier is at startBin, voice extends upward + // For LSB: carrier is at endBin, voice extends downward + int carrierBin = isLSB ? endBin : startBin; + float freqOffset = std::abs(peakBin - carrierBin) * binBW; + + // Only include peaks within SSB voice bandwidth (0-3000 Hz from carrier) + if (freqOffset <= 3000.0) { + peakBins.append(peakBin); + peakMags.append(peakMag); + } } i += step; } From 65e999f842ff337a0fa413e239d19cb0f7b27a57 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 15 Feb 2026 21:28:05 +0100 Subject: [PATCH 06/24] Freq Scanner voice squelch: compute formants on individual FFTs --- .../channelrx/freqscanner/freqscannersink.cpp | 105 +++++++++++++++--- .../channelrx/freqscanner/freqscannersink.h | 3 + 2 files changed, 93 insertions(+), 15 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscannersink.cpp b/plugins/channelrx/freqscanner/freqscannersink.cpp index a4054f082..7e40e59c5 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.cpp +++ b/plugins/channelrx/freqscanner/freqscannersink.cpp @@ -95,6 +95,51 @@ void FreqScannerSink::processOneSample(Complex &ci) // Perform FFT m_fft->transform(); + // Accumulate voice activity levels on individual FFT (before averaging) + // This captures sharp formant structure better than averaged spectrum + int freqCount = m_settings.m_frequencySettings.size(); + if (m_voiceLevelSum.size() != freqCount) { + m_voiceLevelSum.resize(freqCount); + m_voiceLevelCount.resize(freqCount); + m_voiceLevelSum.fill(0.0); + m_voiceLevelCount.fill(0); + } + + for (int i = 0; i < freqCount; i++) + { + if (m_settings.m_frequencySettings[i].m_enabled) + { + qint64 frequency = m_settings.m_frequencySettings[i].m_frequency; + qint64 startFrequency = m_centerFrequency - m_scannerSampleRate / 2; + qint64 diff = frequency - startFrequency; + float binBW = m_scannerSampleRate / (float)m_fftSize; + + if ((diff >= m_scannerSampleRate / 8) && (diff < m_scannerSampleRate * 7 / 8)) + { + int bin = std::round(diff / binBW); + int channelBins; + if (m_settings.m_frequencySettings[i].m_channelBandwidth.isEmpty()) { + channelBins = m_binsPerChannel; + } else { + int channelBW = m_settings.getChannelBandwidth(&m_settings.m_frequencySettings[i]); + channelBins = m_fftSize / (m_scannerSampleRate / (float)channelBW); + } + + Real voiceLevel = 0.0; + if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceLsb) { + voiceLevel = voiceActivityLevel(bin, channelBins, true); + } else if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceUsb) { + voiceLevel = voiceActivityLevel(bin, channelBins, false); + } + + if (voiceLevel > 0.0) { + m_voiceLevelSum[i] += voiceLevel; + m_voiceLevelCount[i]++; + } + } + } + } + // Reorder (so negative frequencies are first) and average int halfSize = m_fftSize / 2; for (int i = 0; i < halfSize; i++) { @@ -147,12 +192,12 @@ void FreqScannerSink::processOneSample(Complex &ci) power = totalPower(bin, channelBins); } - // Calculate voice activity level if using voice trigger + // Use averaged voice activity level from individual FFTs Real voiceLevel = 0.0; - if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceLsb) { - voiceLevel = voiceActivityLevel(bin, channelBins, true); - } else if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceUsb) { - voiceLevel = voiceActivityLevel(bin, channelBins, false); + if ((m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceLsb || + m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceUsb) && + m_voiceLevelCount[i] > 0) { + voiceLevel = m_voiceLevelSum[i] / m_voiceLevelCount[i]; } //qDebug() << "startFrequency:" << startFrequency << "m_scannerSampleRate:" << m_scannerSampleRate << "m_centerFrequency:" << m_centerFrequency << "frequency" << frequency << "bin" << bin << "power" << power << "voiceLevel" << voiceLevel; @@ -165,6 +210,10 @@ void FreqScannerSink::processOneSample(Complex &ci) } m_averageCount = 0; m_fftStartTime = QDateTime::currentDateTime(); + + // Reset voice level accumulators for next averaging period + m_voiceLevelSum.fill(0.0); + m_voiceLevelCount.fill(0); } m_fftCounter = 0; } @@ -216,6 +265,23 @@ Real FreqScannerSink::magSq(int bin) const return magsq; } +// Compute magSq from raw FFT output with reordering (negative frequencies first) +Real FreqScannerSink::magSqFromRawFFT(int bin) const +{ + // m_magSq is reordered: negative freqs first, then positive + // m_fft->out() is in standard FFT order: DC, positive freqs, negative freqs + int halfSize = m_fftSize / 2; + int fftBin; + if (bin < halfSize) { + // Negative frequencies: map to second half of FFT output + fftBin = bin + halfSize; + } else { + // Positive frequencies: map to first half of FFT output + fftBin = bin - halfSize; + } + return magSq(fftBin); +} + void FreqScannerSink::applyChannelSettings(int channelSampleRate, int channelFrequencyOffset, int scannerSampleRate, int fftSize, int binsPerChannel, bool force) { qDebug() << "FreqScannerSink::applyChannelSettings:" @@ -252,6 +318,13 @@ void FreqScannerSink::applyChannelSettings(int channelSampleRate, int channelFre int averages = m_settings.m_scanTime * scannerSampleRate / 2 / fftSize; m_fftAverage.resize(fftSize, averages); m_magSq.resize(fftSize); + + // Resize voice level accumulators to match frequency count + int freqCount = m_settings.m_frequencySettings.size(); + m_voiceLevelSum.resize(freqCount); + m_voiceLevelCount.resize(freqCount); + m_voiceLevelSum.fill(0.0); + m_voiceLevelCount.fill(0); } m_channelSampleRate = channelSampleRate; @@ -307,35 +380,37 @@ Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) c QVector peakBins; QVector peakMags; - // Calculate average noise floor + // Calculate average noise floor from raw FFT Real noiseFloor = 0.0; int noiseCount = 0; for (int i = startBin; i <= endBin; i++) { - noiseFloor += m_magSq[i]; + noiseFloor += magSqFromRawFFT(i); noiseCount++; } noiseFloor = (noiseCount > 0) ? (noiseFloor / noiseCount) : 1e-12; Real threshold = noiseFloor * 3.0; // 4.77 dB above noise - // Simple peak detection + // Simple peak detection using raw FFT data int i = searchStart; while ((isLSB && i >= searchEnd) || (!isLSB && i <= searchEnd)) { - if (m_magSq[i] > threshold) + Real binMagSq = magSqFromRawFFT(i); + if (binMagSq > threshold) { // Found potential peak start - Real peakMag = m_magSq[i]; + Real peakMag = binMagSq; int peakBin = i; // Find local maximum i += step; while ((isLSB && i >= searchEnd) || (!isLSB && i <= searchEnd)) { - if (m_magSq[i] > peakMag) { - peakMag = m_magSq[i]; + Real nextMagSq = magSqFromRawFFT(i); + if (nextMagSq > peakMag) { + peakMag = nextMagSq; peakBin = i; i += step; - } else if (m_magSq[i] > threshold) { + } else if (nextMagSq > threshold) { i += step; } else { break; // Peak ended @@ -374,7 +449,7 @@ Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) c // Search left for (int j = peakBin - 1; j >= startBin; j--) { - if (m_magSq[j] > halfPower) { + if (magSqFromRawFFT(j) > halfPower) { bwCount++; } else { break; @@ -383,7 +458,7 @@ Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) c // Search right for (int j = peakBin + 1; j <= endBin; j++) { - if (m_magSq[j] > halfPower) { + if (magSqFromRawFFT(j) > halfPower) { bwCount++; } else { break; diff --git a/plugins/channelrx/freqscanner/freqscannersink.h b/plugins/channelrx/freqscanner/freqscannersink.h index 976a312bc..2f021f2e1 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.h +++ b/plugins/channelrx/freqscanner/freqscannersink.h @@ -74,12 +74,15 @@ private: FixedAverage2D m_fftAverage; // magSq average QVector m_magSq; int m_averageCount; + QVector m_voiceLevelSum; // Sum of voice levels for averaging + QVector m_voiceLevelCount; // Count of voice level samples void processOneSample(Complex &ci); MessageQueue *getMessageQueueToChannel() { return m_messageQueueToChannel; } Real totalPower(int bin, int channelBins) const; Real peakPower(int bin, int channelBins) const; Real magSq(int bin) const; + Real magSqFromRawFFT(int bin) const; Real voiceActivityLevel(int bin, int channelBins, bool isLSB) const; }; From 8107bd102f6ac153b3ea15eb61328c6f9d30effc Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 15 Feb 2026 21:41:58 +0100 Subject: [PATCH 07/24] Freq Scanner voice squelch: voice pitch validation (1) --- .../channelrx/freqscanner/freqscannersink.cpp | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/plugins/channelrx/freqscanner/freqscannersink.cpp b/plugins/channelrx/freqscanner/freqscannersink.cpp index 7e40e59c5..0022f2ef9 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.cpp +++ b/plugins/channelrx/freqscanner/freqscannersink.cpp @@ -495,6 +495,27 @@ Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) c if (broadPeakCount >= 2) { + // Check if signal is properly centered (not off-tune by 1 kHz or more) + // For correctly tuned voice, first formant (F1) should be 300-1000 Hz from carrier + // If mistuned by 1 kHz, F1 would appear at 1300-2000 Hz + int carrierBin = isLSB ? endBin : startBin; + bool hasLowFormant = false; + + for (int p = 0; p < peakBins.size(); p++) + { + float freqOffset = std::abs(peakBins[p] - carrierBin) * binBW; + // Check if at least one broad peak is in F1 range (300-1000 Hz) + if (freqOffset >= 300.0 && freqOffset <= 1000.0) { + hasLowFormant = true; + break; + } + } + + // If no formants in low range, signal is likely mistuned by >1 kHz + if (!hasLowFormant) { + return 0.0; + } + // Base score from number of broad peaks score = std::min(broadPeakCount / 4.0f, 1.0f); From 6752029e43f88d012c6d858ceb931ef259f6945f Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 15 Feb 2026 22:56:06 +0100 Subject: [PATCH 08/24] Freq Scanner voice squelch: voice pitch validation (2) --- .../channelrx/freqscanner/freqscannersink.cpp | 55 +++++++++++++++---- 1 file changed, 43 insertions(+), 12 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscannersink.cpp b/plugins/channelrx/freqscanner/freqscannersink.cpp index 0022f2ef9..9eb68383d 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.cpp +++ b/plugins/channelrx/freqscanner/freqscannersink.cpp @@ -495,24 +495,50 @@ Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) c if (broadPeakCount >= 2) { - // Check if signal is properly centered (not off-tune by 1 kHz or more) - // For correctly tuned voice, first formant (F1) should be 300-1000 Hz from carrier - // If mistuned by 1 kHz, F1 would appear at 1300-2000 Hz + // Detect fundamental frequency (f0) by looking for harmonic structure + // Voice has harmonics at f0, 2*f0, 3*f0, etc. with formants modulating them + // Typical f0: male 85-180 Hz, female 165-255 Hz int carrierBin = isLSB ? endBin : startBin; - bool hasLowFormant = false; - for (int p = 0; p < peakBins.size(); p++) + // Try different f0 candidates in typical voice range (80-300 Hz) + int maxHarmonics = 0; + + for (int f0Hz = 80; f0Hz <= 300; f0Hz += 10) { - float freqOffset = std::abs(peakBins[p] - carrierBin) * binBW; - // Check if at least one broad peak is in F1 range (300-1000 Hz) - if (freqOffset >= 300.0 && freqOffset <= 1000.0) { - hasLowFormant = true; - break; + int f0Bins = (int)(f0Hz / binBW); + int harmonicCount = 0; + + // Check for harmonics up to 3000 Hz (SSB bandwidth limit) + for (int h = 1; h <= 10; h++) + { + int harmonicBin = carrierBin + (isLSB ? -1 : 1) * (h * f0Bins); + + // Check if any detected peak is near this harmonic (within ±30 Hz tolerance) + int tolerance = (int)(30.0 / binBW); + for (int p = 0; p < peakBins.size(); p++) + { + if (std::abs(peakBins[p] - harmonicBin) <= tolerance) + { + harmonicCount++; + break; + } + } + + // Stop checking beyond 3 kHz + if (h * f0Hz > 3000) { + break; + } + } + + if (harmonicCount > maxHarmonics) + { + maxHarmonics = harmonicCount; } } - // If no formants in low range, signal is likely mistuned by >1 kHz - if (!hasLowFormant) { + // Need at least 3 harmonics aligned to confirm voice pitch structure + // If mistuned by 1 kHz, formants won't align with any harmonic series + if (maxHarmonics < 3) { return 0.0; } @@ -524,6 +550,11 @@ Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) c score = std::min(score * 1.5f, 1.0f); } + // Boost if strong harmonic structure (4+ harmonics) + if (maxHarmonics >= 4) { + score = std::min(score * 1.2f, 1.0f); + } + // Penalize if too many narrow peaks (likely CW or noise) int narrowPeakCount = peakBins.size() - broadPeakCount; if (narrowPeakCount > broadPeakCount) { From 7bcb92d200cce72dbc15fae0bf003ac0a1d843c2 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 16 Feb 2026 00:58:26 +0100 Subject: [PATCH 09/24] Freq Scanner: in baseband process sample rate change only if necessary --- .../freqscanner/freqscannerbaseband.cpp | 19 ++++++++++++++----- .../freqscanner/freqscannerbaseband.h | 1 + 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscannerbaseband.cpp b/plugins/channelrx/freqscanner/freqscannerbaseband.cpp index dcc71f637..589071de4 100644 --- a/plugins/channelrx/freqscanner/freqscannerbaseband.cpp +++ b/plugins/channelrx/freqscanner/freqscannerbaseband.cpp @@ -29,7 +29,8 @@ MESSAGE_CLASS_DEFINITION(FreqScannerBaseband::MsgConfigureFreqScannerBaseband, M FreqScannerBaseband::FreqScannerBaseband(FreqScanner *freqScanner) : m_freqScanner(freqScanner), - m_messageQueueToGUI(nullptr) + m_messageQueueToGUI(nullptr), + m_currentBasebandSampleRate(0) { qDebug("FreqScannerBaseband::FreqScannerBaseband"); @@ -62,6 +63,7 @@ void FreqScannerBaseband::reset() m_inputMessageQueue.clear(); m_sampleFifo.reset(); m_channelSampleRate = 0; + m_currentBasebandSampleRate = 0; } void FreqScannerBaseband::setChannel(ChannelAPI *channel) @@ -130,11 +132,18 @@ bool FreqScannerBaseband::handleMessage(const Message& cmd) QMutexLocker mutexLocker(&m_mutex); DSPSignalNotification& notif = (DSPSignalNotification&) cmd; qDebug() << "FreqScannerBaseband::handleMessage: DSPSignalNotification: basebandSampleRate: " << notif.getSampleRate(); - setBasebandSampleRate(notif.getSampleRate()); - m_sampleFifo.setSize(SampleSinkFifo::getSizePolicy(notif.getSampleRate())); - if (m_channelSampleRate != m_channelizer->getChannelSampleRate()) { - m_channelSampleRate = m_channelizer->getChannelSampleRate(); + int basebandSampleRate = notif.getSampleRate(); + + if (basebandSampleRate != m_currentBasebandSampleRate) + { + setBasebandSampleRate(notif.getSampleRate()); + m_sampleFifo.setSize(SampleSinkFifo::getSizePolicy(notif.getSampleRate())); + if (m_channelSampleRate != m_channelizer->getChannelSampleRate()) { + m_channelSampleRate = m_channelizer->getChannelSampleRate(); + } + m_currentBasebandSampleRate = basebandSampleRate; } + m_sink.setCenterFrequency(notif.getCenterFrequency()); return true; diff --git a/plugins/channelrx/freqscanner/freqscannerbaseband.h b/plugins/channelrx/freqscanner/freqscannerbaseband.h index 2fcdc2d7a..4fd94e431 100644 --- a/plugins/channelrx/freqscanner/freqscannerbaseband.h +++ b/plugins/channelrx/freqscanner/freqscannerbaseband.h @@ -86,6 +86,7 @@ private: MessageQueue *m_messageQueueToGUI; FreqScannerSettings m_settings; QRecursiveMutex m_mutex; + int m_currentBasebandSampleRate; bool handleMessage(const Message& cmd); void applySettings(const FreqScannerSettings& settings, const QStringList& settingsKeys, bool force = false); From 6f452a2a460facbae9246e0451c144ed5b439767 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 16 Feb 2026 00:59:56 +0100 Subject: [PATCH 10/24] Freq Scanner: scanner sample rate and minimum bins special computation for Voice Squelch --- plugins/channelrx/freqscanner/freqscanner.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscanner.cpp b/plugins/channelrx/freqscanner/freqscanner.cpp index f7222c47d..b278dfaec 100644 --- a/plugins/channelrx/freqscanner/freqscanner.cpp +++ b/plugins/channelrx/freqscanner/freqscanner.cpp @@ -620,7 +620,7 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< // Wait until power drops below threshold FreqScannerSettings::FrequencySettings *frequencySettings = m_settings.getFrequencySettings(m_activeFrequency); Real threshold = m_settings.getThreshold(frequencySettings); - if (results[i].m_power < threshold) + if (results[i].m_power < threshold) { m_timeoutTimer.setSingleShot(true); m_timeoutTimer.start((int)(m_settings.m_retransmitTime * 1000.0)); @@ -643,8 +643,10 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< // Check if power has returned to being above threshold FreqScannerSettings::FrequencySettings *frequencySettings = m_settings.getFrequencySettings(m_activeFrequency); Real threshold = m_settings.getThreshold(frequencySettings); - if (results[i].m_power >= threshold) + if ((results[i].m_power >= threshold) + && checkVoiceThreshold(m_settings.m_voiceSquelchType, results[i].m_voiceActivityLevel, m_settings.m_voiceSquelchThreshold)) { + qDebug("FreqScanner::processScanResults: WAIT_FOR_RETRANSMISSION restart: voice score: %f", results[i].m_voiceActivityLevel); m_timeoutTimer.stop(); m_state = WAIT_FOR_END_TX; } @@ -689,10 +691,7 @@ void FreqScanner::calcScannerSampleRate(int channelBW, int basebandSampleRate, i if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceSquelchType::VoiceLsb || m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceSquelchType::VoiceUsb) { - scannerSampleRate = 48000; // Use 48kHz sample rate for voice squelch, to give better resolution at low bandwidths - fftSize = 2048; // Use 2048 FFT size for voice squelch, to give better resolution at low bandwidths - binsPerChannel = fftSize / (scannerSampleRate / (float)channelBW); // 128 for typical channel bandwidth of 3000Hz - return; + minBinsPerChannel = channelBW / 20; // we want at most 20 Hz per bin } // Base FFT size on that used for main spectrum From d96545f28bfa83d9c5daa56dd28af5e2cd7bf3b4 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 16 Feb 2026 01:00:47 +0100 Subject: [PATCH 11/24] Freq Scanner: voice activity detection: just penalize if no broad peaks --- plugins/channelrx/freqscanner/freqscannersink.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscannersink.cpp b/plugins/channelrx/freqscanner/freqscannersink.cpp index 9eb68383d..ccf0dccac 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.cpp +++ b/plugins/channelrx/freqscanner/freqscannersink.cpp @@ -555,10 +555,16 @@ Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) c score = std::min(score * 1.2f, 1.0f); } - // Penalize if too many narrow peaks (likely CW or noise) - int narrowPeakCount = peakBins.size() - broadPeakCount; - if (narrowPeakCount > broadPeakCount) { - score *= 0.5; + // Penalize if too many narrow peaks (likely CW or noise) + // => This condition is ALWAYS true as there are always many more peaks than broad peaks + // int narrowPeakCount = peakBins.size() - broadPeakCount; + // if (narrowPeakCount > broadPeakCount) { + // score *= 0.5; + // } + + // Just strongly penalize if there are no broad peaks at all + if (broadPeakCount == 0) { + score *= 0.1; } } From e43f0e1e35f8e5c4e47b8a1bc5e16d83639c5621 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 16 Feb 2026 01:10:55 +0100 Subject: [PATCH 12/24] Freq Scanner voice activity: check good spacing among broad peaks only --- plugins/channelrx/freqscanner/freqscannersink.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscannersink.cpp b/plugins/channelrx/freqscanner/freqscannersink.cpp index ccf0dccac..9a2c143b1 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.cpp +++ b/plugins/channelrx/freqscanner/freqscannersink.cpp @@ -378,6 +378,7 @@ Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) c // Find peaks above noise floor QVector peakBins; + QVector broadPeakBins; QVector peakMags; // Calculate average noise floor from raw FFT @@ -469,20 +470,22 @@ Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) c // Voice formants are typically 50-200 Hz wide // CW signals are <50 Hz wide - if (bandwidth >= 50.0 && bandwidth <= 200.0) { + if (bandwidth >= 50.0 && bandwidth <= 200.0) + { + broadPeakBins.append(peakBin); broadPeakCount++; } } // Check formant spacing (voice formants are typically 500-1500 Hz apart) bool goodSpacing = false; - if (broadPeakCount >= 2 && peakBins.size() >= 2) + if (broadPeakCount >= 2) { - for (int p = 0; p < peakBins.size() - 1; p++) + for (int p = 0; p < broadPeakBins.size() - 1; p++) { - int spacing = std::abs(peakBins[p + 1] - peakBins[p]); + int spacing = std::abs(broadPeakBins[p + 1] - broadPeakBins[p]); float spacingHz = spacing * binBW; - if (spacingHz >= 400.0 && spacingHz <= 1800.0) { + if (spacingHz >= 400.0 && spacingHz <= 1100.0) { goodSpacing = true; break; } @@ -555,7 +558,7 @@ Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) c score = std::min(score * 1.2f, 1.0f); } - // Penalize if too many narrow peaks (likely CW or noise) + // Penalize if too many narrow peaks (likely CW or noise) // => This condition is ALWAYS true as there are always many more peaks than broad peaks // int narrowPeakCount = peakBins.size() - broadPeakCount; // if (narrowPeakCount > broadPeakCount) { From 642a6da8aaaebd24bbb8b20529021cdd7807f42a Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 16 Feb 2026 01:54:47 +0100 Subject: [PATCH 13/24] Freq Scanner voice squelch: voice pitch validation (3) --- .../channelrx/freqscanner/freqscannersink.cpp | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/plugins/channelrx/freqscanner/freqscannersink.cpp b/plugins/channelrx/freqscanner/freqscannersink.cpp index 9a2c143b1..56cdd2169 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.cpp +++ b/plugins/channelrx/freqscanner/freqscannersink.cpp @@ -505,6 +505,7 @@ Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) c // Try different f0 candidates in typical voice range (80-300 Hz) int maxHarmonics = 0; + int bestF0Hz = 0; for (int f0Hz = 80; f0Hz <= 300; f0Hz += 10) { @@ -536,6 +537,7 @@ Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) c if (harmonicCount > maxHarmonics) { maxHarmonics = harmonicCount; + bestF0Hz = f0Hz; } } @@ -545,6 +547,44 @@ Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) c return 0.0; } + // Check if first harmonic (f0) is actually present at low frequency + // When tuned correctly, f0 should be 80-300 Hz from carrier + int f0Bins = (int)(bestF0Hz / binBW); + int firstHarmonicBin = carrierBin + (isLSB ? -1 : 1) * f0Bins; + int tolerance = (int)(30.0 / binBW); + + bool hasF0 = false; + for (int p = 0; p < peakBins.size(); p++) + { + if (std::abs(peakBins[p] - firstHarmonicBin) <= tolerance) + { + hasF0 = true; + break; + } + } + + // If no peak near fundamental frequency, signal is mistuned + // (harmonics may still align but they're higher harmonics of wrong pitch) + if (!hasF0) { + return 0.0; + } + + // Verify at least one broad formant in F1 range (300-1000 Hz from carrier) + // This catches low-tuning errors where harmonics might still align + bool hasF1 = false; + for (int p = 0; p < broadPeakBins.size(); p++) + { + float freqOffset = std::abs(broadPeakBins[p] - carrierBin) * binBW; + if (freqOffset >= 300.0 && freqOffset <= 1000.0) { + hasF1 = true; + break; + } + } + + if (!hasF1) { + return 0.0; // No F1 formant - signal is mistuned + } + // Base score from number of broad peaks score = std::min(broadPeakCount / 4.0f, 1.0f); From e78284864209a868b91e60d4f265d39aa68130b2 Mon Sep 17 00:00:00 2001 From: f4exb Date: Tue, 17 Feb 2026 00:23:43 +0100 Subject: [PATCH 14/24] Freq Scanner voice squelch: revamping of voice detection --- plugins/channelrx/freqscanner/freqscanner.cpp | 10 +- .../channelrx/freqscanner/freqscannersink.cpp | 519 ++++++++++-------- .../channelrx/freqscanner/freqscannersink.h | 3 +- 3 files changed, 313 insertions(+), 219 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscanner.cpp b/plugins/channelrx/freqscanner/freqscanner.cpp index b278dfaec..60653e47d 100644 --- a/plugins/channelrx/freqscanner/freqscanner.cpp +++ b/plugins/channelrx/freqscanner/freqscanner.cpp @@ -484,13 +484,15 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< // Find first frequency in list above threshold for (int i = 0; i < m_scanResults.size(); i++) { - frequencySettings = m_settings.getFrequencySettings(m_scanResults[i].m_frequency); + int j = m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceSquelchType::VoiceLsb ? + m_scanResults.size()-1 - i : i; + frequencySettings = m_settings.getFrequencySettings(m_scanResults[j].m_frequency); Real threshold = m_settings.getThreshold(frequencySettings); - if ((m_scanResults[i].m_power >= threshold) - && checkVoiceThreshold(m_settings.m_voiceSquelchType, m_scanResults[i].m_voiceActivityLevel, m_settings.m_voiceSquelchThreshold)) + if ((m_scanResults[j].m_power >= threshold) + && checkVoiceThreshold(m_settings.m_voiceSquelchType, m_scanResults[j].m_voiceActivityLevel, m_settings.m_voiceSquelchThreshold)) { - frequency = m_scanResults[i].m_frequency; + frequency = m_scanResults[j].m_frequency; activeFrequencySettings = frequencySettings; break; } diff --git a/plugins/channelrx/freqscanner/freqscannersink.cpp b/plugins/channelrx/freqscanner/freqscannersink.cpp index 56cdd2169..94bdbd067 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.cpp +++ b/plugins/channelrx/freqscanner/freqscannersink.cpp @@ -18,6 +18,11 @@ #include #include +#include + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif #include "dsp/dspengine.h" #include "dsp/fftfactory.h" @@ -113,7 +118,17 @@ void FreqScannerSink::processOneSample(Complex &ci) qint64 startFrequency = m_centerFrequency - m_scannerSampleRate / 2; qint64 diff = frequency - startFrequency; float binBW = m_scannerSampleRate / (float)m_fftSize; + // qDebug() << "FreqScannerSink::processOneSample:" + // << "startFrequency" << startFrequency + // << "m_scannerSampleRate" << m_scannerSampleRate + // << "m_centerFrequency" << m_centerFrequency + // << "m_fftSize" << m_fftSize + // << "frequency" << frequency + // << "diff" << diff + // << "binBW" << binBW + // << "m_binsPerChannel" << m_binsPerChannel; + // avoid spectrum edges where there may be aliasing from half-band filters if ((diff >= m_scannerSampleRate / 8) && (diff < m_scannerSampleRate * 7 / 8)) { int bin = std::round(diff / binBW); @@ -127,9 +142,9 @@ void FreqScannerSink::processOneSample(Complex &ci) Real voiceLevel = 0.0; if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceLsb) { - voiceLevel = voiceActivityLevel(bin, channelBins, true); + voiceLevel = voiceActivityLevel(frequency, bin, channelBins, true); } else if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceUsb) { - voiceLevel = voiceActivityLevel(bin, channelBins, false); + voiceLevel = voiceActivityLevel(frequency, bin, channelBins, false); } if (voiceLevel > 0.0) { @@ -282,6 +297,83 @@ Real FreqScannerSink::magSqFromRawFFT(int bin) const return magSq(fftBin); } +// Compute formant envelope using log-domain spectral smoothing +// This separates vocal tract resonances (formants) from pitch harmonics +void FreqScannerSink::getFormantEnvelope(int startBin, int endBin, QVector& envelope) const +{ + if (startBin < 0 || endBin >= m_fftSize || startBin > endBin) { + envelope.clear(); + return; + } + + int numBins = endBin - startBin + 1; + envelope.resize(numBins); + + // Step 1: Compute log magnitude spectrum + QVector logMag(numBins); + Real minLog = -10.0; // Floor to avoid log(0) + + for (int i = 0; i < numBins; i++) + { + Real magSq = magSqFromRawFFT(startBin + i); + Real mag = std::sqrt(std::max(magSq, (Real)1e-12)); + logMag[i] = std::log(mag); + if (logMag[i] < minLog) { + logMag[i] = minLog; + } + } + + // Step 2: Apply smoothing in log domain to extract formant envelope + // This removes rapid variations (pitch harmonics) while keeping slow variations (formants) + // Use moving average filter with window size based on expected harmonic spacing + + float binBW = m_scannerSampleRate / (float)m_fftSize; + + // For formant detection, smooth over approximately 200-300 Hz + // This is wider than typical harmonic spacing (80-300 Hz) but narrower than formant bandwidth + float smoothingBandwidthHz = 250.0; // Hz + int smoothingWindow = std::max(3, (int)(smoothingBandwidthHz / binBW)); + + // Make smoothing window odd for symmetry + if (smoothingWindow % 2 == 0) { + smoothingWindow++; + } + + int halfWindow = smoothingWindow / 2; + + // qDebug() << "FreqScannerSink::getFormantEnvelope smoothingWindow:" << smoothingWindow + // << "bins (" << (smoothingWindow * binBW) << "Hz)"; + + // Apply moving average smoothing + QVector smoothedLog(numBins); + for (int i = 0; i < numBins; i++) + { + Real sum = 0.0; + int count = 0; + + for (int j = -halfWindow; j <= halfWindow; j++) + { + int idx = i + j; + if (idx >= 0 && idx < numBins) { + sum += logMag[idx]; + count++; + } + } + + smoothedLog[i] = (count > 0) ? (sum / count) : logMag[i]; + } + + // Step 3: Convert back to linear magnitude + for (int i = 0; i < numBins; i++) + { + envelope[i] = std::exp(smoothedLog[i]); + } + + // Debug: print first few envelope values + // qDebug() << "FreqScannerSink::getFormantEnvelope first 10 envelope values:" + // << envelope.mid(0, std::min(10, numBins)); +} + void FreqScannerSink::applyChannelSettings(int channelSampleRate, int channelFrequencyOffset, int scannerSampleRate, int fftSize, int binsPerChannel, bool force) { qDebug() << "FreqScannerSink::applyChannelSettings:" @@ -354,12 +446,12 @@ void FreqScannerSink::applySettings(const FreqScannerSettings& settings, const Q } // Voice activity detection for SSB signals -// Detects voice by looking for formant-like structure (broad spectral peaks) +// Detects voice by looking for formant-like structure using spectral smoothing // Returns a value from 0.0 (no voice) to 1.0 (strong voice signature) -Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) const +Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, bool isLSB) const { // Voice band in SSB is typically 100-3000 Hz from carrier - // We look for 2-4 formant peaks with bandwidth 50-200 Hz each + // We look for 2-4 formant peaks in the smoothed spectral envelope int startBin = bin - channelBins / 2 + 1; int endBin = startBin + channelBins - 1; @@ -372,244 +464,243 @@ Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) c float binBW = m_scannerSampleRate / (float)m_fftSize; // For LSB, spectrum is reversed - flip the search direction - int step = isLSB ? -1 : 1; - int searchStart = isLSB ? endBin : startBin; - int searchEnd = isLSB ? startBin : endBin; + int carrierBin = isLSB ? endBin : startBin; - // Find peaks above noise floor - QVector peakBins; - QVector broadPeakBins; - QVector peakMags; + // Get formant envelope using spectral smoothing + // This separates vocal tract resonances from pitch harmonics + QVector formantEnvelope; + getFormantEnvelope(startBin, endBin, formantEnvelope); - // Calculate average noise floor from raw FFT + if (formantEnvelope.isEmpty()) { + qDebug() << "FreqScannerSink::voiceActivityLevel formantEnvelope is empty!"; + return 0.0; + } + + // Calculate noise floor from formant envelope Real noiseFloor = 0.0; - int noiseCount = 0; - for (int i = startBin; i <= endBin; i++) { - noiseFloor += magSqFromRawFFT(i); - noiseCount++; + Real maxEnv = 0.0; + for (int i = 0; i < formantEnvelope.size(); i++) { + noiseFloor += formantEnvelope[i]; + maxEnv = std::max(maxEnv, formantEnvelope[i]); } - noiseFloor = (noiseCount > 0) ? (noiseFloor / noiseCount) : 1e-12; - Real threshold = noiseFloor * 3.0; // 4.77 dB above noise + noiseFloor = formantEnvelope.size() > 0 ? noiseFloor / formantEnvelope.size() : 1e-12; + + // For voice, we need reasonably high peaks relative to noise + // Use 4 dB (2.5x) above average as threshold for peak detection + // Additional validation: peak-to-noise ratio + // If max is not sufficiently higher than average, signal quality is poor + float peakToNoiseRatio = maxEnv / noiseFloor; + // qDebug() << "FreqScannerSink::voiceActivityLevel: noiseFloor:" << noiseFloor + // << "maxEnv:" << maxEnv << "peak-to-noise ratio:" << peakToNoiseRatio; + + // Lower threshold: require at least 1.2x peak-to-noise ratio (only ~1.6dB) + // After heavy smoothing, formants appear as gentle bumps, not sharp peaks + if (peakToNoiseRatio < 1.2) { + // Signal is essentially all noise + // qDebug() << "FreqScannerSink::voiceActivityLevel: Rejected - insufficient signal (peak-to-noise:" << peakToNoiseRatio << ")"; + return 0.0; + } + + // For peak detection, use much lower threshold since smoothed spectral peaks are gentle + // Use 1.1x noise floor to catch formant peaks in the smoothed envelope + Real threshold = noiseFloor * 1.1; - // Simple peak detection using raw FFT data - int i = searchStart; - while ((isLSB && i >= searchEnd) || (!isLSB && i <= searchEnd)) + // Find formant peaks in the smoothed envelope + QVector formantBins; + QVector formantMags; + + // Simple peak detection in formant envelope + for (int i = 1; i < formantEnvelope.size() - 1; i++) { - Real binMagSq = magSqFromRawFFT(i); - if (binMagSq > threshold) - { - // Found potential peak start - Real peakMag = binMagSq; - int peakBin = i; + Real prev = formantEnvelope[i - 1]; + Real curr = formantEnvelope[i]; + Real next = formantEnvelope[i + 1]; - // Find local maximum - i += step; - while ((isLSB && i >= searchEnd) || (!isLSB && i <= searchEnd)) + // Local maximum above threshold + if (curr > prev && curr > next && curr > threshold) + { + int absBin = startBin + i; + float freqOffset = std::abs(absBin - carrierBin) * binBW; + + // Only include peaks within SSB voice bandwidth (100-3000 Hz from carrier) + if (freqOffset >= 100.0 && freqOffset <= 3000.0) { - Real nextMagSq = magSqFromRawFFT(i); - if (nextMagSq > peakMag) { - peakMag = nextMagSq; - peakBin = i; - i += step; - } else if (nextMagSq > threshold) { - i += step; - } else { - break; // Peak ended - } - } - - // Calculate frequency offset from carrier - // For USB: carrier is at startBin, voice extends upward - // For LSB: carrier is at endBin, voice extends downward - int carrierBin = isLSB ? endBin : startBin; - float freqOffset = std::abs(peakBin - carrierBin) * binBW; - - // Only include peaks within SSB voice bandwidth (0-3000 Hz from carrier) - if (freqOffset <= 3000.0) { - peakBins.append(peakBin); - peakMags.append(peakMag); + formantBins.append(absBin); + formantMags.append(curr); } } - i += step; } - if (peakBins.size() < 2) { - return 0.0; // Need at least 2 peaks for voice + // Voice requires 2-4 formants + if (formantBins.size() < 2) { + // qDebug() << "FreqScannerSink::voiceActivityLevel: Not enough peaks detected" << formantBins.size(); + return 0.0; } - - // Measure peak bandwidths - int broadPeakCount = 0; - for (int p = 0; p < peakBins.size(); p++) + + // qDebug() << "FreqScannerSink::voiceActivityLevel: Detected" << formantBins.size() << "peaks above threshold"; + + // Sort formants by frequency offset (not bin order) to handle LSB reversal + QVector formantFreqs; + QVector formantIndices; + + for (int i = 0; i < formantBins.size(); i++) { - int peakBin = peakBins[p]; - Real peakMag = peakMags[p]; - Real halfPower = peakMag * 0.5; // 3dB point - - // Measure bandwidth at half power (-3dB) - int bwCount = 1; // Peak bin itself - - // Search left - for (int j = peakBin - 1; j >= startBin; j--) { - if (magSqFromRawFFT(j) > halfPower) { - bwCount++; - } else { - break; - } - } - - // Search right - for (int j = peakBin + 1; j <= endBin; j++) { - if (magSqFromRawFFT(j) > halfPower) { - bwCount++; - } else { - break; - } - } - - float bandwidth = bwCount * binBW; - - // Voice formants are typically 50-200 Hz wide - // CW signals are <50 Hz wide - if (bandwidth >= 50.0 && bandwidth <= 200.0) + float freqOffset = std::abs(formantBins[i] - carrierBin) * binBW; + formantFreqs.append(freqOffset); + formantIndices.append(i); + } + + // Simple insertion sort by frequency + for (int i = 1; i < formantFreqs.size(); i++) + { + for (int j = i; j > 0 && formantFreqs[j] < formantFreqs[j - 1]; j--) { - broadPeakBins.append(peakBin); - broadPeakCount++; + std::swap(formantFreqs[j], formantFreqs[j - 1]); + std::swap(formantIndices[j], formantIndices[j - 1]); } } + + // Merge peaks that are too close together (within 400 Hz) + // Real formants have minimum separation of 400-500 Hz in SSB voice + // So anything closer is ripple within a single formant + // We keep the peak with highest magnitude and remove others + QVector mergedFormantFreqs; + QVector mergedFormantIndices; + + const float minFormantSpacing = 400.0; // Hz - minimum spacing between real formants + + for (int i = 0; i < formantFreqs.size(); i++) + { + if (i == 0 || formantFreqs[i] - mergedFormantFreqs.back() >= minFormantSpacing) + { + // This is a new formant (far enough from previous) + mergedFormantFreqs.append(formantFreqs[i]); + mergedFormantIndices.append(formantIndices[i]); + } + else + { + // This peak is too close to the previous one - merge by keeping highest magnitude + int prevIdx = mergedFormantIndices.back(); + int currIdx = formantIndices[i]; + if (formantMags[currIdx] > formantMags[prevIdx]) + { + // Replace with higher magnitude peak + mergedFormantFreqs.back() = formantFreqs[i]; + mergedFormantIndices.back() = currIdx; + } + } + } + + formantFreqs = mergedFormantFreqs; + formantIndices = mergedFormantIndices; + + // qDebug() << "FreqScannerSink::voiceActivityLevel: Merged to" << formantFreqs.size() << "formants:" << formantFreqs; + + // After merging, we should still have at least 2 formants for voice + if (formantFreqs.size() < 2) { + // qDebug() << "FreqScannerSink::voiceActivityLevel: Not enough formants after merging"; + return 0.0; + } - // Check formant spacing (voice formants are typically 500-1500 Hz apart) + // Check formant spacing (voice formants should be 400-1500 Hz apart) + // F1-F2 spacing is typically 600-1200 Hz bool goodSpacing = false; - if (broadPeakCount >= 2) + for (int i = 0; i < formantFreqs.size() - 1; i++) { - for (int p = 0; p < broadPeakBins.size() - 1; p++) - { - int spacing = std::abs(broadPeakBins[p + 1] - broadPeakBins[p]); - float spacingHz = spacing * binBW; - if (spacingHz >= 400.0 && spacingHz <= 1100.0) { - goodSpacing = true; - break; - } + float spacing = formantFreqs[i + 1] - formantFreqs[i]; + if (spacing >= 400.0 && spacing <= 1500.0) { + goodSpacing = true; + break; } } - // Calculate voice activity score - // 2-4 broad peaks with good spacing = strong voice signature + if (!goodSpacing) { + // qDebug() << "FreqScannerSink::voiceActivityLevel: Bad formant spacing" << formantFreqs; + return 0.0; // Formants too close or too far apart + } + + // Check for F1 formant in expected range (300-1000 Hz from carrier) + // This is critical for voice detection + // F1 should be the lowest frequency formant + bool hasF1 = false; + Real f1Mag = 0.0; + int f1Idx = -1; + + if (formantFreqs.size() > 0 && formantFreqs[0] >= 300.0 && formantFreqs[0] <= 1000.0) + { + hasF1 = true; + f1Idx = formantIndices[0]; + f1Mag = formantMags[f1Idx]; + } + + if (!hasF1) { + // qDebug() << "FreqScannerSink::voiceActivityLevel: No valid F1 formant, lowest freq:" << (formantFreqs.size() > 0 ? formantFreqs[0] : -1); + return 0.0; // No F1 formant - not voice or mistuned + } + + // Check for F2 formant in expected range (900-2500 Hz from carrier) + // F2 should be higher frequency than F1 AND 400-1500 Hz away from F1 + bool hasF2 = false; + Real f2Mag = 0.0; + int f2Idx = -1; + float f2Freq = 0.0; + + for (int i = 1; i < formantFreqs.size(); i++) + { + float freqOffset = formantFreqs[i]; + float f1ToF2Spacing = freqOffset - formantFreqs[0]; + + // F2 must be: in range, higher than F1, and properly spaced from F1 + if (freqOffset >= 900.0 && freqOffset <= 2500.0 && + f1ToF2Spacing >= 400.0 && f1ToF2Spacing <= 1500.0) + { + hasF2 = true; + f2Idx = formantIndices[i]; + f2Freq = freqOffset; + f2Mag = formantMags[f2Idx]; + break; // Take the first valid F2 + } + } + + if (!hasF2) { + // qDebug() << "FreqScannerSink::voiceActivityLevel: No valid F2 formant, candidates not in range/spacing"; + return 0.0; // No F2 formant - not voice or mistuned + } + + // Calculate voice activity score based on formant characteristics + // Voice is indicated by presence of F1 and F2 formants - this is the primary voice signature + // Harmonics are less reliable in SSB due to spectral properties and noise float score = 0.0; - if (broadPeakCount >= 2) - { - // Detect fundamental frequency (f0) by looking for harmonic structure - // Voice has harmonics at f0, 2*f0, 3*f0, etc. with formants modulating them - // Typical f0: male 85-180 Hz, female 165-255 Hz - int carrierBin = isLSB ? endBin : startBin; + // Base score from number of formants (2-4 formants typical for voice) + // Formants are the most reliable voice indicator + // Use merged formant count, not raw peak count + float formantScore = std::min(formantFreqs.size() / 3.0f, 1.0f); + score += formantScore * 0.6; // 60% weight - // Try different f0 candidates in typical voice range (80-300 Hz) - int maxHarmonics = 0; - int bestF0Hz = 0; + // Score from formant magnitude (strong formants = strong voice) + // Higher magnitudes indicate clearer voice detection + // Make this threshold appropriately high to prefer strong signals + float magnitudeScore = std::min((float)(f1Mag + f2Mag) / (float)(noiseFloor * 6.0), 1.0f); + score += magnitudeScore * 0.4; // 40% weight - for (int f0Hz = 80; f0Hz <= 300; f0Hz += 10) - { - int f0Bins = (int)(f0Hz / binBW); - int harmonicCount = 0; + // Clamp to [0, 1] + score = std::max(0.0f, std::min(score, 1.0f)); - // Check for harmonics up to 3000 Hz (SSB bandwidth limit) - for (int h = 1; h <= 10; h++) - { - int harmonicBin = carrierBin + (isLSB ? -1 : 1) * (h * f0Bins); - - // Check if any detected peak is near this harmonic (within ±30 Hz tolerance) - int tolerance = (int)(30.0 / binBW); - for (int p = 0; p < peakBins.size(); p++) - { - if (std::abs(peakBins[p] - harmonicBin) <= tolerance) - { - harmonicCount++; - break; - } - } - - // Stop checking beyond 3 kHz - if (h * f0Hz > 3000) { - break; - } - } - - if (harmonicCount > maxHarmonics) - { - maxHarmonics = harmonicCount; - bestF0Hz = f0Hz; - } - } - - // Need at least 3 harmonics aligned to confirm voice pitch structure - // If mistuned by 1 kHz, formants won't align with any harmonic series - if (maxHarmonics < 3) { - return 0.0; - } - - // Check if first harmonic (f0) is actually present at low frequency - // When tuned correctly, f0 should be 80-300 Hz from carrier - int f0Bins = (int)(bestF0Hz / binBW); - int firstHarmonicBin = carrierBin + (isLSB ? -1 : 1) * f0Bins; - int tolerance = (int)(30.0 / binBW); - - bool hasF0 = false; - for (int p = 0; p < peakBins.size(); p++) - { - if (std::abs(peakBins[p] - firstHarmonicBin) <= tolerance) - { - hasF0 = true; - break; - } - } - - // If no peak near fundamental frequency, signal is mistuned - // (harmonics may still align but they're higher harmonics of wrong pitch) - if (!hasF0) { - return 0.0; - } - - // Verify at least one broad formant in F1 range (300-1000 Hz from carrier) - // This catches low-tuning errors where harmonics might still align - bool hasF1 = false; - for (int p = 0; p < broadPeakBins.size(); p++) - { - float freqOffset = std::abs(broadPeakBins[p] - carrierBin) * binBW; - if (freqOffset >= 300.0 && freqOffset <= 1000.0) { - hasF1 = true; - break; - } - } - - if (!hasF1) { - return 0.0; // No F1 formant - signal is mistuned - } - - // Base score from number of broad peaks - score = std::min(broadPeakCount / 4.0f, 1.0f); - - // Boost if spacing is good - if (goodSpacing) { - score = std::min(score * 1.5f, 1.0f); - } - - // Boost if strong harmonic structure (4+ harmonics) - if (maxHarmonics >= 4) { - score = std::min(score * 1.2f, 1.0f); - } - - // Penalize if too many narrow peaks (likely CW or noise) - // => This condition is ALWAYS true as there are always many more peaks than broad peaks - // int narrowPeakCount = peakBins.size() - broadPeakCount; - // if (narrowPeakCount > broadPeakCount) { - // score *= 0.5; - // } - - // Just strongly penalize if there are no broad peaks at all - if (broadPeakCount == 0) { - score *= 0.1; - } + if (score > m_settings.m_voiceSquelchThreshold) { + // qDebug() << "FreqScannerSink::voiceActivityLevel Sorted formant frequencies:" << formantFreqs; + qDebug() << "FreqScannerSink::voiceActivityLevel: Voice activity detection (formant-based):" + << "freq:" << freq << "Hz" + << "formants:" << formantFreqs.size() << "(merged from" << formantBins.size() << "peaks)" + << "F1:" << (hasF1 ? QString::number(formantFreqs[0], 'f', 0) : "none") << "Hz" + << "F2:" << (hasF2 ? QString::number(f2Freq, 'f', 0) : "none") << "Hz" + << "spacing:" << (hasF2 ? QString::number(f2Freq - formantFreqs[0], 'f', 0) : "none") << "Hz" + << "peak-to-noise:" << (maxEnv / noiseFloor) + << "noiseFloor:" << noiseFloor << "threshold:" << threshold + << "f1Mag:" << f1Mag << "f2Mag:" << f2Mag + << "score:" << score; } return score; } + diff --git a/plugins/channelrx/freqscanner/freqscannersink.h b/plugins/channelrx/freqscanner/freqscannersink.h index 2f021f2e1..9e58daac1 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.h +++ b/plugins/channelrx/freqscanner/freqscannersink.h @@ -83,7 +83,8 @@ private: Real peakPower(int bin, int channelBins) const; Real magSq(int bin) const; Real magSqFromRawFFT(int bin) const; - Real voiceActivityLevel(int bin, int channelBins, bool isLSB) const; + Real voiceActivityLevel(qint64 freq, int bin, int channelBins, bool isLSB) const; + void getFormantEnvelope(int startBin, int endBin, QVector& envelope) const; }; #endif // INCLUDE_FREQSCANNERSINK_H From fc35c55fb5ceb555197812d43d8f6db2d421f866 Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 18 Feb 2026 00:37:05 +0100 Subject: [PATCH 15/24] Freq Scanner voice squelch: use cepstal liftering --- plugins/channelrx/freqscanner/freqscanner.cpp | 16 +- plugins/channelrx/freqscanner/freqscanner.h | 6 + .../channelrx/freqscanner/freqscannersink.cpp | 286 ++++++++++++++---- .../channelrx/freqscanner/freqscannersink.h | 11 +- 4 files changed, 259 insertions(+), 60 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscanner.cpp b/plugins/channelrx/freqscanner/freqscanner.cpp index 60653e47d..5397e437c 100644 --- a/plugins/channelrx/freqscanner/freqscanner.cpp +++ b/plugins/channelrx/freqscanner/freqscanner.cpp @@ -489,8 +489,9 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< frequencySettings = m_settings.getFrequencySettings(m_scanResults[j].m_frequency); Real threshold = m_settings.getThreshold(frequencySettings); - if ((m_scanResults[j].m_power >= threshold) - && checkVoiceThreshold(m_settings.m_voiceSquelchType, m_scanResults[j].m_voiceActivityLevel, m_settings.m_voiceSquelchThreshold)) + if (checkThresholds(m_settings.m_voiceSquelchType, m_scanResults[j], threshold, m_settings.m_voiceSquelchThreshold)) + // if ((m_scanResults[j].m_power >= threshold) + // && checkVoiceThreshold(m_settings.m_voiceSquelchType, m_scanResults[j].m_voiceActivityLevel, m_settings.m_voiceSquelchThreshold)) { frequency = m_scanResults[j].m_frequency; activeFrequencySettings = frequencySettings; @@ -818,6 +819,17 @@ bool FreqScanner::checkVoiceThreshold(FreqScannerSettings::VoiceSquelchType voic return (voiceSquelchType == FreqScannerSettings::VoiceSquelchType::None) || (voiceActivityLevel >= voiceSquelchThreshold); } +bool FreqScanner::checkThresholds( + FreqScannerSettings::VoiceSquelchType voiceSquelchType, + const FreqScanner::MsgScanResult::ScanResult& result, + Real powerThreshold, + Real voiceSquelchThreshold +) +{ + return (((result.m_power >= powerThreshold) && (voiceSquelchType == FreqScannerSettings::VoiceSquelchType::None)) + || (result.m_voiceActivityLevel >= voiceSquelchThreshold)); +} + void FreqScanner::applyChannelSetting(const QString& channel) { if (!MainCore::getDeviceAndChannelIndexFromId(channel, m_scanDeviceSetIndex, m_scanChannelIndex)) { diff --git a/plugins/channelrx/freqscanner/freqscanner.h b/plugins/channelrx/freqscanner/freqscanner.h index 69118c382..d18f90d3e 100644 --- a/plugins/channelrx/freqscanner/freqscanner.h +++ b/plugins/channelrx/freqscanner/freqscanner.h @@ -448,6 +448,12 @@ private: void mute(unsigned int deviceSetIndex, unsigned int channelIndex); void unmute(unsigned int deviceSetIndex, unsigned int channelIndex); bool checkVoiceThreshold(FreqScannerSettings::VoiceSquelchType voiceSquelchType, Real voiceActivityLevel, Real voiceSquelchThreshold); + bool checkThresholds( + FreqScannerSettings::VoiceSquelchType voiceSquelchType, + const FreqScanner::MsgScanResult::ScanResult& result, + Real powerThreshold, + Real voiceSquelchThreshold + ); static QList *createFrequencyList(const FreqScannerSettings& settings); diff --git a/plugins/channelrx/freqscanner/freqscannersink.cpp b/plugins/channelrx/freqscanner/freqscannersink.cpp index 94bdbd067..bbbbc557a 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.cpp +++ b/plugins/channelrx/freqscanner/freqscannersink.cpp @@ -43,7 +43,12 @@ FreqScannerSink::FreqScannerSink() : m_fftCounter(0), m_fftSize(1024), m_binsPerChannel(16), - m_averageCount(0) + m_averageCount(0), + m_cepstrumSequenceInverse(-1), + m_cepstrumSequenceForward(-1), + m_cepstrumFFTInverse(nullptr), + m_cepstrumFFTForward(nullptr), + m_cepstrumSize(0) { applySettings(m_settings, QStringList(), true); applyChannelSettings(m_channelSampleRate, m_channelFrequencyOffset, 16, 4, true); @@ -51,11 +56,19 @@ FreqScannerSink::FreqScannerSink() : FreqScannerSink::~FreqScannerSink() { - if (m_fftSequence >= 0) - { - FFTFactory* fftFactory = DSPEngine::instance()->getFFTFactory(); + FFTFactory* fftFactory = DSPEngine::instance()->getFFTFactory(); + + if (m_fftSequence >= 0) { fftFactory->releaseEngine(m_fftSize, false, m_fftSequence); } + + if (m_cepstrumSequenceInverse >= 0) { + fftFactory->releaseEngine(m_cepstrumSize, true, m_cepstrumSequenceInverse); + } + + if (m_cepstrumSequenceForward >= 0) { + fftFactory->releaseEngine(m_cepstrumSize, false, m_cepstrumSequenceForward); + } } void FreqScannerSink::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end) @@ -211,8 +224,14 @@ void FreqScannerSink::processOneSample(Complex &ci) Real voiceLevel = 0.0; if ((m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceLsb || m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceUsb) && - m_voiceLevelCount[i] > 0) { + m_voiceLevelCount[i] > 0) + { voiceLevel = m_voiceLevelSum[i] / m_voiceLevelCount[i]; + if (voiceLevel > m_settings.m_voiceSquelchThreshold) { + qDebug() << "FreqScannerSink::processOneSample: frequency" + << frequency + (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceLsb ? 1500 : -1500) + << "voiceLevel" << voiceLevel << "count" << m_voiceLevelCount[i]; + } } //qDebug() << "startFrequency:" << startFrequency << "m_scannerSampleRate:" << m_scannerSampleRate << "m_centerFrequency:" << m_centerFrequency << "frequency" << frequency << "bin" << bin << "power" << power << "voiceLevel" << voiceLevel; @@ -297,10 +316,15 @@ Real FreqScannerSink::magSqFromRawFFT(int bin) const return magSq(fftBin); } -// Compute formant envelope using log-domain spectral smoothing +// Compute formant envelope using cepstral liftering // This separates vocal tract resonances (formants) from pitch harmonics -void FreqScannerSink::getFormantEnvelope(int startBin, int endBin, QVector& envelope) const +// Method: log spectrum → IFFT → lifter → FFT → exp +void FreqScannerSink::getFormantEnvelope(int startBin, int endBin, QVector& envelope, Real *pitchHz) { + if (pitchHz) { + *pitchHz = 0.0; + } + if (startBin < 0 || endBin >= m_fftSize || startBin > endBin) { envelope.clear(); return; @@ -309,68 +333,167 @@ void FreqScannerSink::getFormantEnvelope(int startBin, int endBin, QVector int numBins = endBin - startBin + 1; envelope.resize(numBins); + // Check if cepstral FFT engines are available and large enough + if (!m_cepstrumFFTInverse || !m_cepstrumFFTForward || numBins > m_cepstrumSize) { + // qDebug() << "FreqScannerSink::getFormantEnvelope: Cepstral FFT not available or too small" + // << "numBins:" << numBins << "cepstrumSize:" << m_cepstrumSize; + // Fallback: return simple log/exp without cepstral processing + for (int i = 0; i < numBins; i++) { + Real magSq = magSqFromRawFFT(startBin + i); + envelope[i] = std::sqrt(std::max(magSq, (Real)1e-12)); + } + return; + } + // Step 1: Compute log magnitude spectrum QVector logMag(numBins); Real minLog = -10.0; // Floor to avoid log(0) + Real sumMagSq = 0.0; for (int i = 0; i < numBins; i++) { Real magSq = magSqFromRawFFT(startBin + i); + sumMagSq += magSq; Real mag = std::sqrt(std::max(magSq, (Real)1e-12)); logMag[i] = std::log(mag); if (logMag[i] < minLog) { logMag[i] = minLog; } } + + // qDebug() << "FreqScannerSink::getFormantEnvelope: Input spectrum check:" + // << "numBins:" << numBins + // << "sumMagSq:" << sumMagSq + // << "avgMagSq:" << (sumMagSq / numBins) + // << "first 5 logMag:" << logMag.mid(0, std::min(5, numBins)); - // Step 2: Apply smoothing in log domain to extract formant envelope - // This removes rapid variations (pitch harmonics) while keeping slow variations (formants) - // Use moving average filter with window size based on expected harmonic spacing + // Step 2: Apply cepstral liftering for better source-filter separation + // Cepstral analysis separates: + // - Voice pitch (high quefrency peak) + // - Formants (low quefrency components) + // Liftering = low-pass filtering in quefrency domain - float binBW = m_scannerSampleRate / (float)m_fftSize; + // Copy log magnitude to inverse FFT input (real data, symmetric spectrum) + // For real cepstrum, we need a symmetric spectrum: + // [DC, positive freqs, Nyquist, negative freqs (mirror)] - // For formant detection, smooth over approximately 200-300 Hz - // This is wider than typical harmonic spacing (80-300 Hz) but narrower than formant bandwidth - float smoothingBandwidthHz = 250.0; // Hz - int smoothingWindow = std::max(3, (int)(smoothingBandwidthHz / binBW)); + // DC component + m_cepstrumFFTInverse->in()[0] = Complex(logMag[0], 0.0); - // Make smoothing window odd for symmetry - if (smoothingWindow % 2 == 0) { - smoothingWindow++; + // Positive frequencies + int halfBins = std::min(numBins, m_cepstrumSize / 2); + for (int i = 1; i < halfBins; i++) { + m_cepstrumFFTInverse->in()[i] = Complex(logMag[i], 0.0); } - int halfWindow = smoothingWindow / 2; + // Nyquist (if we have space) + if (m_cepstrumSize > halfBins) { + m_cepstrumFFTInverse->in()[halfBins] = Complex(numBins > halfBins ? logMag[halfBins] : logMag[halfBins-1], 0.0); + } - // qDebug() << "FreqScannerSink::getFormantEnvelope smoothingWindow:" << smoothingWindow - // << "bins (" << (smoothingWindow * binBW) << "Hz)"; + // Negative frequencies (mirror of positive) + for (int i = 1; i < halfBins; i++) { + m_cepstrumFFTInverse->in()[m_cepstrumSize - i] = Complex(logMag[i], 0.0); + } + + // Zero-pad the middle if needed + for (int i = halfBins + 1; i < m_cepstrumSize - halfBins; i++) { + m_cepstrumFFTInverse->in()[i] = Complex(0.0, 0.0); + } + + // Step 3: IFFT to get cepstrum (quefrency domain) + m_cepstrumFFTInverse->transform(); + + // Step 4: Estimate pitch from the cepstrum before liftering. + // Pitch appears as a peak at higher quefrencies (around 3-14 ms). + float binBW = m_scannerSampleRate / (float)m_fftSize; + float quefrencyResolution = 1.0f / (m_cepstrumSize * binBW); // seconds per bin in quefrency - // Apply moving average smoothing - QVector smoothedLog(numBins); - for (int i = 0; i < numBins; i++) - { - Real sum = 0.0; - int count = 0; - - for (int j = -halfWindow; j <= halfWindow; j++) - { - int idx = i + j; - if (idx >= 0 && idx < numBins) { - sum += logMag[idx]; - count++; + if (pitchHz) { + const float minPitchHz = 70.0f; + const float maxPitchHz = 300.0f; + const float minQuefrency = 1.0f / maxPitchHz; + const float maxQuefrency = 1.0f / minPitchHz; + const int minBin = std::max(1, (int)std::ceil(minQuefrency / quefrencyResolution)); + const int maxBin = std::min(m_cepstrumSize / 2, (int)std::floor(maxQuefrency / quefrencyResolution)); + Real maxVal = 0.0; + int maxIdx = -1; + + for (int i = minBin; i <= maxBin; i++) { + Real val = std::abs(m_cepstrumFFTInverse->out()[i].real()); + if (val > maxVal) { + maxVal = val; + maxIdx = i; } } - - smoothedLog[i] = (count > 0) ? (sum / count) : logMag[i]; + + if (maxIdx > 0) { + *pitchHz = 1.0f / (maxIdx * quefrencyResolution); + } } - // Step 3: Convert back to linear magnitude + // Step 5: Apply lifter (low-pass filter in quefrency domain) + // Lifter cutoff: keep low quefrencies (formant envelope), remove high quefrencies (pitch harmonics) + // Typical pitch periods: 3-10 ms (100-330 Hz F0) + // We want to remove quefrencies corresponding to pitch harmonics + + // Lifter cutoff in seconds (quefrency): keep components below this + // Use much lower cutoff - we only need to keep very low quefrencies for formant envelope + // Most formant information is in the first few quefrency bins + float lifterCutoffQuefrency = 0.002f; // 2 ms (reduced from 8 ms) + int lifterCutoffBin = std::max(1, (int)(lifterCutoffQuefrency / quefrencyResolution)); + + // Cap the lifter cutoff to reasonable maximum (1/4 of cepstrum size) + lifterCutoffBin = std::min(lifterCutoffBin, m_cepstrumSize / 4); + + // Apply lifter: keep low quefrencies, zero out high quefrencies + // Use smooth transition (raised cosine) to reduce artifacts + int transitionBins = std::max(1, lifterCutoffBin / 4); + + for (int i = 0; i < m_cepstrumSize; i++) { + Real lifterWeight = 1.0; + + if (i > lifterCutoffBin + transitionBins) { + lifterWeight = 0.0; // Zero out high quefrencies + } else if (i > lifterCutoffBin) { + // Smooth transition using raised cosine + float t = (float)(i - lifterCutoffBin) / transitionBins; + lifterWeight = 0.5 * (1.0 + std::cos(M_PI * t)); + } + // else: lifterWeight = 1.0 (keep low quefrencies) + + m_cepstrumFFTForward->in()[i] = m_cepstrumFFTInverse->out()[i] * lifterWeight; + } + + // qDebug() << "FreqScannerSink::getFormantEnvelope cepstral lifter:" + // << "cutoff bin:" << lifterCutoffBin + // << "(" << (lifterCutoffBin * quefrencyResolution * 1000.0) << "ms)" + // << "quefrency resolution:" << (quefrencyResolution * 1000.0) << "ms/bin"; + + // Step 6: FFT back to frequency domain (smoothed log spectrum) + m_cepstrumFFTForward->transform(); + + // Debug: check forward FFT output + // qDebug() << "FreqScannerSink::getFormantEnvelope: Forward FFT output check:" + // << "first 5 real:" << m_cepstrumFFTForward->out()[0].real() + // << m_cepstrumFFTForward->out()[1].real() + // << m_cepstrumFFTForward->out()[2].real() + // << m_cepstrumFFTForward->out()[3].real() + // << m_cepstrumFFTForward->out()[4].real(); + + // Step 7: Convert back to linear magnitude + // Take real part of FFT output and exponentiate + // IMPORTANT: Normalize by FFT size since FFT engines don't auto-normalize + Real normalization = 1.0 / m_cepstrumSize; + for (int i = 0; i < numBins; i++) { - envelope[i] = std::exp(smoothedLog[i]); + Real smoothedLog = m_cepstrumFFTForward->out()[i].real() * normalization; + envelope[i] = std::exp(smoothedLog); } // Debug: print first few envelope values - // qDebug() << "FreqScannerSink::getFormantEnvelope first 10 envelope values:" + // qDebug() << "FreqScannerSink::getFormantEnvelope (cepstral) first 10 envelope values:" // << envelope.mid(0, std::min(10, numBins)); } @@ -400,7 +523,7 @@ void FreqScannerSink::applyChannelSettings(int channelSampleRate, int channelFre { FFTFactory* fftFactory = DSPEngine::instance()->getFFTFactory(); if (m_fftSequence >= 0) { - fftFactory->releaseEngine(fftSize, false, m_fftSequence); + fftFactory->releaseEngine(m_fftSize, false, m_fftSequence); } m_fftSequence = fftFactory->getEngine(fftSize, false, &m_fft); m_fftCounter = 0; @@ -417,6 +540,32 @@ void FreqScannerSink::applyChannelSettings(int channelSampleRate, int channelFre m_voiceLevelCount.resize(freqCount); m_voiceLevelSum.fill(0.0); m_voiceLevelCount.fill(0); + + // Allocate cepstral FFT engines for formant detection + // Size needs to be power-of-2 and >= channel bins (typically ~100-200 bins) + // Use conservative size to handle most SSB channels + int maxChannelBins = std::max(binsPerChannel * 2, 256); + int cepstrumSize = 1; + while (cepstrumSize < maxChannelBins) { + cepstrumSize <<= 1; + } + + if (m_cepstrumSize != cepstrumSize) { + // Release old engines if size changed + if (m_cepstrumSequenceInverse >= 0) { + fftFactory->releaseEngine(m_cepstrumSize, true, m_cepstrumSequenceInverse); + } + if (m_cepstrumSequenceForward >= 0) { + fftFactory->releaseEngine(m_cepstrumSize, false, m_cepstrumSequenceForward); + } + + // Allocate new engines + m_cepstrumSequenceInverse = fftFactory->getEngine(cepstrumSize, true, &m_cepstrumFFTInverse); + m_cepstrumSequenceForward = fftFactory->getEngine(cepstrumSize, false, &m_cepstrumFFTForward); + m_cepstrumSize = cepstrumSize; + + qDebug() << "FreqScannerSink::applyChannelSettings: Allocated cepstral FFT engines, size:" << cepstrumSize; + } } m_channelSampleRate = channelSampleRate; @@ -448,7 +597,7 @@ void FreqScannerSink::applySettings(const FreqScannerSettings& settings, const Q // Voice activity detection for SSB signals // Detects voice by looking for formant-like structure using spectral smoothing // Returns a value from 0.0 (no voice) to 1.0 (strong voice signature) -Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, bool isLSB) const +Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, bool isLSB) { // Voice band in SSB is typically 100-3000 Hz from carrier // We look for 2-4 formant peaks in the smoothed spectral envelope @@ -469,7 +618,8 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, // Get formant envelope using spectral smoothing // This separates vocal tract resonances from pitch harmonics QVector formantEnvelope; - getFormantEnvelope(startBin, endBin, formantEnvelope); + Real pitchHz = 0.0; + getFormantEnvelope(startBin, endBin, formantEnvelope, &pitchHz); if (formantEnvelope.isEmpty()) { qDebug() << "FreqScannerSink::voiceActivityLevel formantEnvelope is empty!"; @@ -533,7 +683,8 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, // Voice requires 2-4 formants if (formantBins.size() < 2) { - // qDebug() << "FreqScannerSink::voiceActivityLevel: Not enough peaks detected" << formantBins.size(); + // qDebug() << "FreqScannerSink::voiceActivityLevel: Not enough peaks detected" << formantBins.size() + // << "threshold:" << threshold << "envelope size:" << formantEnvelope.size(); return 0.0; } @@ -684,22 +835,45 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, float magnitudeScore = std::min((float)(f1Mag + f2Mag) / (float)(noiseFloor * 6.0), 1.0f); score += magnitudeScore * 0.4; // 40% weight + // Apply a soft pitch-based weighting. Pitch helps detect detuning, but should not gate voice. + const float minPitchHz = 70.0f; + const float maxPitchHz = 300.0f; + const float softMinPitchHz = 50.0f; + const float softMaxPitchHz = 400.0f; + float pitchScore = 0.7f; + + if (pitchHz > 0.0f) { + if (pitchHz >= minPitchHz && pitchHz <= maxPitchHz) { + pitchScore = 1.0f; + } else if (pitchHz >= softMinPitchHz && pitchHz <= softMaxPitchHz) { + if (pitchHz < minPitchHz) { + pitchScore = 0.7f + 0.3f * (pitchHz - softMinPitchHz) / (minPitchHz - softMinPitchHz); + } else { + pitchScore = 0.7f + 0.3f * (softMaxPitchHz - pitchHz) / (softMaxPitchHz - maxPitchHz); + } + } else { + pitchScore = 0.6f; + } + } + + score *= pitchScore; + // Clamp to [0, 1] score = std::max(0.0f, std::min(score, 1.0f)); - if (score > m_settings.m_voiceSquelchThreshold) { - // qDebug() << "FreqScannerSink::voiceActivityLevel Sorted formant frequencies:" << formantFreqs; - qDebug() << "FreqScannerSink::voiceActivityLevel: Voice activity detection (formant-based):" - << "freq:" << freq << "Hz" - << "formants:" << formantFreqs.size() << "(merged from" << formantBins.size() << "peaks)" - << "F1:" << (hasF1 ? QString::number(formantFreqs[0], 'f', 0) : "none") << "Hz" - << "F2:" << (hasF2 ? QString::number(f2Freq, 'f', 0) : "none") << "Hz" - << "spacing:" << (hasF2 ? QString::number(f2Freq - formantFreqs[0], 'f', 0) : "none") << "Hz" - << "peak-to-noise:" << (maxEnv / noiseFloor) - << "noiseFloor:" << noiseFloor << "threshold:" << threshold - << "f1Mag:" << f1Mag << "f2Mag:" << f2Mag - << "score:" << score; - } + // if (score > m_settings.m_voiceSquelchThreshold) { + // qDebug() << "FreqScannerSink::voiceActivityLevel:" + // << "freq:" << freq + (isLSB ? 1500 : -1500) << "Hz" + // << "formants:" << formantFreqs.size() << "(merged from" << formantBins.size() << "peaks)" + // << "F1:" << (hasF1 ? QString::number(formantFreqs[0], 'f', 0) : "none") << "Hz" + // << "F2:" << (hasF2 ? QString::number(f2Freq, 'f', 0) : "none") << "Hz" + // << "spacing:" << (hasF2 ? QString::number(f2Freq - formantFreqs[0], 'f', 0) : "none") << "Hz" + // << "peak-to-noise:" << (maxEnv / noiseFloor) + // << "noiseFloor:" << noiseFloor << "threshold:" << threshold + // << "f1Mag:" << f1Mag << "f2Mag:" << f2Mag + // << "pitchHz:" << pitchHz << "pitchScore:" << pitchScore + // << "score:" << score; + // } return score; } diff --git a/plugins/channelrx/freqscanner/freqscannersink.h b/plugins/channelrx/freqscanner/freqscannersink.h index 9e58daac1..401615960 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.h +++ b/plugins/channelrx/freqscanner/freqscannersink.h @@ -77,14 +77,21 @@ private: QVector m_voiceLevelSum; // Sum of voice levels for averaging QVector m_voiceLevelCount; // Count of voice level samples + // Cepstral analysis FFT engines for formant detection + int m_cepstrumSequenceInverse; + int m_cepstrumSequenceForward; + FFTEngine *m_cepstrumFFTInverse; + FFTEngine *m_cepstrumFFTForward; + int m_cepstrumSize; + void processOneSample(Complex &ci); MessageQueue *getMessageQueueToChannel() { return m_messageQueueToChannel; } Real totalPower(int bin, int channelBins) const; Real peakPower(int bin, int channelBins) const; Real magSq(int bin) const; Real magSqFromRawFFT(int bin) const; - Real voiceActivityLevel(qint64 freq, int bin, int channelBins, bool isLSB) const; - void getFormantEnvelope(int startBin, int endBin, QVector& envelope) const; + Real voiceActivityLevel(qint64 freq, int bin, int channelBins, bool isLSB); + void getFormantEnvelope(int startBin, int endBin, QVector& envelope, Real *pitchHz = nullptr); }; #endif // INCLUDE_FREQSCANNERSINK_H From 5574b7f3d6c51e1cb08f4044df77ee5ba289aab4 Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 18 Feb 2026 19:48:36 +0100 Subject: [PATCH 16/24] Freq Scanner voice squelch: pitch/formant mitigation --- .../channelrx/freqscanner/freqscannersink.cpp | 124 ++++++++++++++++-- 1 file changed, 114 insertions(+), 10 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscannersink.cpp b/plugins/channelrx/freqscanner/freqscannersink.cpp index bbbbc557a..053a59429 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.cpp +++ b/plugins/channelrx/freqscanner/freqscannersink.cpp @@ -228,7 +228,7 @@ void FreqScannerSink::processOneSample(Complex &ci) { voiceLevel = m_voiceLevelSum[i] / m_voiceLevelCount[i]; if (voiceLevel > m_settings.m_voiceSquelchThreshold) { - qDebug() << "FreqScannerSink::processOneSample: frequency" + qDebug() << "FreqScannerSink::processOneSample: freq" << frequency + (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceLsb ? 1500 : -1500) << "voiceLevel" << voiceLevel << "count" << m_voiceLevelCount[i]; } @@ -670,10 +670,17 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, if (curr > prev && curr > next && curr > threshold) { int absBin = startBin + i; - float freqOffset = std::abs(absBin - carrierBin) * binBW; + // Use SIGNED offset to distinguish USB from LSB and reject mistuned signals + // USB: formants at positive offset (100-3000 Hz above carrier) + // LSB: formants at negative offset (-3000 to -100 Hz below carrier) + float freqOffset = (absBin - carrierBin) * binBW; - // Only include peaks within SSB voice bandwidth (100-3000 Hz from carrier) - if (freqOffset >= 100.0 && freqOffset <= 3000.0) + // Check appropriate sideband for voice: USB uses positive, LSB uses negative + // This rejects signals tuned to wrong sideband (e.g., 1kHz offset) + bool inVoiceBand = isLSB ? (freqOffset <= -100.0 && freqOffset >= -3000.0) + : (freqOffset >= 100.0 && freqOffset <= 3000.0); + + if (inVoiceBand) { formantBins.append(absBin); formantMags.append(curr); @@ -691,11 +698,13 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, // qDebug() << "FreqScannerSink::voiceActivityLevel: Detected" << formantBins.size() << "peaks above threshold"; // Sort formants by frequency offset (not bin order) to handle LSB reversal + // Convert to absolute frequencies since F1/F2 validation expects positive values QVector formantFreqs; QVector formantIndices; for (int i = 0; i < formantBins.size(); i++) { + // Use absolute value for formant frequency analysis (F1, F2 ranges are defined as positive) float freqOffset = std::abs(formantBins[i] - carrierBin) * binBW; formantFreqs.append(freqOffset); formantIndices.append(i); @@ -841,6 +850,8 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, const float softMinPitchHz = 50.0f; const float softMaxPitchHz = 400.0f; float pitchScore = 0.7f; + float harmonicAlignmentScore = 0.75f; + float formantIndexScore = 0.8f; if (pitchHz > 0.0f) { if (pitchHz >= minPitchHz && pitchHz <= maxPitchHz) { @@ -854,16 +865,108 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, } else { pitchScore = 0.6f; } + + // Check harmonic-comb alignment against the estimated pitch. + // A wrong carrier offset shifts all harmonics by a constant frequency, + // so they no longer align with integer multiples of pitch. + const float harmonicToleranceHz = std::max(2.0f * binBW, 0.18f * (float) pitchHz); + Real rawNoiseFloor = 0.0; + int rawBinCount = 0; + + for (int absBin = startBin; absBin <= endBin; absBin++) + { + float signedOffset = (absBin - carrierBin) * binBW; + float voiceOffset = isLSB ? -signedOffset : signedOffset; + + if (voiceOffset >= 100.0f && voiceOffset <= 3000.0f) + { + rawNoiseFloor += m_magSq[absBin]; + rawBinCount++; + } + } + + rawNoiseFloor = rawBinCount > 0 ? rawNoiseFloor / rawBinCount : 0.0; + + Real alignedEnergy = 0.0; + Real totalEnergy = 0.0; + + for (int absBin = startBin; absBin <= endBin; absBin++) + { + float signedOffset = (absBin - carrierBin) * binBW; + float voiceOffset = isLSB ? -signedOffset : signedOffset; + + if (voiceOffset < 100.0f || voiceOffset > 3000.0f) { + continue; + } + + Real binEnergy = m_magSq[absBin]; + + if (binEnergy <= rawNoiseFloor * 1.2f) { + continue; + } + + float residue = std::fmod(voiceOffset, (float) pitchHz); + if (residue < 0.0f) { + residue += (float) pitchHz; + } + + float harmonicDistance = std::min(residue, (float) pitchHz - residue); + Real weightedEnergy = std::max(binEnergy - rawNoiseFloor, (Real) 0.0); + + totalEnergy += weightedEnergy; + + if (harmonicDistance <= harmonicToleranceHz) { + alignedEnergy += weightedEnergy; + } + } + + if (totalEnergy > 0.0) + { + float harmonicAlignment = alignedEnergy / totalEnergy; + float normalizedAlignment = (harmonicAlignment - 0.20f) / 0.45f; + normalizedAlignment = std::max(0.0f, std::min(normalizedAlignment, 1.0f)); + harmonicAlignmentScore = 0.5f + 0.5f * normalizedAlignment; + } + + // Check formant harmonic-index plausibility. + // Wrong carrier tuning that shifts spectrum down can make F2/F3 appear as F1/F2. + // In that case the implied harmonic indices become unusually high. + float f1HarmonicIndex = formantFreqs[0] / (float) pitchHz; + float f2HarmonicIndex = f2Freq / (float) pitchHz; + float harmonicGap = f2HarmonicIndex - f1HarmonicIndex; + + float f1IndexScore = 1.0f; + if (f1HarmonicIndex < 2.0f) { + f1IndexScore = std::max(0.0f, (f1HarmonicIndex - 1.0f) / 1.0f); + } else if (f1HarmonicIndex > 18.0f) { + f1IndexScore = std::max(0.0f, (26.0f - f1HarmonicIndex) / 8.0f); + } + + float f2IndexScore = 1.0f; + if (f2HarmonicIndex < 5.0f) { + f2IndexScore = std::max(0.0f, (f2HarmonicIndex - 3.0f) / 2.0f); + } else if (f2HarmonicIndex > 36.0f) { + f2IndexScore = std::max(0.0f, (44.0f - f2HarmonicIndex) / 8.0f); + } + + float gapScore = 1.0f; + if (harmonicGap < 3.0f) { + gapScore = std::max(0.0f, (harmonicGap - 1.0f) / 2.0f); + } else if (harmonicGap > 22.0f) { + gapScore = std::max(0.0f, (28.0f - harmonicGap) / 6.0f); + } + + formantIndexScore = std::max(0.4f, 0.25f + 0.75f * (0.40f * f1IndexScore + 0.40f * f2IndexScore + 0.20f * gapScore)); } - score *= pitchScore; + score *= pitchScore * harmonicAlignmentScore * formantIndexScore; // Clamp to [0, 1] score = std::max(0.0f, std::min(score, 1.0f)); - // if (score > m_settings.m_voiceSquelchThreshold) { - // qDebug() << "FreqScannerSink::voiceActivityLevel:" - // << "freq:" << freq + (isLSB ? 1500 : -1500) << "Hz" + if (score > m_settings.m_voiceSquelchThreshold) { + qDebug() << "FreqScannerSink::voiceActivityLevel:" + << "freq:" << freq + (isLSB ? 1500 : -1500) << "Hz" // << "formants:" << formantFreqs.size() << "(merged from" << formantBins.size() << "peaks)" // << "F1:" << (hasF1 ? QString::number(formantFreqs[0], 'f', 0) : "none") << "Hz" // << "F2:" << (hasF2 ? QString::number(f2Freq, 'f', 0) : "none") << "Hz" @@ -872,8 +975,9 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, // << "noiseFloor:" << noiseFloor << "threshold:" << threshold // << "f1Mag:" << f1Mag << "f2Mag:" << f2Mag // << "pitchHz:" << pitchHz << "pitchScore:" << pitchScore - // << "score:" << score; - // } + << "harmonicAlignment:" << harmonicAlignmentScore + << "score:" << score; + } return score; } From 8b486d5709eda51122e8e10a4be0055518c9c096 Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 18 Feb 2026 21:25:45 +0100 Subject: [PATCH 17/24] Frequency scanner voice squelch: Additional F1 plausibility checks --- .../channelrx/freqscanner/freqscannersink.cpp | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/plugins/channelrx/freqscanner/freqscannersink.cpp b/plugins/channelrx/freqscanner/freqscannersink.cpp index 053a59429..6a70f76b4 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.cpp +++ b/plugins/channelrx/freqscanner/freqscannersink.cpp @@ -827,6 +827,40 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, return 0.0; // No F2 formant - not voice or mistuned } + // Additional F1 plausibility checks. + // Prevent a tiny low-frequency ripple from being accepted as F1 when + // dominant formant energy is shifted high (e.g. around 2 kHz). + Real strongestFormantMag = 0.0; + float strongestFormantFreq = 0.0f; + + for (int i = 0; i < formantFreqs.size(); i++) + { + int idx = formantIndices[i]; + if (formantMags[idx] > strongestFormantMag) + { + strongestFormantMag = formantMags[idx]; + strongestFormantFreq = formantFreqs[i]; + } + } + + const float minF1ToStrongestRatio = 0.35f; + const float dominantHighFormantHz = 1200.0f; + bool weakF1 = f1Mag < strongestFormantMag * minF1ToStrongestRatio; + bool dominantIsHigh = strongestFormantFreq >= dominantHighFormantHz; + + if (weakF1 && dominantIsHigh) { + // qDebug() << "FreqScannerSink::voiceActivityLevel: Rejected weak F1 with dominant high formant" + // << "F1:" << formantFreqs[0] << "Hz" << "F1 mag:" << f1Mag + // << "strongest:" << strongestFormantFreq << "Hz" << strongestFormantMag; + return 0.0; + } + + // F1 must have a minimum contrast above noise floor. + if (f1Mag < noiseFloor * 1.25f) { + return 0.0; + } + // Additional F1 plausibility checks - end + // Calculate voice activity score based on formant characteristics // Voice is indicated by presence of F1 and F2 formants - this is the primary voice signature // Harmonics are less reliable in SSB due to spectral properties and noise From ceb602283a9a1314c2639c373d031666e730dcfe Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 20 Feb 2026 02:34:14 +0100 Subject: [PATCH 18/24] Freq Scanner: GUI changes --- plugins/channelrx/freqscanner/freqscanner.cpp | 4 +- .../freqscanner/freqscanneraddrangedialog.cpp | 18 ++++ .../freqscanner/freqscanneraddrangedialog.ui | 22 ++++- .../channelrx/freqscanner/freqscannergui.cpp | 41 ++++++++- .../channelrx/freqscanner/freqscannergui.h | 1 + .../channelrx/freqscanner/freqscannergui.ui | 88 ++++++++++--------- 6 files changed, 130 insertions(+), 44 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscanner.cpp b/plugins/channelrx/freqscanner/freqscanner.cpp index 5397e437c..45d57f81d 100644 --- a/plugins/channelrx/freqscanner/freqscanner.cpp +++ b/plugins/channelrx/freqscanner/freqscanner.cpp @@ -649,7 +649,9 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< if ((results[i].m_power >= threshold) && checkVoiceThreshold(m_settings.m_voiceSquelchType, results[i].m_voiceActivityLevel, m_settings.m_voiceSquelchThreshold)) { - qDebug("FreqScanner::processScanResults: WAIT_FOR_RETRANSMISSION restart: voice score: %f", results[i].m_voiceActivityLevel); + if (m_settings.m_voiceSquelchType != FreqScannerSettings::VoiceSquelchType::None) { + qDebug("FreqScanner::processScanResults: WAIT_FOR_RETRANSMISSION restart: voice score: %f", results[i].m_voiceActivityLevel); + } m_timeoutTimer.stop(); m_state = WAIT_FOR_END_TX; } diff --git a/plugins/channelrx/freqscanner/freqscanneraddrangedialog.cpp b/plugins/channelrx/freqscanner/freqscanneraddrangedialog.cpp index e28b21956..bc30dbda5 100644 --- a/plugins/channelrx/freqscanner/freqscanneraddrangedialog.cpp +++ b/plugins/channelrx/freqscanner/freqscanneraddrangedialog.cpp @@ -168,6 +168,24 @@ void FreqScannerAddRangeDialog::on_preset_currentTextChanged(const QString& text { enableManAdjust = false; } + else if (text == "HF 20m") + { + ui->start->setValue(14180500); + ui->stop->setValue(14250500); + ui->step->setCurrentText("1000"); + } + else if (text == "HF 40m") + { + ui->start->setValue(7110500); + ui->stop->setValue(7190500); + ui->step->setCurrentText("1000"); + } + else if (text == "HF 80m") + { + ui->start->setValue(3680500); + ui->stop->setValue(3780500); + ui->step->setCurrentText("1000"); + } ui->start->setEnabled(enableManAdjust); ui->stop->setEnabled(enableManAdjust); ui->step->setEnabled(enableManAdjust); diff --git a/plugins/channelrx/freqscanner/freqscanneraddrangedialog.ui b/plugins/channelrx/freqscanner/freqscanneraddrangedialog.ui index 44532692e..f7989d063 100644 --- a/plugins/channelrx/freqscanner/freqscanneraddrangedialog.ui +++ b/plugins/channelrx/freqscanner/freqscanneraddrangedialog.ui @@ -7,7 +7,7 @@ 0 0 385 - 190 + 203 @@ -130,6 +130,11 @@ 100000 + + + 1000 + + @@ -203,6 +208,21 @@ HF ATC + + + HF 20m + + + + + HF 40m + + + + + HF 80m + + diff --git a/plugins/channelrx/freqscanner/freqscannergui.cpp b/plugins/channelrx/freqscanner/freqscannergui.cpp index 2d128d1ea..dc26d7d0f 100644 --- a/plugins/channelrx/freqscanner/freqscannergui.cpp +++ b/plugins/channelrx/freqscanner/freqscannergui.cpp @@ -371,7 +371,38 @@ void FreqScannerGUI::on_voiceThreshold_valueChanged(int value) void FreqScannerGUI::on_voiceSquelchType_currentIndexChanged(int index) { m_settings.m_voiceSquelchType = (FreqScannerSettings::VoiceSquelchType)index; - applySetting("voiceSquelchType"); + QStringList settingsKeys({"voiceSquelchType"}); + + if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceSquelchType::VoiceLsb) + { + blockApplySettings(true); + m_settings.m_channelBandwidth = 3000; + ui->channelBandwidth->setValue(m_settings.m_channelBandwidth); + m_settings.m_channelShift = 1500; + ui->channelShift->setValue(m_settings.m_channelShift); + m_settings.m_priority = FreqScannerSettings::TABLE_ORDER; + ui->priority->setCurrentIndex((int)m_settings.m_priority); + settingsKeys.append("channelBandwidth"); + settingsKeys.append("channelShift"); + settingsKeys.append("priority"); + blockApplySettings(false); + } + else if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceSquelchType::VoiceUsb) + { + blockApplySettings(true); + m_settings.m_channelBandwidth = 3000; + ui->channelBandwidth->setValue(m_settings.m_channelBandwidth); + m_settings.m_channelShift = -1500; + ui->channelShift->setValue(m_settings.m_channelShift); + m_settings.m_priority = FreqScannerSettings::TABLE_ORDER; + ui->priority->setCurrentIndex((int)m_settings.m_priority); + settingsKeys.append("channelBandwidth"); + settingsKeys.append("channelShift"); + settingsKeys.append("priority"); + blockApplySettings(false); + } + + applySettings(settingsKeys); } void FreqScannerGUI::on_priority_currentIndexChanged(int index) @@ -798,6 +829,13 @@ void FreqScannerGUI::on_removeInactive_clicked() applySetting("frequencySettings"); } +void FreqScannerGUI::on_removeAll_clicked() +{ + ui->table->setRowCount(0); + m_settings.m_frequencySettings.clear(); + applySetting("frequencySettings"); +} + static QList takeRow(QTableWidget* table, int row) { QList rowItems; @@ -1290,6 +1328,7 @@ void FreqScannerGUI::makeUIConnections() QObject::connect(ui->addRange, &QToolButton::clicked, this, &FreqScannerGUI::on_addRange_clicked); QObject::connect(ui->remove, &QToolButton::clicked, this, &FreqScannerGUI::on_remove_clicked); QObject::connect(ui->removeInactive, &QToolButton::clicked, this, &FreqScannerGUI::on_removeInactive_clicked); + QObject::connect(ui->removeAll, &QToolButton::clicked, this, &FreqScannerGUI::on_removeAll_clicked); QObject::connect(ui->up, &QToolButton::clicked, this, &FreqScannerGUI::on_up_clicked); QObject::connect(ui->down, &QToolButton::clicked, this, &FreqScannerGUI::on_down_clicked); QObject::connect(ui->clearActiveCount, &QToolButton::clicked, this, &FreqScannerGUI::on_clearActiveCount_clicked); diff --git a/plugins/channelrx/freqscanner/freqscannergui.h b/plugins/channelrx/freqscanner/freqscannergui.h index b92f98807..50e8e3720 100644 --- a/plugins/channelrx/freqscanner/freqscannergui.h +++ b/plugins/channelrx/freqscanner/freqscannergui.h @@ -150,6 +150,7 @@ private slots: void on_addRange_clicked(); void on_remove_clicked(); void on_removeInactive_clicked(); + void on_removeAll_clicked(); void on_up_clicked(); void on_down_clicked(); void on_clearActiveCount_clicked(); diff --git a/plugins/channelrx/freqscanner/freqscannergui.ui b/plugins/channelrx/freqscanner/freqscannergui.ui index b8e1a8c98..688b3d520 100644 --- a/plugins/channelrx/freqscanner/freqscannergui.ui +++ b/plugins/channelrx/freqscanner/freqscannergui.ui @@ -260,45 +260,6 @@ - - - - VTH - - - - - - - - 24 - 24 - - - - Power threshold in dB - - - 0 - - - 100 - - - 1 - - - 50 - - - - - - - 0.01 - - - @@ -341,7 +302,7 @@ 0 - 1000 + 2000 1 @@ -734,12 +695,15 @@ - VSq + VAD + + Voice Activity Detection + None @@ -757,6 +721,38 @@ + + + + + 24 + 24 + + + + VAD score minimum level + + + 0 + + + 100 + + + 1 + + + 50 + + + + + + + 0.01 + + + @@ -899,6 +895,16 @@ Leave blank for no adjustment + + + + Remove selected items + + + Remove All + + + From 98c703bfbf40e68a1fbc9dd10df853cee0583772 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 21 Feb 2026 03:17:15 +0100 Subject: [PATCH 19/24] Freq scanner: implemented device frequency locking --- plugins/channelrx/freqscanner/freqscanner.cpp | 141 ++++++++++++------ .../channelrx/freqscanner/freqscannergui.cpp | 16 ++ .../channelrx/freqscanner/freqscannergui.h | 2 + .../channelrx/freqscanner/freqscannergui.ui | 28 +++- .../freqscanner/freqscannersettings.cpp | 9 ++ .../freqscanner/freqscannersettings.h | 2 + 6 files changed, 148 insertions(+), 50 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscanner.cpp b/plugins/channelrx/freqscanner/freqscanner.cpp index 45d57f81d..cc3b359d7 100644 --- a/plugins/channelrx/freqscanner/freqscanner.cpp +++ b/plugins/channelrx/freqscanner/freqscanner.cpp @@ -314,7 +314,7 @@ void FreqScanner::initScan() // } mute(m_scanDeviceSetIndex, m_scanChannelIndex); - if (m_centerFrequency != m_stepStartFrequency) { + if (!m_settings.m_lockDeviceFrequency && (m_centerFrequency != m_stepStartFrequency)) { setDeviceCenterFrequency(m_stepStartFrequency); } @@ -386,54 +386,77 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< } // Calculate next center frequency - bool complete = false; // Have all frequencies been scanned? - bool freqInRange = false; + const bool lockDeviceFrequency = m_settings.m_lockDeviceFrequency; + const qint64 currentCenterFrequency = m_centerFrequency; + bool complete = lockDeviceFrequency; // Have all frequencies been scanned? + bool freqInRange = lockDeviceFrequency; qint64 nextCenterFrequency = m_centerFrequency; int usableBW = (m_scannerSampleRate * 3 / 4) & ~1; - int nextFrequencyIndex = 0; - do + int nextFrequencyIndex = -1; + const auto isInCurrentScanRange = [currentCenterFrequency, usableBW](qint64 frequency) { - if (nextCenterFrequency + usableBW / 2 > m_stepStopFrequency) - { - nextCenterFrequency = m_stepStartFrequency; - complete = true; - } - else - { - nextCenterFrequency += usableBW; - complete = false; - } + return (frequency >= currentCenterFrequency - usableBW / 2) + && (frequency < currentCenterFrequency + usableBW / 2); + }; - // Are any frequencies in this new range? + if (!lockDeviceFrequency) + { + do + { + if (nextCenterFrequency + usableBW / 2 > m_stepStopFrequency) + { + nextCenterFrequency = m_stepStartFrequency; + complete = true; + } + else + { + nextCenterFrequency += usableBW; + complete = false; + } + + // Are any frequencies in this new range? + for (int i = 0; i < m_settings.m_frequencySettings.size(); i++) + { + if (m_settings.m_frequencySettings[i].m_enabled + && (m_settings.m_frequencySettings[i].m_frequency >= nextCenterFrequency - usableBW / 2) + && (m_settings.m_frequencySettings[i].m_frequency < nextCenterFrequency + usableBW / 2)) + { + freqInRange = true; + nextFrequencyIndex = i; + + // Do we need to realign for frequencies with wider bandwidths than default + if (!m_settings.m_frequencySettings[i].m_channelBandwidth.isEmpty()) + { + bool ok; + int channelBW = m_settings.m_frequencySettings[i].m_channelBandwidth.toInt(&ok); + if (ok) + { + if (channelBW >= usableBW) { + nextCenterFrequency = m_settings.m_frequencySettings[i].m_frequency; + } else if (m_settings.m_frequencySettings[i].m_frequency - channelBW / 2 < nextCenterFrequency - usableBW / 2) { + nextCenterFrequency = m_settings.m_frequencySettings[i].m_frequency - channelBW / 2; + } + } + } + + break; + } + } + } + while (!complete && !freqInRange); + } + else + { for (int i = 0; i < m_settings.m_frequencySettings.size(); i++) { if (m_settings.m_frequencySettings[i].m_enabled - && (m_settings.m_frequencySettings[i].m_frequency >= nextCenterFrequency - usableBW / 2) - && (m_settings.m_frequencySettings[i].m_frequency < nextCenterFrequency + usableBW / 2)) + && isInCurrentScanRange(m_settings.m_frequencySettings[i].m_frequency)) { - freqInRange = true; nextFrequencyIndex = i; - - // Do we need to realign for frequencies with wider bandwidths than default - if (!m_settings.m_frequencySettings[i].m_channelBandwidth.isEmpty()) - { - bool ok; - int channelBW = m_settings.m_frequencySettings[i].m_channelBandwidth.toInt(&ok); - if (ok) - { - if (channelBW >= usableBW) { - nextCenterFrequency = m_settings.m_frequencySettings[i].m_frequency; - } else if (m_settings.m_frequencySettings[i].m_frequency - channelBW / 2 < nextCenterFrequency - usableBW / 2) { - nextCenterFrequency = m_settings.m_frequencySettings[i].m_frequency - channelBW / 2; - } - } - } - break; } } } - while (!complete && !freqInRange); if (complete || (m_settings.m_mode == FreqScannerSettings::MULTIPLEX)) { @@ -454,8 +477,11 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< if (m_settings.m_mode == FreqScannerSettings::MULTIPLEX) { - activeFrequencySettings = &m_settings.m_frequencySettings[nextFrequencyIndex]; - frequency = activeFrequencySettings->m_frequency; + if (nextFrequencyIndex >= 0) + { + activeFrequencySettings = &m_settings.m_frequencySettings[nextFrequencyIndex]; + frequency = activeFrequencySettings->m_frequency; + } } else if (m_settings.m_priority == FreqScannerSettings::MAX_POWER) { @@ -464,6 +490,10 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< // Find frequency with max power that exceeds thresholds for (int i = 0; i < m_scanResults.size(); i++) { + if (lockDeviceFrequency && !isInCurrentScanRange(m_scanResults[i].m_frequency)) { + continue; + } + frequencySettings = m_settings.getFrequencySettings(m_scanResults[i].m_frequency); Real threshold = m_settings.getThreshold(frequencySettings); @@ -486,6 +516,11 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< { int j = m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceSquelchType::VoiceLsb ? m_scanResults.size()-1 - i : i; + + if (lockDeviceFrequency && !isInCurrentScanRange(m_scanResults[j].m_frequency)) { + continue; + } + frequencySettings = m_settings.getFrequencySettings(m_scanResults[j].m_frequency); Real threshold = m_settings.getThreshold(frequencySettings); @@ -520,20 +555,23 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< } // Ensure we have minimum offset from DC - if (offset >= 0) + if (!lockDeviceFrequency) { - while (offset < m_settings.m_channelFrequencyOffset) + if (offset >= 0) { - nextCenterFrequency -= m_settings.m_channelBandwidth; - offset += m_settings.m_channelBandwidth; + while (offset < m_settings.m_channelFrequencyOffset) + { + nextCenterFrequency -= m_settings.m_channelBandwidth; + offset += m_settings.m_channelBandwidth; + } } - } - else - { - while (abs(offset) < m_settings.m_channelFrequencyOffset) + else { - nextCenterFrequency += m_settings.m_channelBandwidth; - offset -= m_settings.m_channelBandwidth; + while (abs(offset) < m_settings.m_channelFrequencyOffset) + { + nextCenterFrequency += m_settings.m_channelBandwidth; + offset -= m_settings.m_channelBandwidth; + } } } @@ -599,7 +637,12 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< } } - if (nextCenterFrequency != m_centerFrequency) { + if (m_settings.m_lockDeviceFrequency) { + nextCenterFrequency = m_centerFrequency; + } + + if (nextCenterFrequency != m_centerFrequency) + { setDeviceCenterFrequency(nextCenterFrequency); } diff --git a/plugins/channelrx/freqscanner/freqscannergui.cpp b/plugins/channelrx/freqscanner/freqscannergui.cpp index dc26d7d0f..5b8c58499 100644 --- a/plugins/channelrx/freqscanner/freqscannergui.cpp +++ b/plugins/channelrx/freqscanner/freqscannergui.cpp @@ -197,6 +197,8 @@ bool FreqScannerGUI::handleMessage(const Message& message) int row = item->row(); QTableWidgetItem* powerItem = ui->table->item(row, COL_POWER); powerItem->setData(Qt::DisplayRole, results[i].m_power); + QTableWidgetItem* vadItem = ui->table->item(row, COL_VAD); + vadItem->setData(Qt::DisplayRole, results[i].m_voiceActivityLevel); FreqScannerSettings::FrequencySettings *frequencySettings = m_settings.getFrequencySettings(freq); Real threshold = m_settings.getThreshold(frequencySettings); bool active = results[i].m_power >= threshold; @@ -405,6 +407,12 @@ void FreqScannerGUI::on_voiceSquelchType_currentIndexChanged(int index) applySettings(settingsKeys); } +void FreqScannerGUI::on_lockDeviceFrequency_toggled(bool checked) +{ + m_settings.m_lockDeviceFrequency = checked; + applySetting("lockDeviceFrequency"); +} + void FreqScannerGUI::on_priority_currentIndexChanged(int index) { m_settings.m_priority = (FreqScannerSettings::Priority)index; @@ -584,6 +592,7 @@ FreqScannerGUI::FreqScannerGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, B ui->table->setItemDelegateForColumn(COL_FREQUENCY, new FrequencyDelegate("Auto", 3, true, ui->table)); ui->table->setItemDelegateForColumn(COL_POWER, new DecimalDelegate(1, ui->table)); + ui->table->setItemDelegateForColumn(COL_VAD, new DecimalDelegate(2, ui->table)); ui->table->setItemDelegateForColumn(COL_CHANNEL_BW, new Int64Delegate(0, 10000000, ui->table)); ui->table->setItemDelegateForColumn(COL_TH, new DecimalDelegate(1, -120.0, 0.0, ui->table)); ui->table->setItemDelegateForColumn(COL_SQ, new DecimalDelegate(1, -120.0, 0.0, ui->table)); @@ -641,6 +650,7 @@ void FreqScannerGUI::displaySettings() ui->channels->setCurrentIndex(channelIndex); } ui->deltaFrequency->setValue(m_settings.m_channelFrequencyOffset); + ui->deviceFreqLock->setChecked(m_settings.m_lockDeviceFrequency); ui->channelBandwidth->setValue(m_settings.m_channelBandwidth); ui->channelShift->setValue(m_settings.m_channelShift); ui->scanTime->setValue(m_settings.m_scanTime * 10.0); @@ -740,6 +750,10 @@ void FreqScannerGUI::addRow(const FreqScannerSettings::FrequencySettings& freque powerItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); ui->table->setItem(row, COL_POWER, powerItem); + QTableWidgetItem* vadItem = new QTableWidgetItem(); + vadItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + ui->table->setItem(row, COL_VAD, vadItem); + QTableWidgetItem *activeCountItem = new QTableWidgetItem(); activeCountItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); ui->table->setItem(row, COL_ACTIVE_COUNT, activeCountItem); @@ -1296,6 +1310,7 @@ void FreqScannerGUI::resizeTable() ui->table->setItem(row, COL_ANNOTATION, new QTableWidgetItem("London VOLMET")); ui->table->setItem(row, COL_ENABLE, new QTableWidgetItem("Enable")); ui->table->setItem(row, COL_POWER, new QTableWidgetItem("-100.0")); + ui->table->setItem(row, COL_VAD, new QTableWidgetItem("0.00")); ui->table->setItem(row, COL_ACTIVE_COUNT, new QTableWidgetItem("10000")); ui->table->setItem(row, COL_NOTES, new QTableWidgetItem("A channel name")); ui->table->setItem(row, COL_CHANNEL, new QTableWidgetItem("Enter some notes")); @@ -1318,6 +1333,7 @@ void FreqScannerGUI::makeUIConnections() QObject::connect(ui->thresh, &QDial::valueChanged, this, &FreqScannerGUI::on_thresh_valueChanged); QObject::connect(ui->voiceSquelch, QOverload::of(&QComboBox::currentIndexChanged), this, &FreqScannerGUI::on_voiceSquelchType_currentIndexChanged); QObject::connect(ui->voiceThreshold, &QDial::valueChanged, this, &FreqScannerGUI::on_voiceThreshold_valueChanged); + QObject::connect(ui->deviceFreqLock, &QToolButton::toggled, this, &FreqScannerGUI::on_lockDeviceFrequency_toggled); QObject::connect(ui->priority, QOverload::of(&QComboBox::currentIndexChanged), this, &FreqScannerGUI::on_priority_currentIndexChanged); QObject::connect(ui->measurement, QOverload::of(&QComboBox::currentIndexChanged), this, &FreqScannerGUI::on_measurement_currentIndexChanged); QObject::connect(ui->mode, QOverload::of(&QComboBox::currentIndexChanged), this, &FreqScannerGUI::on_mode_currentIndexChanged); diff --git a/plugins/channelrx/freqscanner/freqscannergui.h b/plugins/channelrx/freqscanner/freqscannergui.h index 50e8e3720..edb7d5f7a 100644 --- a/plugins/channelrx/freqscanner/freqscannergui.h +++ b/plugins/channelrx/freqscanner/freqscannergui.h @@ -115,6 +115,7 @@ private: COL_ANNOTATION, COL_ENABLE, COL_POWER, + COL_VAD, COL_ACTIVE_COUNT, COL_NOTES, COL_CHANNEL, @@ -134,6 +135,7 @@ private slots: void on_thresh_valueChanged(int value); void on_voiceThreshold_valueChanged(int value); void on_voiceSquelchType_currentIndexChanged(int index); + void on_lockDeviceFrequency_toggled(bool checked); void on_priority_currentIndexChanged(int index); void on_measurement_currentIndexChanged(int index); void on_mode_currentIndexChanged(int index); diff --git a/plugins/channelrx/freqscanner/freqscannergui.ui b/plugins/channelrx/freqscanner/freqscannergui.ui index 688b3d520..e7ef455bf 100644 --- a/plugins/channelrx/freqscanner/freqscannergui.ui +++ b/plugins/channelrx/freqscanner/freqscannergui.ui @@ -157,6 +157,24 @@ + + + + Lock device frequency to current value + + + + + + + :/unlocked.png + :/locked.png:/unlocked.png + + + true + + + @@ -302,7 +320,7 @@ 0 - 2000 + 1000 1 @@ -795,6 +813,14 @@ Channel power in decibels during the previous scan + + + VAD + + + Voice level + + Active Count diff --git a/plugins/channelrx/freqscanner/freqscannersettings.cpp b/plugins/channelrx/freqscanner/freqscannersettings.cpp index 365d52874..11fe20143 100644 --- a/plugins/channelrx/freqscanner/freqscannersettings.cpp +++ b/plugins/channelrx/freqscanner/freqscannersettings.cpp @@ -48,6 +48,7 @@ void FreqScannerSettings::resetToDefaults() m_tuneTime = 100; m_voiceSquelchThreshold = 0.5f; m_voiceSquelchType = None; + m_lockDeviceFrequency = false; m_priority = MAX_POWER; m_measurement = PEAK; m_mode = CONTINUOUS; @@ -89,6 +90,7 @@ QByteArray FreqScannerSettings::serialize() const s.writeS32(14, (int)m_mode); s.writeList(15, m_frequencySettings); s.writeS32(16, m_channelShift); + s.writeBool(17, m_lockDeviceFrequency); s.writeList(20, m_columnIndexes); s.writeList(21, m_columnSizes); @@ -145,6 +147,7 @@ bool FreqScannerSettings::deserialize(const QByteArray& data) d.readS32(14, (int*)&m_mode, (int)CONTINUOUS); d.readList(15, &m_frequencySettings); d.readS32(16, &m_channelShift, 0); + d.readBool(17, &m_lockDeviceFrequency, false); if (m_frequencySettings.size() == 0) { @@ -234,6 +237,9 @@ void FreqScannerSettings::applySettings(const QStringList& settingsKeys, const F if (settingsKeys.contains("voiceSquelchType")) { m_voiceSquelchType = settings.m_voiceSquelchType; } + if (settingsKeys.contains("lockDeviceFrequency")) { + m_lockDeviceFrequency = settings.m_lockDeviceFrequency; + } if (settingsKeys.contains("frequencySettings")) { m_frequencySettings = settings.m_frequencySettings; } @@ -321,6 +327,9 @@ QString FreqScannerSettings::getDebugString(const QStringList& settingsKeys, boo if (settingsKeys.contains("voiceSquelchType") || force) { ostr << " m_voiceSquelchType: " << m_voiceSquelchType; } + if (settingsKeys.contains("lockDeviceFrequency") || force) { + ostr << " m_lockDeviceFrequency: " << m_lockDeviceFrequency; + } if (settingsKeys.contains("frequencySettings") || force) { QStringList s; diff --git a/plugins/channelrx/freqscanner/freqscannersettings.h b/plugins/channelrx/freqscanner/freqscannersettings.h index 7bfbec10d..042c439a9 100644 --- a/plugins/channelrx/freqscanner/freqscannersettings.h +++ b/plugins/channelrx/freqscanner/freqscannersettings.h @@ -74,6 +74,8 @@ struct FreqScannerSettings SCAN_ONLY, MULTIPLEX } m_mode; //!< Whether to run a single or many scans + bool m_lockDeviceFrequency; //!< Whether to lock device frequency to the initial center frequency of the first scan, + //!< or allow it to be shifted by the channel shift setting QList m_columnIndexes;//!< How the columns are ordered in the table QList m_columnSizes; //!< Size of the coumns in the table From 6a56c25dd00175acf5534dcb9160e5e69b33171b Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 21 Feb 2026 03:42:04 +0100 Subject: [PATCH 20/24] Freq scanner: cleanup (1) --- .../channelrx/freqscanner/freqscannersink.cpp | 371 ++++++++---------- 1 file changed, 161 insertions(+), 210 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscannersink.cpp b/plugins/channelrx/freqscanner/freqscannersink.cpp index 6a70f76b4..0546f70ae 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.cpp +++ b/plugins/channelrx/freqscanner/freqscannersink.cpp @@ -316,186 +316,6 @@ Real FreqScannerSink::magSqFromRawFFT(int bin) const return magSq(fftBin); } -// Compute formant envelope using cepstral liftering -// This separates vocal tract resonances (formants) from pitch harmonics -// Method: log spectrum → IFFT → lifter → FFT → exp -void FreqScannerSink::getFormantEnvelope(int startBin, int endBin, QVector& envelope, Real *pitchHz) -{ - if (pitchHz) { - *pitchHz = 0.0; - } - - if (startBin < 0 || endBin >= m_fftSize || startBin > endBin) { - envelope.clear(); - return; - } - - int numBins = endBin - startBin + 1; - envelope.resize(numBins); - - // Check if cepstral FFT engines are available and large enough - if (!m_cepstrumFFTInverse || !m_cepstrumFFTForward || numBins > m_cepstrumSize) { - // qDebug() << "FreqScannerSink::getFormantEnvelope: Cepstral FFT not available or too small" - // << "numBins:" << numBins << "cepstrumSize:" << m_cepstrumSize; - // Fallback: return simple log/exp without cepstral processing - for (int i = 0; i < numBins; i++) { - Real magSq = magSqFromRawFFT(startBin + i); - envelope[i] = std::sqrt(std::max(magSq, (Real)1e-12)); - } - return; - } - - // Step 1: Compute log magnitude spectrum - QVector logMag(numBins); - Real minLog = -10.0; // Floor to avoid log(0) - Real sumMagSq = 0.0; - - for (int i = 0; i < numBins; i++) - { - Real magSq = magSqFromRawFFT(startBin + i); - sumMagSq += magSq; - Real mag = std::sqrt(std::max(magSq, (Real)1e-12)); - logMag[i] = std::log(mag); - if (logMag[i] < minLog) { - logMag[i] = minLog; - } - } - - // qDebug() << "FreqScannerSink::getFormantEnvelope: Input spectrum check:" - // << "numBins:" << numBins - // << "sumMagSq:" << sumMagSq - // << "avgMagSq:" << (sumMagSq / numBins) - // << "first 5 logMag:" << logMag.mid(0, std::min(5, numBins)); - - // Step 2: Apply cepstral liftering for better source-filter separation - // Cepstral analysis separates: - // - Voice pitch (high quefrency peak) - // - Formants (low quefrency components) - // Liftering = low-pass filtering in quefrency domain - - // Copy log magnitude to inverse FFT input (real data, symmetric spectrum) - // For real cepstrum, we need a symmetric spectrum: - // [DC, positive freqs, Nyquist, negative freqs (mirror)] - - // DC component - m_cepstrumFFTInverse->in()[0] = Complex(logMag[0], 0.0); - - // Positive frequencies - int halfBins = std::min(numBins, m_cepstrumSize / 2); - for (int i = 1; i < halfBins; i++) { - m_cepstrumFFTInverse->in()[i] = Complex(logMag[i], 0.0); - } - - // Nyquist (if we have space) - if (m_cepstrumSize > halfBins) { - m_cepstrumFFTInverse->in()[halfBins] = Complex(numBins > halfBins ? logMag[halfBins] : logMag[halfBins-1], 0.0); - } - - // Negative frequencies (mirror of positive) - for (int i = 1; i < halfBins; i++) { - m_cepstrumFFTInverse->in()[m_cepstrumSize - i] = Complex(logMag[i], 0.0); - } - - // Zero-pad the middle if needed - for (int i = halfBins + 1; i < m_cepstrumSize - halfBins; i++) { - m_cepstrumFFTInverse->in()[i] = Complex(0.0, 0.0); - } - - // Step 3: IFFT to get cepstrum (quefrency domain) - m_cepstrumFFTInverse->transform(); - - // Step 4: Estimate pitch from the cepstrum before liftering. - // Pitch appears as a peak at higher quefrencies (around 3-14 ms). - float binBW = m_scannerSampleRate / (float)m_fftSize; - float quefrencyResolution = 1.0f / (m_cepstrumSize * binBW); // seconds per bin in quefrency - - if (pitchHz) { - const float minPitchHz = 70.0f; - const float maxPitchHz = 300.0f; - const float minQuefrency = 1.0f / maxPitchHz; - const float maxQuefrency = 1.0f / minPitchHz; - const int minBin = std::max(1, (int)std::ceil(minQuefrency / quefrencyResolution)); - const int maxBin = std::min(m_cepstrumSize / 2, (int)std::floor(maxQuefrency / quefrencyResolution)); - Real maxVal = 0.0; - int maxIdx = -1; - - for (int i = minBin; i <= maxBin; i++) { - Real val = std::abs(m_cepstrumFFTInverse->out()[i].real()); - if (val > maxVal) { - maxVal = val; - maxIdx = i; - } - } - - if (maxIdx > 0) { - *pitchHz = 1.0f / (maxIdx * quefrencyResolution); - } - } - - // Step 5: Apply lifter (low-pass filter in quefrency domain) - // Lifter cutoff: keep low quefrencies (formant envelope), remove high quefrencies (pitch harmonics) - // Typical pitch periods: 3-10 ms (100-330 Hz F0) - // We want to remove quefrencies corresponding to pitch harmonics - - // Lifter cutoff in seconds (quefrency): keep components below this - // Use much lower cutoff - we only need to keep very low quefrencies for formant envelope - // Most formant information is in the first few quefrency bins - float lifterCutoffQuefrency = 0.002f; // 2 ms (reduced from 8 ms) - int lifterCutoffBin = std::max(1, (int)(lifterCutoffQuefrency / quefrencyResolution)); - - // Cap the lifter cutoff to reasonable maximum (1/4 of cepstrum size) - lifterCutoffBin = std::min(lifterCutoffBin, m_cepstrumSize / 4); - - // Apply lifter: keep low quefrencies, zero out high quefrencies - // Use smooth transition (raised cosine) to reduce artifacts - int transitionBins = std::max(1, lifterCutoffBin / 4); - - for (int i = 0; i < m_cepstrumSize; i++) { - Real lifterWeight = 1.0; - - if (i > lifterCutoffBin + transitionBins) { - lifterWeight = 0.0; // Zero out high quefrencies - } else if (i > lifterCutoffBin) { - // Smooth transition using raised cosine - float t = (float)(i - lifterCutoffBin) / transitionBins; - lifterWeight = 0.5 * (1.0 + std::cos(M_PI * t)); - } - // else: lifterWeight = 1.0 (keep low quefrencies) - - m_cepstrumFFTForward->in()[i] = m_cepstrumFFTInverse->out()[i] * lifterWeight; - } - - // qDebug() << "FreqScannerSink::getFormantEnvelope cepstral lifter:" - // << "cutoff bin:" << lifterCutoffBin - // << "(" << (lifterCutoffBin * quefrencyResolution * 1000.0) << "ms)" - // << "quefrency resolution:" << (quefrencyResolution * 1000.0) << "ms/bin"; - - // Step 6: FFT back to frequency domain (smoothed log spectrum) - m_cepstrumFFTForward->transform(); - - // Debug: check forward FFT output - // qDebug() << "FreqScannerSink::getFormantEnvelope: Forward FFT output check:" - // << "first 5 real:" << m_cepstrumFFTForward->out()[0].real() - // << m_cepstrumFFTForward->out()[1].real() - // << m_cepstrumFFTForward->out()[2].real() - // << m_cepstrumFFTForward->out()[3].real() - // << m_cepstrumFFTForward->out()[4].real(); - - // Step 7: Convert back to linear magnitude - // Take real part of FFT output and exponentiate - // IMPORTANT: Normalize by FFT size since FFT engines don't auto-normalize - Real normalization = 1.0 / m_cepstrumSize; - - for (int i = 0; i < numBins; i++) - { - Real smoothedLog = m_cepstrumFFTForward->out()[i].real() * normalization; - envelope[i] = std::exp(smoothedLog); - } - - // Debug: print first few envelope values - // qDebug() << "FreqScannerSink::getFormantEnvelope (cepstral) first 10 envelope values:" - // << envelope.mid(0, std::min(10, numBins)); -} void FreqScannerSink::applyChannelSettings(int channelSampleRate, int channelFrequencyOffset, int scannerSampleRate, int fftSize, int binsPerChannel, bool force) { @@ -640,14 +460,11 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, // Additional validation: peak-to-noise ratio // If max is not sufficiently higher than average, signal quality is poor float peakToNoiseRatio = maxEnv / noiseFloor; - // qDebug() << "FreqScannerSink::voiceActivityLevel: noiseFloor:" << noiseFloor - // << "maxEnv:" << maxEnv << "peak-to-noise ratio:" << peakToNoiseRatio; // Lower threshold: require at least 1.2x peak-to-noise ratio (only ~1.6dB) // After heavy smoothing, formants appear as gentle bumps, not sharp peaks if (peakToNoiseRatio < 1.2) { // Signal is essentially all noise - // qDebug() << "FreqScannerSink::voiceActivityLevel: Rejected - insufficient signal (peak-to-noise:" << peakToNoiseRatio << ")"; return 0.0; } @@ -690,13 +507,9 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, // Voice requires 2-4 formants if (formantBins.size() < 2) { - // qDebug() << "FreqScannerSink::voiceActivityLevel: Not enough peaks detected" << formantBins.size() - // << "threshold:" << threshold << "envelope size:" << formantEnvelope.size(); return 0.0; } - // qDebug() << "FreqScannerSink::voiceActivityLevel: Detected" << formantBins.size() << "peaks above threshold"; - // Sort formants by frequency offset (not bin order) to handle LSB reversal // Convert to absolute frequencies since F1/F2 validation expects positive values QVector formantFreqs; @@ -754,11 +567,8 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, formantFreqs = mergedFormantFreqs; formantIndices = mergedFormantIndices; - // qDebug() << "FreqScannerSink::voiceActivityLevel: Merged to" << formantFreqs.size() << "formants:" << formantFreqs; - // After merging, we should still have at least 2 formants for voice if (formantFreqs.size() < 2) { - // qDebug() << "FreqScannerSink::voiceActivityLevel: Not enough formants after merging"; return 0.0; } @@ -775,7 +585,6 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, } if (!goodSpacing) { - // qDebug() << "FreqScannerSink::voiceActivityLevel: Bad formant spacing" << formantFreqs; return 0.0; // Formants too close or too far apart } @@ -794,7 +603,6 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, } if (!hasF1) { - // qDebug() << "FreqScannerSink::voiceActivityLevel: No valid F1 formant, lowest freq:" << (formantFreqs.size() > 0 ? formantFreqs[0] : -1); return 0.0; // No F1 formant - not voice or mistuned } @@ -823,7 +631,6 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, } if (!hasF2) { - // qDebug() << "FreqScannerSink::voiceActivityLevel: No valid F2 formant, candidates not in range/spacing"; return 0.0; // No F2 formant - not voice or mistuned } @@ -849,9 +656,6 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, bool dominantIsHigh = strongestFormantFreq >= dominantHighFormantHz; if (weakF1 && dominantIsHigh) { - // qDebug() << "FreqScannerSink::voiceActivityLevel: Rejected weak F1 with dominant high formant" - // << "F1:" << formantFreqs[0] << "Hz" << "F1 mag:" << f1Mag - // << "strongest:" << strongestFormantFreq << "Hz" << strongestFormantMag; return 0.0; } @@ -998,21 +802,168 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, // Clamp to [0, 1] score = std::max(0.0f, std::min(score, 1.0f)); - if (score > m_settings.m_voiceSquelchThreshold) { - qDebug() << "FreqScannerSink::voiceActivityLevel:" - << "freq:" << freq + (isLSB ? 1500 : -1500) << "Hz" - // << "formants:" << formantFreqs.size() << "(merged from" << formantBins.size() << "peaks)" - // << "F1:" << (hasF1 ? QString::number(formantFreqs[0], 'f', 0) : "none") << "Hz" - // << "F2:" << (hasF2 ? QString::number(f2Freq, 'f', 0) : "none") << "Hz" - // << "spacing:" << (hasF2 ? QString::number(f2Freq - formantFreqs[0], 'f', 0) : "none") << "Hz" - // << "peak-to-noise:" << (maxEnv / noiseFloor) - // << "noiseFloor:" << noiseFloor << "threshold:" << threshold - // << "f1Mag:" << f1Mag << "f2Mag:" << f2Mag - // << "pitchHz:" << pitchHz << "pitchScore:" << pitchScore - << "harmonicAlignment:" << harmonicAlignmentScore - << "score:" << score; - } + // if (score > m_settings.m_voiceSquelchThreshold) { + // qDebug() << "FreqScannerSink::voiceActivityLevel:" + // << "freq:" << freq + (isLSB ? 1500 : -1500) << "Hz" + // << "harmonicAlignment:" << harmonicAlignmentScore + // << "score:" << score; + // } return score; } +// Compute formant envelope using cepstral liftering +// This separates vocal tract resonances (formants) from pitch harmonics +// Method: log spectrum → IFFT → lifter → FFT → exp +void FreqScannerSink::getFormantEnvelope(int startBin, int endBin, QVector& envelope, Real *pitchHz) +{ + if (pitchHz) { + *pitchHz = 0.0; + } + + if (startBin < 0 || endBin >= m_fftSize || startBin > endBin) { + envelope.clear(); + return; + } + + int numBins = endBin - startBin + 1; + envelope.resize(numBins); + + // Check if cepstral FFT engines are available and large enough + if (!m_cepstrumFFTInverse || !m_cepstrumFFTForward || numBins > m_cepstrumSize) { + // Fallback: return simple log/exp without cepstral processing + for (int i = 0; i < numBins; i++) { + Real magSq = magSqFromRawFFT(startBin + i); + envelope[i] = std::sqrt(std::max(magSq, (Real)1e-12)); + } + return; + } + + // Step 1: Compute log magnitude spectrum + QVector logMag(numBins); + Real minLog = -10.0; // Floor to avoid log(0) + Real sumMagSq = 0.0; + + for (int i = 0; i < numBins; i++) + { + Real magSq = magSqFromRawFFT(startBin + i); + sumMagSq += magSq; + Real mag = std::sqrt(std::max(magSq, (Real)1e-12)); + logMag[i] = std::log(mag); + if (logMag[i] < minLog) { + logMag[i] = minLog; + } + } + + // Step 2: Apply cepstral liftering for better source-filter separation + // Cepstral analysis separates: + // - Voice pitch (high quefrency peak) + // - Formants (low quefrency components) + // Liftering = low-pass filtering in quefrency domain + + // Copy log magnitude to inverse FFT input (real data, symmetric spectrum) + // For real cepstrum, we need a symmetric spectrum: + // [DC, positive freqs, Nyquist, negative freqs (mirror)] + + // DC component + m_cepstrumFFTInverse->in()[0] = Complex(logMag[0], 0.0); + + // Positive frequencies + int halfBins = std::min(numBins, m_cepstrumSize / 2); + for (int i = 1; i < halfBins; i++) { + m_cepstrumFFTInverse->in()[i] = Complex(logMag[i], 0.0); + } + + // Nyquist (if we have space) + if (m_cepstrumSize > halfBins) { + m_cepstrumFFTInverse->in()[halfBins] = Complex(numBins > halfBins ? logMag[halfBins] : logMag[halfBins-1], 0.0); + } + + // Negative frequencies (mirror of positive) + for (int i = 1; i < halfBins; i++) { + m_cepstrumFFTInverse->in()[m_cepstrumSize - i] = Complex(logMag[i], 0.0); + } + + // Zero-pad the middle if needed + for (int i = halfBins + 1; i < m_cepstrumSize - halfBins; i++) { + m_cepstrumFFTInverse->in()[i] = Complex(0.0, 0.0); + } + + // Step 3: IFFT to get cepstrum (quefrency domain) + m_cepstrumFFTInverse->transform(); + + // Step 4: Estimate pitch from the cepstrum before liftering. + // Pitch appears as a peak at higher quefrencies (around 3-14 ms). + float binBW = m_scannerSampleRate / (float)m_fftSize; + float quefrencyResolution = 1.0f / (m_cepstrumSize * binBW); // seconds per bin in quefrency + + if (pitchHz) { + const float minPitchHz = 70.0f; + const float maxPitchHz = 300.0f; + const float minQuefrency = 1.0f / maxPitchHz; + const float maxQuefrency = 1.0f / minPitchHz; + const int minBin = std::max(1, (int)std::ceil(minQuefrency / quefrencyResolution)); + const int maxBin = std::min(m_cepstrumSize / 2, (int)std::floor(maxQuefrency / quefrencyResolution)); + Real maxVal = 0.0; + int maxIdx = -1; + + for (int i = minBin; i <= maxBin; i++) { + Real val = std::abs(m_cepstrumFFTInverse->out()[i].real()); + if (val > maxVal) { + maxVal = val; + maxIdx = i; + } + } + + if (maxIdx > 0) { + *pitchHz = 1.0f / (maxIdx * quefrencyResolution); + } + } + + // Step 5: Apply lifter (low-pass filter in quefrency domain) + // Lifter cutoff: keep low quefrencies (formant envelope), remove high quefrencies (pitch harmonics) + // Typical pitch periods: 3-10 ms (100-330 Hz F0) + // We want to remove quefrencies corresponding to pitch harmonics + + // Lifter cutoff in seconds (quefrency): keep components below this + // Use much lower cutoff - we only need to keep very low quefrencies for formant envelope + // Most formant information is in the first few quefrency bins + float lifterCutoffQuefrency = 0.002f; // 2 ms (reduced from 8 ms) + int lifterCutoffBin = std::max(1, (int)(lifterCutoffQuefrency / quefrencyResolution)); + + // Cap the lifter cutoff to reasonable maximum (1/4 of cepstrum size) + lifterCutoffBin = std::min(lifterCutoffBin, m_cepstrumSize / 4); + + // Apply lifter: keep low quefrencies, zero out high quefrencies + // Use smooth transition (raised cosine) to reduce artifacts + int transitionBins = std::max(1, lifterCutoffBin / 4); + + for (int i = 0; i < m_cepstrumSize; i++) { + Real lifterWeight = 1.0; + + if (i > lifterCutoffBin + transitionBins) { + lifterWeight = 0.0; // Zero out high quefrencies + } else if (i > lifterCutoffBin) { + // Smooth transition using raised cosine + float t = (float)(i - lifterCutoffBin) / transitionBins; + lifterWeight = 0.5 * (1.0 + std::cos(M_PI * t)); + } + // else: lifterWeight = 1.0 (keep low quefrencies) + + m_cepstrumFFTForward->in()[i] = m_cepstrumFFTInverse->out()[i] * lifterWeight; + } + + // Step 6: FFT back to frequency domain (smoothed log spectrum) + m_cepstrumFFTForward->transform(); + + // Step 7: Convert back to linear magnitude + // Take real part of FFT output and exponentiate + // IMPORTANT: Normalize by FFT size since FFT engines don't auto-normalize + Real normalization = 1.0 / m_cepstrumSize; + + for (int i = 0; i < numBins; i++) + { + Real smoothedLog = m_cepstrumFFTForward->out()[i].real() * normalization; + envelope[i] = std::exp(smoothedLog); + } +} From e6ff9669a9a83b1c5d578502ce3bc91d4e6ad57a Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 21 Feb 2026 05:15:43 +0100 Subject: [PATCH 21/24] Freq scanner VAD: CW mitigation --- plugins/channelrx/freqscanner/freqscanner.cpp | 2 +- .../channelrx/freqscanner/freqscannersink.cpp | 114 +++++++++++++++--- .../channelrx/freqscanner/freqscannersink.h | 2 +- 3 files changed, 102 insertions(+), 16 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscanner.cpp b/plugins/channelrx/freqscanner/freqscanner.cpp index cc3b359d7..5bfa59c48 100644 --- a/plugins/channelrx/freqscanner/freqscanner.cpp +++ b/plugins/channelrx/freqscanner/freqscanner.cpp @@ -693,7 +693,7 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< && checkVoiceThreshold(m_settings.m_voiceSquelchType, results[i].m_voiceActivityLevel, m_settings.m_voiceSquelchThreshold)) { if (m_settings.m_voiceSquelchType != FreqScannerSettings::VoiceSquelchType::None) { - qDebug("FreqScanner::processScanResults: WAIT_FOR_RETRANSMISSION restart: voice score: %f", results[i].m_voiceActivityLevel); + qDebug("FreqScanner::processScanResults: WAIT_FOR_RETRANSMISSION restart: frequency: %lld, voice score: %f", m_activeFrequency, results[i].m_voiceActivityLevel); } m_timeoutTimer.stop(); m_state = WAIT_FOR_END_TX; diff --git a/plugins/channelrx/freqscanner/freqscannersink.cpp b/plugins/channelrx/freqscanner/freqscannersink.cpp index 0546f70ae..cba80517b 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.cpp +++ b/plugins/channelrx/freqscanner/freqscannersink.cpp @@ -155,9 +155,9 @@ void FreqScannerSink::processOneSample(Complex &ci) Real voiceLevel = 0.0; if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceLsb) { - voiceLevel = voiceActivityLevel(frequency, bin, channelBins, true); + voiceLevel = voiceActivityLevel(bin, channelBins, true); } else if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceUsb) { - voiceLevel = voiceActivityLevel(frequency, bin, channelBins, false); + voiceLevel = voiceActivityLevel(bin, channelBins, false); } if (voiceLevel > 0.0) { @@ -417,7 +417,7 @@ void FreqScannerSink::applySettings(const FreqScannerSettings& settings, const Q // Voice activity detection for SSB signals // Detects voice by looking for formant-like structure using spectral smoothing // Returns a value from 0.0 (no voice) to 1.0 (strong voice signature) -Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, bool isLSB) +Real FreqScannerSink::voiceActivityLevel(int bin, int channelBins, bool isLSB) { // Voice band in SSB is typically 100-3000 Hz from carrier // We look for 2-4 formant peaks in the smoothed spectral envelope @@ -634,6 +634,100 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, return 0.0; // No F2 formant - not voice or mistuned } + // Reject strongly tonal spectra (typical CW / single-tone signals). + // Voice in SSB should have broader spectral spread, lower peak dominance, + // and non-negligible spectral flatness across the 100-3000 Hz voice band. + Real voiceBandTotalEnergy = 0.0; + Real voiceBandPeakEnergy = 0.0; + Real voiceBandSecondPeakEnergy = 0.0; + Real voiceBandLogEnergySum = 0.0; + Real voiceBandWeightedFreqSum = 0.0; + Real voiceBandWeightedFreqSqSum = 0.0; + QVector voiceBandEnergies; + voiceBandEnergies.reserve(std::max(0, endBin - startBin + 1)); + int voiceBandBins = 0; + + for (int absBin = startBin; absBin <= endBin; absBin++) + { + float signedOffset = (absBin - carrierBin) * binBW; + float voiceOffset = isLSB ? -signedOffset : signedOffset; + + if (voiceOffset < 100.0f || voiceOffset > 3000.0f) { + continue; + } + + Real binEnergy = magSqFromRawFFT(absBin); + Real safeEnergy = std::max(binEnergy, (Real) 1e-20); + voiceBandEnergies.append(safeEnergy); + + voiceBandTotalEnergy += safeEnergy; + + if (safeEnergy > voiceBandPeakEnergy) + { + voiceBandSecondPeakEnergy = voiceBandPeakEnergy; + voiceBandPeakEnergy = safeEnergy; + } + else if (safeEnergy > voiceBandSecondPeakEnergy) + { + voiceBandSecondPeakEnergy = safeEnergy; + } + + voiceBandLogEnergySum += std::log(safeEnergy); + voiceBandWeightedFreqSum += safeEnergy * voiceOffset; + voiceBandWeightedFreqSqSum += safeEnergy * voiceOffset * voiceOffset; + voiceBandBins++; + } + + if (voiceBandBins <= 0 || voiceBandTotalEnergy <= 0.0) { + return 0.0; + } + + Real voiceBandMeanEnergy = voiceBandTotalEnergy / voiceBandBins; + Real voiceBandGeometricMean = std::exp(voiceBandLogEnergySum / voiceBandBins); + Real voiceBandMeanFreq = voiceBandWeightedFreqSum / voiceBandTotalEnergy; + Real voiceBandMeanFreqSq = voiceBandWeightedFreqSqSum / voiceBandTotalEnergy; + Real voiceBandVariance = std::max((Real) 0.0, voiceBandMeanFreqSq - voiceBandMeanFreq * voiceBandMeanFreq); + float voiceBandRmsSpreadHz = std::sqrt(voiceBandVariance); + float spectralFlatness = voiceBandMeanEnergy > 0.0 ? (voiceBandGeometricMean / voiceBandMeanEnergy) : 0.0f; + float peakFraction = voiceBandTotalEnergy > 0.0 ? (voiceBandPeakEnergy / voiceBandTotalEnergy) : 1.0f; + float peak12Ratio = voiceBandSecondPeakEnergy > 0.0 ? (voiceBandPeakEnergy / voiceBandSecondPeakEnergy) : 1000.0f; + + int significantBins = 0; + Real significantThreshold = voiceBandMeanEnergy * 1.8; + + for (const Real& binEnergy : voiceBandEnergies) + { + if (binEnergy > significantThreshold) { + significantBins++; + } + } + + if ((peakFraction > 0.45f) || (spectralFlatness < 0.025f) || (significantBins < 5)) { + return 0.0; + } + + // Additional strong-CW rejection: + // - very narrow energy spread in voice band + // - one dominant spectral line overwhelmingly larger than the second line + if ((voiceBandRmsSpreadHz < 220.0f) || ((peak12Ratio > 8.0f) && (significantBins < 9))) { + return 0.0; + } + + float tonalPenalty = 1.0f; + if (peakFraction > 0.30f) { + tonalPenalty *= 0.6f; + } + if (spectralFlatness < 0.06f) { + tonalPenalty *= 0.7f; + } + if (voiceBandRmsSpreadHz < 350.0f) { + tonalPenalty *= 0.55f; + } + if (peak12Ratio > 4.0f) { + tonalPenalty *= 0.60f; + } + // CW rejection end + // Additional F1 plausibility checks. // Prevent a tiny low-frequency ripple from being accepted as F1 when // dominant formant energy is shifted high (e.g. around 2 kHz). @@ -718,7 +812,7 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, if (voiceOffset >= 100.0f && voiceOffset <= 3000.0f) { - rawNoiseFloor += m_magSq[absBin]; + rawNoiseFloor += magSqFromRawFFT(absBin); rawBinCount++; } } @@ -737,7 +831,7 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, continue; } - Real binEnergy = m_magSq[absBin]; + Real binEnergy = magSqFromRawFFT(absBin); if (binEnergy <= rawNoiseFloor * 1.2f) { continue; @@ -797,18 +891,10 @@ Real FreqScannerSink::voiceActivityLevel(qint64 freq, int bin, int channelBins, formantIndexScore = std::max(0.4f, 0.25f + 0.75f * (0.40f * f1IndexScore + 0.40f * f2IndexScore + 0.20f * gapScore)); } - score *= pitchScore * harmonicAlignmentScore * formantIndexScore; + score *= tonalPenalty * pitchScore * harmonicAlignmentScore * formantIndexScore; // Clamp to [0, 1] score = std::max(0.0f, std::min(score, 1.0f)); - - // if (score > m_settings.m_voiceSquelchThreshold) { - // qDebug() << "FreqScannerSink::voiceActivityLevel:" - // << "freq:" << freq + (isLSB ? 1500 : -1500) << "Hz" - // << "harmonicAlignment:" << harmonicAlignmentScore - // << "score:" << score; - // } - return score; } diff --git a/plugins/channelrx/freqscanner/freqscannersink.h b/plugins/channelrx/freqscanner/freqscannersink.h index 401615960..cc3b9b05c 100644 --- a/plugins/channelrx/freqscanner/freqscannersink.h +++ b/plugins/channelrx/freqscanner/freqscannersink.h @@ -90,7 +90,7 @@ private: Real peakPower(int bin, int channelBins) const; Real magSq(int bin) const; Real magSqFromRawFFT(int bin) const; - Real voiceActivityLevel(qint64 freq, int bin, int channelBins, bool isLSB); + Real voiceActivityLevel(int bin, int channelBins, bool isLSB); void getFormantEnvelope(int startBin, int endBin, QVector& envelope, Real *pitchHz = nullptr); }; From 32c31d0efba5ce9ce9066b386e13146957fe18d5 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 21 Feb 2026 06:17:30 +0100 Subject: [PATCH 22/24] Freq scanner VAD: use max voice score for max power priority mode --- plugins/channelrx/freqscanner/freqscanner.cpp | 36 ++++++++++++------- plugins/channelrx/freqscanner/freqscanner.h | 1 - .../channelrx/freqscanner/freqscannergui.cpp | 6 ---- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/plugins/channelrx/freqscanner/freqscanner.cpp b/plugins/channelrx/freqscanner/freqscanner.cpp index 5bfa59c48..e0a0c25ab 100644 --- a/plugins/channelrx/freqscanner/freqscanner.cpp +++ b/plugins/channelrx/freqscanner/freqscanner.cpp @@ -486,6 +486,7 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< else if (m_settings.m_priority == FreqScannerSettings::MAX_POWER) { Real maxPower = -200.0f; + Real maxVoiceActivityLevel = 0.0f; // Find frequency with max power that exceeds thresholds for (int i = 0; i < m_scanResults.size(); i++) @@ -497,14 +498,28 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< frequencySettings = m_settings.getFrequencySettings(m_scanResults[i].m_frequency); Real threshold = m_settings.getThreshold(frequencySettings); - if (m_scanResults[i].m_power >= threshold) + if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceSquelchType::None) { - if (!activeFrequencySettings || ((m_scanResults[i].m_power > maxPower) - && checkVoiceThreshold(m_settings.m_voiceSquelchType, m_scanResults[i].m_voiceActivityLevel, m_settings.m_voiceSquelchThreshold))) + if (m_scanResults[i].m_power >= threshold) { - frequency = m_scanResults[i].m_frequency; - maxPower = m_scanResults[i].m_power; - activeFrequencySettings = frequencySettings; + if (!activeFrequencySettings || (m_scanResults[i].m_power > maxPower)) + { + frequency = m_scanResults[i].m_frequency; + maxPower = m_scanResults[i].m_power; + activeFrequencySettings = frequencySettings; + } + } + } + else // VAD + { + if (m_scanResults[i].m_voiceActivityLevel >= m_settings.m_voiceSquelchThreshold) + { + if (!activeFrequencySettings || (m_scanResults[i].m_voiceActivityLevel > maxVoiceActivityLevel)) + { + frequency = m_scanResults[i].m_frequency; + maxVoiceActivityLevel = m_scanResults[i].m_voiceActivityLevel; + activeFrequencySettings = frequencySettings; + } } } } @@ -689,8 +704,8 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList< // Check if power has returned to being above threshold FreqScannerSettings::FrequencySettings *frequencySettings = m_settings.getFrequencySettings(m_activeFrequency); Real threshold = m_settings.getThreshold(frequencySettings); - if ((results[i].m_power >= threshold) - && checkVoiceThreshold(m_settings.m_voiceSquelchType, results[i].m_voiceActivityLevel, m_settings.m_voiceSquelchThreshold)) + + if (checkThresholds(m_settings.m_voiceSquelchType, results[i], threshold, m_settings.m_voiceSquelchThreshold)) { if (m_settings.m_voiceSquelchType != FreqScannerSettings::VoiceSquelchType::None) { qDebug("FreqScanner::processScanResults: WAIT_FOR_RETRANSMISSION restart: frequency: %lld, voice score: %f", m_activeFrequency, results[i].m_voiceActivityLevel); @@ -859,11 +874,6 @@ void FreqScanner::unmuteAll() m_autoMutedChannels.clear(); } -bool FreqScanner::checkVoiceThreshold(FreqScannerSettings::VoiceSquelchType voiceSquelchType, Real voiceActivityLevel, Real voiceSquelchThreshold) -{ - return (voiceSquelchType == FreqScannerSettings::VoiceSquelchType::None) || (voiceActivityLevel >= voiceSquelchThreshold); -} - bool FreqScanner::checkThresholds( FreqScannerSettings::VoiceSquelchType voiceSquelchType, const FreqScanner::MsgScanResult::ScanResult& result, diff --git a/plugins/channelrx/freqscanner/freqscanner.h b/plugins/channelrx/freqscanner/freqscanner.h index d18f90d3e..b3ec0ef1a 100644 --- a/plugins/channelrx/freqscanner/freqscanner.h +++ b/plugins/channelrx/freqscanner/freqscanner.h @@ -447,7 +447,6 @@ private: void unmuteAll(); void mute(unsigned int deviceSetIndex, unsigned int channelIndex); void unmute(unsigned int deviceSetIndex, unsigned int channelIndex); - bool checkVoiceThreshold(FreqScannerSettings::VoiceSquelchType voiceSquelchType, Real voiceActivityLevel, Real voiceSquelchThreshold); bool checkThresholds( FreqScannerSettings::VoiceSquelchType voiceSquelchType, const FreqScanner::MsgScanResult::ScanResult& result, diff --git a/plugins/channelrx/freqscanner/freqscannergui.cpp b/plugins/channelrx/freqscanner/freqscannergui.cpp index 5b8c58499..d990b4ffa 100644 --- a/plugins/channelrx/freqscanner/freqscannergui.cpp +++ b/plugins/channelrx/freqscanner/freqscannergui.cpp @@ -382,11 +382,8 @@ void FreqScannerGUI::on_voiceSquelchType_currentIndexChanged(int index) ui->channelBandwidth->setValue(m_settings.m_channelBandwidth); m_settings.m_channelShift = 1500; ui->channelShift->setValue(m_settings.m_channelShift); - m_settings.m_priority = FreqScannerSettings::TABLE_ORDER; - ui->priority->setCurrentIndex((int)m_settings.m_priority); settingsKeys.append("channelBandwidth"); settingsKeys.append("channelShift"); - settingsKeys.append("priority"); blockApplySettings(false); } else if (m_settings.m_voiceSquelchType == FreqScannerSettings::VoiceSquelchType::VoiceUsb) @@ -396,11 +393,8 @@ void FreqScannerGUI::on_voiceSquelchType_currentIndexChanged(int index) ui->channelBandwidth->setValue(m_settings.m_channelBandwidth); m_settings.m_channelShift = -1500; ui->channelShift->setValue(m_settings.m_channelShift); - m_settings.m_priority = FreqScannerSettings::TABLE_ORDER; - ui->priority->setCurrentIndex((int)m_settings.m_priority); settingsKeys.append("channelBandwidth"); settingsKeys.append("channelShift"); - settingsKeys.append("priority"); blockApplySettings(false); } From 7e5e9dabf6693882972e787838815bacb4eda7ce Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 21 Feb 2026 23:51:24 +0100 Subject: [PATCH 23/24] Frequency Scanner: updated documentation --- doc/img/FreqScanner_plugin.png | Bin 212434 -> 243587 bytes doc/img/FreqScanner_plugin.xcf | Bin 360169 -> 505015 bytes plugins/channelrx/freqscanner/readme.md | 77 ++++++++++++++++-------- 3 files changed, 53 insertions(+), 24 deletions(-) diff --git a/doc/img/FreqScanner_plugin.png b/doc/img/FreqScanner_plugin.png index 7704017456ec2866ba2be90d078e2fce976b5a78..505f06aad36f4533c83fe7f31ef50c07819f715c 100644 GIT binary patch literal 243587 zcmeFZbx>T-);0cZ-MxBs_tUG_?)7vJ;VMefSm@8u5fBitWMw4O5D<{&5fBh( zP#*(1fvIS<+;fZ#cAr?P<6O@?`E5fSrU z8#78=j>0V{#yE(SUP7?nBL<6b-PKpv!W#=Dm%vO|QT8T|At{X-g~X0MP$BCl7G0UV z;28=1`x<(m{1Qf^vrmrn+=C72s$SBj#xFDtN(G{PUw&sB|LQ~Z4Qz7!I7IZs;@xz@ zf%5EA9aVt|vS7E}twys2qm^A@1y?XT5yyw8os^tT>9Vz*PGi_na@@~GAm$iXjl~$- zPukRU^F8vFUjw6qS&56Q$cl^qV?e+#GW_B@L|YVei@5fROeumzZS5jKERyJH%+2Bc z^7=k087G4RSBuHpGF>SK972vcO}0aH#2{1%3Hkf?*BMmQt9O8<*1` z$25<8DV(CVLnK>81!}FfGcLlr%c-`)M#E__o5_wSX9!YOcnL|Ld79746mN!i_n1@% zC1IOWi&JOO#B69p9|uPb@{Q-V{-@B#u=0^40DBG?Rj2v+QTyu{)E6SNS4u2rZ}WZf<59 z(rMp55PzDOzqfvrdPmi^JWU}j^1$urv@{JD{OaeJ zb+BWBm^qk0Sv>82TOI;}fUu_{#MB1rN@fDJu(B7VIB4mhAhR+Pq|oM41S>jC`&eqgxPvp4jFW|v1?ot+twV0Q7ccZGN|+q+QyR`E9-5>OXYXDdfnD+hbB-#Q^C4sNc3 z6cj)?*+2Sc=cuUoPxbaLe@6kpgVht_$jZh7X0@|p{c8;uS4nq3$=^HlZ)><{0PB=h z4eH|H=4=X;bcfozQvOwindv|4JGwdB{uz#$DJ#?#Y6pnA0Ijn9k0zyM6;=LO<2M8r zR(6hmY5`#X4@p-m^M8T$Kl=8&3@v|A_*dShnF zFXiBD2LYzj$_`=yWp%W-_*3v3aDGu0SwRYR7Vy7vRBR!x=0F8O3I!{BH_v|+Xjs`n z)mp%I5^k}QvB``+3%YFELH@TlNrPnA^~xQ0!qQ`-27m6es(qub`E|p z4?ialBbbdJ{1o$FE)M3d9uQ}!s0Dx{fE8e#f3PB>`!iAW|FbV1meAj` z0071eW@r8vV7z|^jP>sWX8r9m{xMj@fUw z^MCQ@?{o2gu?0Z&e;fH<;rm~>{tMUt3W5KX@PDoAzi|Dp5cppS|JSS_%6ych@bPMdR$etb6-nkd^$JOK2y~|O4VHz|BLDqT_(9gv-pO$^STjwHO|p{ zOZ(m=tSWt$RHD5tW6bn^22(a95qgxjY>!Pb5gd@eM_G4FwztJ?Ts}}+>e|qT%$Tp&PtR^{Q>$vm&Hv|x5Fq!V@0g6 zr-_|~XbqR-?K+`cxgS)coT|-mgYmWSrqS3UIya^?AM=xii50-%(0*T`;>w*(!GfNq z+6CkSIK?3QuV(Xu-Z?E|M z{ma;`)z!hy{8x8BPxf`PI9|Nt*nViPbQ-}4As0i9$V1p)LsRxdlA|wx>n!*dp_9j{ z?T;ZqbtzyXHi{tRiwV@)IZPYoHltX&2*;6Jc$c2MD*n>WLF9Q`BGu~GcuFeS!0G4o z)PO+CL3?_e&qZFnxt(3~s$U|A-DXp6^3kT<7H?3lwS#2LqdrDeT z=Ob(H+6k=0!uInljn$K>o%m;IDwo8hR`eb9t94KvoynW^-}#lr)rZ+B^O1i>1KA(l z_M2+4n^a+iYksx2`FIu8go}KKIN6^8j+6OD%R$VINfi8Oja_s|UJMTxM%hqL>$3UP7s98@33nckkH0D*6R^kJPvyG7Q#>S z=$c1c!I-bczM=)@;MI$vCMPF~6xXIBCE35zyz|_EJ-mjR=!pk)p6* z<$w}KHptG>cB(c|vv}lR0pjTelVHcIx##K0$r{c8R^}_z$0wauBty^V_+8}U#?JWE zyX}dsu@6f{Z&)5`1sBl%{`HQ+wK8wm#TSi+JWQKo0cp(C|&e4Vp2a_FAj19-8S9@m9EyV%D#I`I

R$r1{R43KF?CD9IYB*G_C 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

SWLh_s0; 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

K4=z6BM5j|VY63Ql1 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%0A!Jc1bjN~ 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

PS2V38x584BdOCw3pQP|GvHn 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

}298}+icQdg-Z->`Z21KpYLU1ts% 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 `a;cw=%o)-bpq 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