commit 3a49994ac21205b2556ec318d392df7cba3afc26
parent 467af66275e23d6cc0061f3fbdaa3922ce9b4084
Author: jatinchowdhury18 <jatinchowdhury18@gmail.com>
Date: Wed, 10 Nov 2021 18:57:13 +0000
Fix click when bypassing hysteresis mode (#226)
Co-authored-by: jatinchowdhury18 <jatinchowdhury18@users.noreply.github.com>
Diffstat:
1 file changed, 9 insertions(+), 0 deletions(-)
diff --git a/Plugin/Source/Processors/BypassProcessor.h b/Plugin/Source/Processors/BypassProcessor.h
@@ -18,6 +18,7 @@ public:
{
prevOnOffParam = onOffParam;
fadeBuffer.setSize (2, samplesPerBlock);
+ bufferCopied = false;
}
/**
@@ -31,7 +32,10 @@ public:
return false; // NOLINT
if (onOffParam != prevOnOffParam)
+ {
fadeBuffer.makeCopyOf (block, true);
+ bufferCopied = true;
+ }
return true;
}
@@ -41,6 +45,9 @@ public:
if (onOffParam == prevOnOffParam)
return;
+ if (! bufferCopied)
+ return; // parameter was changed in the middle of the buffer, let's wait for the next one!
+
const auto numChannels = block.getNumChannels();
const auto numSamples = block.getNumSamples();
@@ -53,10 +60,12 @@ public:
block.addFromWithRamp (ch, 0, fadeBuffer.getReadPointer (ch), numSamples, 1.0f - startGain, 1.0f - endGain);
prevOnOffParam = onOffParam;
+ bufferCopied = false;
}
private:
bool prevOnOffParam = false;
+ bool bufferCopied = false;
AudioBuffer<float> fadeBuffer;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BypassProcessor)