AnalogTapeModel

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

commit e7407b1fce2506427f16d4bba5c77093599b31f6
parent ead095895357f13a712e6a62abadb3b578198141
Author: jatinchowdhury18 <jatinchowdhury18@gmail.com>
Date:   Wed, 22 Jul 2020 23:37:37 -0700

Fix volume spike on loading plugin during playback (#57)

Co-authored-by: jatinchowdhury18 <jatinchowdhury18@users.noreply.github.com>
Diffstat:
MPlugin/Source/PluginProcessor.cpp | 4+++-
MPlugin/Source/Processors/Chew/ChewProcessor.cpp | 3+++
MPlugin/Source/Processors/Degrade/DegradeProcessor.cpp | 3+++
MPlugin/Source/Processors/Timing_Effects/Flutter.cpp | 2+-
4 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/Plugin/Source/PluginProcessor.cpp b/Plugin/Source/PluginProcessor.cpp @@ -141,6 +141,8 @@ void ChowtapeModelAudioProcessor::prepareToPlay (double sampleRate, int samplesP for (int ch = 0; ch < 2; ++ch) { dryDelay[ch].prepareToPlay (sampleRate, samplesPerBlock); + dryDelay[ch].setLengthMs (1000.0f * calcLatencySamples() / (float) sampleRate, true); + lossFilter[ch]->prepare ((float) sampleRate, samplesPerBlock); } @@ -149,7 +151,7 @@ void ChowtapeModelAudioProcessor::prepareToPlay (double sampleRate, int samplesP scope->prepareToPlay (sampleRate, samplesPerBlock); - dryWet.setDryWet (*vts.getRawParameterValue ("drywet")); + dryWet.setDryWet (*vts.getRawParameterValue ("drywet") / 100.0f); dryWet.reset(); dryBuffer.setSize (2, samplesPerBlock); diff --git a/Plugin/Source/Processors/Chew/ChewProcessor.cpp b/Plugin/Source/Processors/Chew/ChewProcessor.cpp @@ -27,6 +27,9 @@ void ChewProcessor::prepare (double sr) void ChewProcessor::processBlock (AudioBuffer<float>& buffer) { + if (depth->load() == 0.0f && freq->load() == 0.0f) + return; + const int shortBlockSize = 64; if (buffer.getNumSamples() <= shortBlockSize) { diff --git a/Plugin/Source/Processors/Degrade/DegradeProcessor.cpp b/Plugin/Source/Processors/Degrade/DegradeProcessor.cpp @@ -44,6 +44,9 @@ void DegradeProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) void DegradeProcessor::processBlock (AudioBuffer<float>& buffer, MidiBuffer& midi) { + if (depthParam->load() == 0.0f && amtParam->load() == 0.0f) + return; + cookParams(); for (int ch = 0; ch < buffer.getNumChannels(); ++ch) diff --git a/Plugin/Source/Processors/Timing_Effects/Flutter.cpp b/Plugin/Source/Processors/Timing_Effects/Flutter.cpp @@ -50,7 +50,7 @@ void Flutter::prepareToPlay (double sampleRate, int samplesPerBlock) phase3[ch] = 0.0f; dcBlocker[ch].reset (sampleRate); - dcBlocker[ch].calcCoefs (10.0f, 0.707f); + dcBlocker[ch].calcCoefs (30.0f, 0.707f); } wowAmp = 1000.0f * 1000.0f / (float) sampleRate;