diff --git a/src/effects/Amplify.cpp b/src/effects/Amplify.cpp index 7a9377a7f..ae0ed6669 100644 --- a/src/effects/Amplify.cpp +++ b/src/effects/Amplify.cpp @@ -66,6 +66,7 @@ EffectAmplify::EffectAmplify() mRatio = powf(10.0f, mAmp / 20.0f); mCanClip = false; mPeak = 0.0f; + mTracksAnalyzed = false; } EffectAmplify::~EffectAmplify() @@ -134,20 +135,25 @@ bool EffectAmplify::SetAutomationParameters(EffectAutomationParameters & parms) bool EffectAmplify::Init() { - mPeak = 0.0f; - - SelectedTrackListOfKindIterator iter(Track::Wave, mTracks); - - for (Track *t = iter.First(); t; t = iter.Next()) + if (!mTracksAnalyzed) { - float min, max; - ((WaveTrack *)t)->GetMinMax(&min, &max, mT0, mT1); - float newpeak = (fabs(min) > fabs(max) ? fabs(min) : fabs(max)); + mPeak = 0.0f; - if (newpeak > mPeak) + SelectedTrackListOfKindIterator iter(Track::Wave, mTracks); + + for (Track *t = iter.First(); t; t = iter.Next()) { - mPeak = newpeak; + float min, max; + ((WaveTrack *)t)->GetMinMax(&min, &max, mT0, mT1); + float newpeak = (fabs(min) > fabs(max) ? fabs(min) : fabs(max)); + + if (newpeak > mPeak) + { + mPeak = newpeak; + } } + + mTracksAnalyzed = true; } return true; diff --git a/src/effects/Amplify.h b/src/effects/Amplify.h index e15dfbcba..9e8505530 100644 --- a/src/effects/Amplify.h +++ b/src/effects/Amplify.h @@ -68,6 +68,7 @@ private: private: float mPeak; + bool mTracksAnalyzed; float mRatio; float mAmp;