commit e14e0b33166bf80ce6755adf8259924be336d762
parent e7338a4215cfe75cde3e7b1f1889e0a343c395df
Author: jatinchowdhury18 <jatinchowdhury18@users.noreply.github.com>
Date: Mon, 4 May 2020 15:55:41 -0700
Clean up CPU optimizations that weren't helping, slight adjustment to chew algorithm
Diffstat:
4 files changed, 5 insertions(+), 50 deletions(-)
diff --git a/Plugin/Source/PluginProcessor.cpp b/Plugin/Source/PluginProcessor.cpp
@@ -29,10 +29,7 @@ ChowtapeModelAudioProcessor::ChowtapeModelAudioProcessor()
flutter (vts)
{
for (int ch = 0; ch < 2; ++ch)
- {
lossFilter[ch].reset (new LossFilter (vts));
- lossFilterCheap[ch].reset (new LossFilter (vts, 32));
- }
scope = magicState.addPlotSource ("scope", std::make_unique<foleys::MagicOscilloscope>());
}
@@ -48,7 +45,6 @@ AudioProcessorValueTreeState::ParameterLayout ChowtapeModelAudioProcessor::creat
params.push_back (std::make_unique<AudioParameterFloat> ("ingain", "Input Gain [dB]", -30.0f, 6.0f, 0.0f));
params.push_back (std::make_unique<AudioParameterFloat> ("outgain", "Output Gain [dB]", -30.0f, 30.0f, 0.0f));
params.push_back (std::make_unique<AudioParameterFloat> ("drywet", "Dry/Wet", 0.0f, 100.0f, 100.0f));
- params.push_back (std::make_unique<AudioParameterBool> ("lowCPU", "Low CPU", false));
HysteresisProcessor::createParameterLayout (params);
LossFilter::createParameterLayout (params);
@@ -130,10 +126,7 @@ void ChowtapeModelAudioProcessor::prepareToPlay (double sampleRate, int samplesP
chewer.prepare (sampleRate);
for (int ch = 0; ch < 2; ++ch)
- {
lossFilter[ch]->prepare ((float) sampleRate, samplesPerBlock);
- lossFilterCheap[ch]->prepare ((float) sampleRate, samplesPerBlock);
- }
flutter.prepareToPlay (sampleRate, samplesPerBlock);
outGain.prepareToPlay (sampleRate, samplesPerBlock);
@@ -192,16 +185,8 @@ void ChowtapeModelAudioProcessor::processBlock (AudioBuffer<float>& buffer, Midi
flutter.processBlock (buffer, midiMessages);
- if ((bool) *vts.getRawParameterValue ("lowCPU"))
- {
- for (int ch = 0; ch < buffer.getNumChannels(); ++ch)
- lossFilterCheap[ch]->processBlock (buffer.getWritePointer (ch), buffer.getNumSamples());
- }
- else
- {
- for (int ch = 0; ch < buffer.getNumChannels(); ++ch)
- lossFilter[ch]->processBlock (buffer.getWritePointer (ch), buffer.getNumSamples());
- }
+ for (int ch = 0; ch < buffer.getNumChannels(); ++ch)
+ lossFilter[ch]->processBlock (buffer.getWritePointer (ch), buffer.getNumSamples());
dryWet.processBlock (dryBuffer, buffer);
outGain.processBlock (buffer, midiMessages);
diff --git a/Plugin/Source/PluginProcessor.h b/Plugin/Source/PluginProcessor.h
@@ -72,10 +72,7 @@ private:
HysteresisProcessor hysteresis;
DegradeProcessor degrade;
ChewProcessor chewer;
-
std::unique_ptr<LossFilter> lossFilter[2];
- std::unique_ptr<LossFilter> lossFilterCheap[2];
-
Flutter flutter;
DryWetProcessor dryWet;
GainProcessor outGain;
diff --git a/Plugin/Source/Processors/Chew/Dropout.h b/Plugin/Source/Processors/Chew/Dropout.h
@@ -24,10 +24,10 @@ public:
{
for (int ch = 0; ch < 2; ++ch)
{
- mixSmooth[ch].reset (sr, 0.02);
+ mixSmooth[ch].reset (sr, 0.01);
mixSmooth[ch].setCurrentAndTargetValue (mixSmooth[ch].getTargetValue());
- powerSmooth[ch].reset (sr, 0.01);
+ powerSmooth[ch].reset (sr, 0.005);
powerSmooth[ch].setCurrentAndTargetValue (powerSmooth[ch].getTargetValue());
}
}
@@ -56,32 +56,7 @@ public:
else if (x < 0.0f)
sign = -1.0f;
- return fastPow (abs (x), powerSmooth[ch].getNextValue()) * sign;
- }
-
- inline double fastPow(double a, double b)
- {
- // calculate approximation with fraction of the exponent
- int e = (int) b;
- union {
- double d;
- int x[2];
- } u = { a };
- u.x[1] = (int)((b - e) * (u.x[1] - 1072632447) + 1072632447);
- u.x[0] = 0;
-
- // exponentiation by squaring with the exponent's integer part
- // double r = u.d makes everything much slower, not sure why
- double r = 1.0;
- while (e) {
- if (e & 1) {
- r *= a;
- }
- a *= a;
- e >>= 1;
- }
-
- return r * u.d;
+ return pow (abs (x), powerSmooth[ch].getNextValue()) * sign;
}
private:
diff --git a/Plugin/Source/gui.xml b/Plugin/Source/gui.xml
@@ -60,8 +60,6 @@
slider-textbox="textbox-below" lookAndFeel="LookAndFeel_V4" padding="0"/>
<Slider caption="Speed [ips]" parameter="speed" slider-type="linear-horizontal"
slider-textbox="textbox-below" padding="0"/>
- <TextButton text="Low CPU" parameter="lowCPU" button-on-color="FF175CCE"
- max-height="40"/>
</View>
<View tab-caption="Degr." padding="0" flex-direction="column">
<Label text="Degrade" justification="centred" font-size="18" max-height="40"/>