From 0c9111608de81c5bcd54e51ab91dd73496fc1795 Mon Sep 17 00:00:00 2001 From: Leland Lucius Date: Mon, 11 May 2015 10:51:53 -0500 Subject: [PATCH] Fix for bug #927 At least I'm pretty sure this addresses all of the example Peter mentions. --- src/effects/Amplify.cpp | 26 ++++++++++++++++---------- src/effects/Amplify.h | 1 + 2 files changed, 17 insertions(+), 10 deletions(-) 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;