diff --git a/plugins/Flanger/FlangerControls.cpp b/plugins/Flanger/FlangerControls.cpp index 4ba91dba356..8d8f48358ba 100644 --- a/plugins/Flanger/FlangerControls.cpp +++ b/plugins/Flanger/FlangerControls.cpp @@ -43,6 +43,7 @@ FlangerControls::FlangerControls( FlangerEffect *effect ) : { connect( Engine::mixer(), SIGNAL( sampleRateChanged() ), this, SLOT( changedSampleRate() ) ); + connect( Engine::getSong(), SIGNAL( playbackStateChanged() ), this, SLOT( changedPlaybackState() ) ); } @@ -81,3 +82,10 @@ void FlangerControls::changedSampleRate() } + +void FlangerControls::changedPlaybackState() +{ + m_effect->restartLFO(); +} + + diff --git a/plugins/Flanger/FlangerControls.h b/plugins/Flanger/FlangerControls.h index bbd8444fa65..d51141ed008 100644 --- a/plugins/Flanger/FlangerControls.h +++ b/plugins/Flanger/FlangerControls.h @@ -57,6 +57,7 @@ class FlangerControls : public EffectControls private slots: void changedSampleRate(); + void changedPlaybackState(); private: FlangerEffect* m_effect; diff --git a/plugins/Flanger/FlangerEffect.cpp b/plugins/Flanger/FlangerEffect.cpp index 2f5d96ef508..4d46198b124 100644 --- a/plugins/Flanger/FlangerEffect.cpp +++ b/plugins/Flanger/FlangerEffect.cpp @@ -112,7 +112,7 @@ bool FlangerEffect::processAudioBuffer( sampleFrame *buf, const fpp_t frames ) if(invertFeedback) { m_lDelay->tick( &buf[f][1] ); - m_rDelay->tick(&buf[f][0] ); + m_rDelay->tick( &buf[f][0] ); } else { m_lDelay->tick( &buf[f][0] ); @@ -139,6 +139,13 @@ void FlangerEffect::changeSampleRate() +void FlangerEffect::restartLFO() +{ + m_lfo->restart(); +} + + + extern "C" { diff --git a/plugins/Flanger/FlangerEffect.h b/plugins/Flanger/FlangerEffect.h index ad1052b5a2b..a70e87827dd 100644 --- a/plugins/Flanger/FlangerEffect.h +++ b/plugins/Flanger/FlangerEffect.h @@ -44,6 +44,7 @@ class FlangerEffect : public Effect return &m_flangerControls; } void changeSampleRate(); + void restartLFO(); private: FlangerControls m_flangerControls; diff --git a/plugins/Flanger/QuadratureLfo.h b/plugins/Flanger/QuadratureLfo.h index 90f7f77dc49..6e535de1d5e 100644 --- a/plugins/Flanger/QuadratureLfo.h +++ b/plugins/Flanger/QuadratureLfo.h @@ -52,6 +52,12 @@ class QuadratureLfo + inline void restart() + { + m_phase = 0; + } + + inline void setSampleRate ( int samplerate ) {