| @@ -359,14 +359,20 @@ public: | |||||
| } | } | ||||
| void setSlope(double x, double sr) | 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; | |||||
| if (x != m_slope || sr != m_sr) | |||||
| { | |||||
| m_slope = x; | |||||
| m_sr = sr; | |||||
| 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; } | |||||
| double getSlope() const { return m_slope; } | |||||
| double getSamplerate() const { return m_sr; } | |||||
| private: | private: | ||||
| double m_a, m_b, m_z; | double m_a, m_b, m_z; | ||||
| double m_slope; | double m_slope; | ||||
| double m_sr = 0.0; | |||||
| }; | }; | ||||
| @@ -1277,7 +1277,6 @@ 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 +1284,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_smoother.process(m_proc->getPreBufferingPercent()); | |||||
| double amt = 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,7 +113,6 @@ 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 | ||||
| @@ -639,7 +639,9 @@ void PaulstretchpluginAudioProcessor::processBlock (AudioSampleBuffer& buffer, M | |||||
| double srtemp = getSampleRate(); | double srtemp = getSampleRate(); | ||||
| if (srtemp != m_cur_sr) | if (srtemp != m_cur_sr) | ||||
| m_cur_sr = srtemp; | m_cur_sr = srtemp; | ||||
| const int totalNumInputChannels = getTotalNumInputChannels(); | |||||
| m_prebufsmoother.setSlope(0.9, srtemp / buffer.getNumSamples()); | |||||
| m_smoothed_prebuffer_ready = m_prebufsmoother.process(m_buffering_source->getPercentReady()); | |||||
| const int totalNumInputChannels = getTotalNumInputChannels(); | |||||
| const int totalNumOutputChannels = getTotalNumOutputChannels(); | const int totalNumOutputChannels = getTotalNumOutputChannels(); | ||||
| for (int i = 0; i < totalNumInputChannels; ++i) | for (int i = 0; i < totalNumInputChannels; ++i) | ||||
| m_input_buffer.copyFrom(i, 0, buffer, i, 0, buffer.getNumSamples()); | m_input_buffer.copyFrom(i, 0, buffer, i, 0, buffer.getNumSamples()); | ||||
| @@ -822,7 +824,7 @@ double PaulstretchpluginAudioProcessor::getPreBufferingPercent() | |||||
| { | { | ||||
| if (m_buffering_source==nullptr) | if (m_buffering_source==nullptr) | ||||
| return 0.0; | return 0.0; | ||||
| return m_buffering_source->getPercentReady(); | |||||
| return m_smoothed_prebuffer_ready; | |||||
| } | } | ||||
| void PaulstretchpluginAudioProcessor::timerCallback(int id) | void PaulstretchpluginAudioProcessor::timerCallback(int id) | ||||
| @@ -235,7 +235,8 @@ private: | |||||
| std::unique_ptr<MyBufferingAudioSource> m_buffering_source; | std::unique_ptr<MyBufferingAudioSource> m_buffering_source; | ||||
| int m_prebuffer_amount = 1; | int m_prebuffer_amount = 1; | ||||
| bool m_recreate_buffering_source = true; | bool m_recreate_buffering_source = true; | ||||
| double m_smoothed_prebuffer_ready = 0.0; | |||||
| SignalSmoother m_prebufsmoother; | |||||
| int m_fft_size_to_use = 1024; | int m_fft_size_to_use = 1024; | ||||
| double m_last_outpos_pos = 0.0; | double m_last_outpos_pos = 0.0; | ||||
| double m_last_in_pos = 0.0; | double m_last_in_pos = 0.0; | ||||