fix: RunningQuality must add ssf, not add beat

This commit is contained in:
2026-03-12 21:28:50 +01:00
parent ee77180994
commit bfb3c99184
4 changed files with 20 additions and 6 deletions

View File

@@ -6,6 +6,7 @@
#include "pd_signal.h"
#include <limits>
#include <cassert>
#include <iomanip>
#include <iostream>
static std::vector<double> make_ones(size_t sw) {
@@ -138,19 +139,19 @@ void RunningQuality::append(std::vector<double> &rawBeat, std::vector<double> &r
if (beatTemplates.size() == 0) {
// cannot correlate the first beat, no template yet
std::cerr << "(0) first beat -> addTemplate()" << std::endl;
addTemplate(beat);
addTemplate(ssf);
justLocked = false;
} else if (beatTemplates.size() <= 2) {
// restart if there is no clear correlation between beats
if (goodBeat) {
std::cerr << "(2) good initial beat -> addTemplate()" << std::endl;
addTemplate(beat);
addTemplate(ssf);
if (beatTemplates.size() > 2)
justLocked = true; // TODO why not set? wrong compiler optimization? (is it unaware of member change?)
//std::cerr << " (2) beatTemplates.size()=" << beatTemplates.size() << " justLocked=" << ((int) justLocked) << std::endl;
} else {
std::cerr << "(2) bad initial beat -> replaceTemplate()" << std::endl;
replaceTemplate(beat);
std::cerr << "(2) bad initial beat idx=" << idx << " -> replaceTemplate() corr=" << std::fixed << std::setw(7) << std::setprecision(4) << corr << " checkedSsf=" << checkedSsf << std::endl;
replaceTemplate(ssf);
//badBeatRanges.clear();
justLocked = false;
}
@@ -159,7 +160,7 @@ void RunningQuality::append(std::vector<double> &rawBeat, std::vector<double> &r
std::cerr << "(3) running mode, good=" << ((int) goodBeat) << " justLocked=" << ((int) justLocked) << std::endl;
if (goodBeat) {
addTemplate(beat);
addTemplate(ssf);
} else {
// badBeatRanges.add(s, e)
// numNoisy++