From 9fff2836c67470f4a04e5b8865d944743acd86cc Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 2 Aug 2022 16:22:24 +0100 Subject: [PATCH] Avoid RatioMostlyFixed in RealTime mode, it can lead to unpleasant surprises --- src/finer/R3Stretcher.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/finer/R3Stretcher.cpp b/src/finer/R3Stretcher.cpp index 5d7e20d..2b3fb4c 100644 --- a/src/finer/R3Stretcher.cpp +++ b/src/finer/R3Stretcher.cpp @@ -276,14 +276,12 @@ R3Stretcher::createResampler() resamplerParameters.maxBufferSize = m_guideConfiguration.longestFftSize; if (isRealTime()) { - if (m_parameters.options & - RubberBandStretcher::OptionPitchHighConsistency) { - resamplerParameters.dynamism = Resampler::RatioOftenChanging; - resamplerParameters.ratioChange = Resampler::SmoothRatioChange; - } else { - resamplerParameters.dynamism = Resampler::RatioMostlyFixed; - resamplerParameters.ratioChange = Resampler::SmoothRatioChange; - } + // If we knew the caller would never change ratio, we could + // supply RatioMostlyFixed - but it can have such overhead + // when the ratio *does* change that a single call would kill + // RT use, so it's not a good idea + resamplerParameters.dynamism = Resampler::RatioOftenChanging; + resamplerParameters.ratioChange = Resampler::SmoothRatioChange; } else { resamplerParameters.dynamism = Resampler::RatioMostlyFixed; resamplerParameters.ratioChange = Resampler::SuddenRatioChange;