| @@ -339,4 +339,34 @@ inline void sanitizeTimeRange(double& t0, double& t1) | |||||
| t1 = t0 + 0.001; | t1 = t0 + 0.001; | ||||
| } | } | ||||
| 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; | |||||
| }; | |||||
| @@ -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); | ||||
| @@ -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 | ||||
| @@ -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. | ||||