From 5b8514af73b419ef882f89f0824084039156cfdc Mon Sep 17 00:00:00 2001 From: dave Date: Wed, 26 Nov 2014 21:04:42 +0000 Subject: [PATCH] Made lfo ammount control absolute --- plugins/flanger/flangercontrols.cpp | 4 ++-- plugins/flanger/flangercontrols.h | 2 +- plugins/flanger/flangercontrolsdialog.cpp | 3 ++- plugins/flanger/flangereffect.cpp | 6 +++--- plugins/flanger/quadraturelfo.cpp | 19 ++++++++++--------- plugins/flanger/quadraturelfo.h | 11 ++--------- 6 files changed, 20 insertions(+), 25 deletions(-) diff --git a/plugins/flanger/flangercontrols.cpp b/plugins/flanger/flangercontrols.cpp index d7271c833..55d7f215c 100644 --- a/plugins/flanger/flangercontrols.cpp +++ b/plugins/flanger/flangercontrols.cpp @@ -35,8 +35,8 @@ FlangerControls::FlangerControls( FlangerEffect *effect ) : EffectControls ( effect ), m_effect ( effect ), m_delayTimeModel(0.001, 0.0001, 0.050, 0.0001, this, tr( "Delay Samples" ) ) , - m_lfoFrequencyModel( 0.25, 0.01, 5, 0.0001, this, tr( "Lfo Frequency" ) ), - m_lfoAmountModel( 0.1, 0.0, 1.0 , 0.001 , this , tr( "Amount" ) ), + m_lfoFrequencyModel( 0.25, 0.01, 5, 0.0001, 20000.0 ,this, tr( "Lfo Frequency" ) ), + m_lfoAmountModel( 0.0, 0.0, 0.0025 , 0.0001 , this , tr( "Seconds" ) ), m_feedbackModel( 0.0 , 0.0 , 1.0 , 0.0001, this, tr( "Regen" ) ), m_whiteNoiseAmountModel( 0.0 , 0.0 , 0.05 , 0.0001, this, tr( "Noise" ) ), m_invertFeedbackModel ( false , this, tr( "Invert" ) ) diff --git a/plugins/flanger/flangercontrols.h b/plugins/flanger/flangercontrols.h index 864119678..bbd52dbee 100644 --- a/plugins/flanger/flangercontrols.h +++ b/plugins/flanger/flangercontrols.h @@ -61,7 +61,7 @@ private slots: private: FlangerEffect* m_effect; FloatModel m_delayTimeModel; - FloatModel m_lfoFrequencyModel; + TempoSyncKnobModel m_lfoFrequencyModel; FloatModel m_lfoAmountModel; FloatModel m_feedbackModel; FloatModel m_whiteNoiseAmountModel; diff --git a/plugins/flanger/flangercontrolsdialog.cpp b/plugins/flanger/flangercontrolsdialog.cpp index a00e524f5..971208771 100644 --- a/plugins/flanger/flangercontrolsdialog.cpp +++ b/plugins/flanger/flangercontrolsdialog.cpp @@ -26,6 +26,7 @@ #include "flangercontrols.h" #include "embed.h" #include "LedCheckbox.h" +#include "TempoSyncKnob.h" @@ -46,7 +47,7 @@ FlangerControlsDialog::FlangerControlsDialog( FlangerControls *controls ) : delayKnob->setLabel( tr( "Delay" ) ); delayKnob->setHintText( tr( "Delay Time :" ) + " ", "" ); - Knob * lfoFreqKnob = new Knob( knobBright_26, this ); + TempoSyncKnob * lfoFreqKnob = new TempoSyncKnob( knobBright_26, this ); lfoFreqKnob->move( 53,10 ); lfoFreqKnob->setVolumeKnob( false ); lfoFreqKnob->setModel( &controls->m_lfoFrequencyModel ); diff --git a/plugins/flanger/flangereffect.cpp b/plugins/flanger/flangereffect.cpp index 70ac8c0df..6e0999016 100644 --- a/plugins/flanger/flangereffect.cpp +++ b/plugins/flanger/flangereffect.cpp @@ -92,7 +92,7 @@ bool FlangerEffect::processAudioBuffer( sampleFrame *buf, const fpp_t frames ) const float w = wetLevel(); const float length = m_flangerControls.m_delayTimeModel.value() * Engine::mixer()->processingSampleRate(); const float noise = m_flangerControls.m_whiteNoiseAmountModel.value(); - m_lfo->setAmplitude( m_flangerControls.m_lfoAmountModel.value() ); + float amplitude = m_flangerControls.m_lfoAmountModel.value() * Engine::mixer()->processingSampleRate(); m_lfo->setFrequency( m_flangerControls.m_lfoFrequencyModel.value() ); m_lDelay->setFeedback( m_flangerControls.m_feedbackModel.value() ); m_rDelay->setFeedback( m_flangerControls.m_feedbackModel.value() ); @@ -106,8 +106,8 @@ bool FlangerEffect::processAudioBuffer( sampleFrame *buf, const fpp_t frames ) dryS[0] = buf[f][0]; dryS[1] = buf[f][1]; m_lfo->tick(&leftLfo, &rightLfo); - m_lDelay->setLength( ( float )length * leftLfo ); - m_rDelay->setLength( ( float )length * rightLfo ); + m_lDelay->setLength( ( float )length + ( amplitude * leftLfo ) ); + m_rDelay->setLength( ( float )length+ ( amplitude * rightLfo ) ); if(m_flangerControls.m_invertFeedbackModel.value()) { m_lDelay->tick( &buf[f][1] ); diff --git a/plugins/flanger/quadraturelfo.cpp b/plugins/flanger/quadraturelfo.cpp index b11850bec..179f4aee7 100644 --- a/plugins/flanger/quadraturelfo.cpp +++ b/plugins/flanger/quadraturelfo.cpp @@ -35,15 +35,16 @@ void QuadratureLfo::tick( float *s, float *c ) *c = cosf( m_phase ); m_phase += m_increment; - if( m_amplitude < 0.0001 ) - { - *s = 1; - *c = 1; - } else - { - *s = ( ( *s * m_amplitude + 1.0 ) * 0.5 ); - *c = ( ( *c * m_amplitude + 1.0 ) * 0.5 ); - } +// removed to return -1 +1 +// if( m_amplitude < 0.0001 ) +// { +// *s = 1; +// *c = 1; +// } else +// { +// *s = ( ( *s * m_amplitude + 1.0 ) * 0.5 ); +// *c = ( ( *c * m_amplitude + 1.0 ) * 0.5 ); +// } } diff --git a/plugins/flanger/quadraturelfo.h b/plugins/flanger/quadraturelfo.h index 0a3c6c823..f884f691c 100644 --- a/plugins/flanger/quadraturelfo.h +++ b/plugins/flanger/quadraturelfo.h @@ -50,14 +50,8 @@ public: } } - inline void setAmplitude( float amplitude ) - { - if( amplitude < 0.0 || amplitude > 1.0 ) - { - return; - } - m_amplitude = amplitude; - } + + inline void setSampleRate ( int samplerate ) { @@ -72,7 +66,6 @@ private: double m_frequency; double m_phase; double m_increment; - double m_amplitude; double m_twoPiOverSr; int m_samplerate;