From 68a621cc162b240c2674a80acebbf0058bb23976 Mon Sep 17 00:00:00 2001 From: Joshua Wade Date: Fri, 18 May 2018 13:34:46 -0400 Subject: [PATCH] Restart flanger LFO on Song::playbackStateChanged signal (#4363) Closes https://github.com/LMMS/lmms/issues/3689 --- plugins/Flanger/FlangerControls.cpp | 7 +++++++ plugins/Flanger/FlangerControls.h | 1 + plugins/Flanger/FlangerEffect.cpp | 11 ++++++++++- plugins/Flanger/FlangerEffect.h | 1 + plugins/Flanger/QuadratureLfo.h | 8 ++++++++ 5 files changed, 27 insertions(+), 1 deletion(-) diff --git a/plugins/Flanger/FlangerControls.cpp b/plugins/Flanger/FlangerControls.cpp index 4ba91dba3..fa3640db4 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,9 @@ void FlangerControls::changedSampleRate() } + + +void FlangerControls::changedPlaybackState() +{ + m_effect->restartLFO(); +} diff --git a/plugins/Flanger/FlangerControls.h b/plugins/Flanger/FlangerControls.h index bbd8444fa..d51141ed0 100644 --- a/plugins/Flanger/FlangerControls.h +++ b/plugins/Flanger/FlangerControls.h @@ -57,6 +57,7 @@ public: private slots: void changedSampleRate(); + void changedPlaybackState(); private: FlangerEffect* m_effect; diff --git a/plugins/Flanger/FlangerEffect.cpp b/plugins/Flanger/FlangerEffect.cpp index ab952e5a4..528eacf01 100644 --- a/plugins/Flanger/FlangerEffect.cpp +++ b/plugins/Flanger/FlangerEffect.cpp @@ -68,7 +68,7 @@ FlangerEffect::~FlangerEffect() { delete m_rDelay; } - if(m_lfo ) + if( m_lfo ) { delete m_lfo; } @@ -139,6 +139,15 @@ void FlangerEffect::changeSampleRate() + +void FlangerEffect::restartLFO() +{ + m_lfo->restart(); +} + + + + extern "C" { diff --git a/plugins/Flanger/FlangerEffect.h b/plugins/Flanger/FlangerEffect.h index ad1052b5a..a70e87827 100644 --- a/plugins/Flanger/FlangerEffect.h +++ b/plugins/Flanger/FlangerEffect.h @@ -44,6 +44,7 @@ public: return &m_flangerControls; } void changeSampleRate(); + void restartLFO(); private: FlangerControls m_flangerControls; diff --git a/plugins/Flanger/QuadratureLfo.h b/plugins/Flanger/QuadratureLfo.h index 90f7f77dc..e7e27d14a 100644 --- a/plugins/Flanger/QuadratureLfo.h +++ b/plugins/Flanger/QuadratureLfo.h @@ -53,6 +53,14 @@ public: + inline void restart() + { + m_phase = 0; + } + + + + inline void setSampleRate ( int samplerate ) { m_samplerate = samplerate;