AnalogTapeModel

Physical modelling signal processing for analog tape recording
Log | Files | Refs | Submodules | README | LICENSE

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:
MPlugin/Source/Processors/BypassProcessor.h | 9+++++++++
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)