From 78b491fb4ca2342ecd505d7c278c0fb14d605ff4 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 9 Jun 2022 17:23:26 +0100 Subject: [PATCH] Perform phase resets when squashing as well as stretching --- src/finer/Guide.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/finer/Guide.h b/src/finer/Guide.h index 0fc312d..0614231 100644 --- a/src/finer/Guide.h +++ b/src/finer/Guide.h @@ -199,19 +199,18 @@ public: } double bigGap = 4000.0; - if (ratio > 1.0 && - segmentation.residualAbove > + if (segmentation.residualAbove > segmentation.percussiveAbove + bigGap && prevSegmentation.residualAbove < prevSegmentation.percussiveAbove + bigGap) { guidance.phaseReset.present = true; guidance.phaseReset.f0 = std::min(segmentation.percussiveAbove, nextSegmentation.percussiveAbove); + guidance.phaseReset.f1 = std::max(segmentation.residualAbove, + nextSegmentation.residualAbove); if (guidance.phaseReset.f0 < 200.0) { guidance.phaseReset.f0 = 0.0; } - guidance.phaseReset.f1 = std::max(segmentation.residualAbove, - nextSegmentation.residualAbove); } double prevLower = guidance.fftBands[0].f1;