Added simple signal smoother class. Use that to smooth out the buffer amount component display.

This commit is contained in:
xenakios 2018-05-01 17:54:20 +03:00
parent 9afca36d64
commit d42971e09f
4 changed files with 35 additions and 4 deletions

View File

@ -340,3 +340,33 @@ inline void sanitizeTimeRange(double& t0, double& t1)
} }
inline double fractpart(double x) { return x - (int)x; }; inline double fractpart(double x) { return x - (int)x; };
class SignalSmoother
{
public:
SignalSmoother()
{
m_a = 0.5;
m_slope = m_a;
m_b = 1.0 - m_a;
m_z = 0;
}
inline double process(double in)
{
double result = in + m_a * (m_z - in);
m_z = result;
return result;
}
void setSlope(double x, double sr)
{
m_slope = x;
double srCompensate = srCompensate = sr / 100.0;
double compensated_a = powf(x, (1.0 / srCompensate));
m_a = compensated_a;
m_b = 1.0 - m_a;
}
double slope() const { return m_slope; }
private:
double m_a, m_b, m_z;
double m_slope;
};

View File

@ -1277,7 +1277,7 @@ PerfMeterComponent::PerfMeterComponent(PaulstretchpluginAudioProcessor * p)
m_gradient.addColour(0.0, Colours::red); m_gradient.addColour(0.0, Colours::red);
m_gradient.addColour(0.25, Colours::yellow); m_gradient.addColour(0.25, Colours::yellow);
m_gradient.addColour(1.0, Colours::green); m_gradient.addColour(1.0, Colours::green);
m_smoother.setSlope(0.9, 10.0);
} }
void PerfMeterComponent::paint(Graphics & g) void PerfMeterComponent::paint(Graphics & g)
@ -1285,7 +1285,7 @@ void PerfMeterComponent::paint(Graphics & g)
m_gradient.point1 = {0.0f,0.0f}; m_gradient.point1 = {0.0f,0.0f};
m_gradient.point2 = {(float)getWidth(),0.0f}; m_gradient.point2 = {(float)getWidth(),0.0f};
g.fillAll(Colours::grey); g.fillAll(Colours::grey);
double amt = m_proc->getPreBufferingPercent(); double amt = m_smoother.process(m_proc->getPreBufferingPercent());
g.setColour(Colours::green); g.setColour(Colours::green);
int w = amt * getWidth(); int w = amt * getWidth();
//g.setGradientFill(m_gradient); //g.setGradientFill(m_gradient);

View File

@ -113,6 +113,7 @@ public:
PaulstretchpluginAudioProcessor* m_proc = nullptr; PaulstretchpluginAudioProcessor* m_proc = nullptr;
private: private:
ColourGradient m_gradient; ColourGradient m_gradient;
SignalSmoother m_smoother;
}; };
class MyThumbCache : public AudioThumbnailCache class MyThumbCache : public AudioThumbnailCache

View File

@ -7,7 +7,7 @@ Copyright (C) 2017-2018 Xenakios
Released under GNU General Public License v.2 license. Released under GNU General Public License v.2 license.
History : History :
04-27-2018 1.1.3 05-01-2018 1.1.3
-Changed "Octaves" module to "Ratios". The Ratios module has more shifters than the previous -Changed "Octaves" module to "Ratios". The Ratios module has more shifters than the previous
Octaves module and allows changing the pitch ratios (and the shifters mix) Octaves module and allows changing the pitch ratios (and the shifters mix)
in a separate tabbed page in the GUI. in a separate tabbed page in the GUI.