Made lfo ammount control absolute

This commit is contained in:
dave
2014-11-26 21:04:42 +00:00
parent bc8896b4ef
commit 5b8514af73
6 changed files with 20 additions and 25 deletions

View File

@@ -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" ) )

View File

@@ -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;

View File

@@ -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 );

View File

@@ -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] );

View File

@@ -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 );
// }
}

View File

@@ -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;