From 94553a3789e3b17669f88c9054bf9fb422b51259 Mon Sep 17 00:00:00 2001 From: Geraint Luff Date: Wed, 5 Feb 2025 22:05:39 +0000 Subject: [PATCH] Move input time after seeking --- cmd/main.cpp | 11 ++++++++--- signalsmith-stretch.h | 11 +++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/cmd/main.cpp b/cmd/main.cpp index 62b7c02..6674209 100644 --- a/cmd/main.cpp +++ b/cmd/main.cpp @@ -121,9 +121,14 @@ int main(int argc, char* argv[]) { diff2 /= prevWav.samples.size(); double diffDb = 10*std::log10(diff2); std::cout << "Reference:\n\tdifference: "; - if (diff2 < 1e-6) std::cout << Console::Red; - if (diff2 < 1e-8) std::cout << Console::Yellow; - if (diff2 < 1e-10) std::cout << Console::Green; + if (diff2 < 1e-6) { + std::cout << Console::Yellow; + } else if (diff2 < 1e-10) { + std::cout << Console::Green; + } else { + std::cout << Console::Red; + } + std::cout << Console::Bright << diffDb << Console::Reset << " dB\n"; if (diffDb > -60) args.errorExit("too much difference\n"); } diff --git a/signalsmith-stretch.h b/signalsmith-stretch.h index 4aad9d2..5d5a8ba 100644 --- a/signalsmith-stretch.h +++ b/signalsmith-stretch.h @@ -93,18 +93,21 @@ struct SignalsmithStretch { tmpBuffer.resize(0); tmpBuffer.resize(stft.blockSamples() + stft.defaultInterval()); + int startIndex = std::max(0, inputSamples - int(tmpBuffer.size())); // start position in input + int padStart = tmpBuffer.size() - (inputSamples - startIndex); // start position in tmpBuffer + Sample totalEnergy = 0; for (int c = 0; c < channels; ++c) { auto &&inputChannel = inputs[c]; - int startIndex = std::max(0, inputSamples - int(tmpBuffer.size())); for (int i = startIndex; i < inputSamples; ++i) { Sample s = inputChannel[i]; totalEnergy += s*s; - tmpBuffer[i - startIndex] = s; + tmpBuffer[i - startIndex + padStart] = s; } - stft.writeInput(c, 0, tmpBuffer.size(), tmpBuffer.data()); + stft.writeInput(c, tmpBuffer.size(), tmpBuffer.data()); } + stft.moveInput(tmpBuffer.size()); if (totalEnergy >= noiseFloor) { silenceCounter = 0; silenceFirst = true; @@ -127,7 +130,7 @@ struct SignalsmithStretch { } stft.writeInput(c, length, tmpBuffer.data()); } - stft.moveInput(toIndex - prevCopiedInput); + stft.moveInput(length); prevCopiedInput = toIndex; };