1
0
mirror of https://github.com/cookiengineer/audacity synced 2026-01-13 08:05:52 +01:00

changes to try to ensure that ok and preview are enabled when amplify is opened, and peak is set to 0.0. It was working on windows but not on linux

This commit is contained in:
David Bailes
2015-05-19 15:25:49 +01:00
committed by James Crook
parent d0d8f37d85
commit 335ec77020
2 changed files with 8 additions and 3 deletions

View File

@@ -37,7 +37,6 @@
#include "Amplify.h" #include "Amplify.h"
#define EPSILON 0.000000000001 // allow for imprecise equality comparisons.
enum enum
{ {
@@ -67,6 +66,7 @@ EffectAmplify::EffectAmplify()
{ {
mAmp = DEF_Amp; mAmp = DEF_Amp;
mRatio = pow(10.0, mAmp / 20.0); mRatio = pow(10.0, mAmp / 20.0);
mRatioClip = 0.0;
mCanClip = false; mCanClip = false;
mPeak = 0.0; mPeak = 0.0;
@@ -180,6 +180,7 @@ void EffectAmplify::PopulateOrExchange(ShuttleGui & S)
if (mPeak > 0.0) if (mPeak > 0.0)
{ {
mRatio = 1.0 / mPeak; mRatio = 1.0 / mPeak;
mRatioClip = mRatio;
} }
else else
{ {
@@ -291,7 +292,7 @@ bool EffectAmplify::TransferDataFromWindow()
void EffectAmplify::CheckClip() void EffectAmplify::CheckClip()
{ {
EnableApply(mClip->GetValue() || (mPeak > 0.0 && mRatio <= 1.0/mPeak + EPSILON)); EnableApply(mClip->GetValue() || (mPeak > 0.0 && mRatio <= mRatioClip));
} }
void EffectAmplify::OnAmpText(wxCommandEvent & WXUNUSED(evt)) void EffectAmplify::OnAmpText(wxCommandEvent & WXUNUSED(evt))
@@ -320,7 +321,10 @@ void EffectAmplify::OnPeakText(wxCommandEvent & WXUNUSED(evt))
return; return;
} }
mRatio = pow(10.0, mNewPeak / 20.0) / mPeak; if (mNewPeak == 0.0)
mRatio = mRatioClip;
else
mRatio = pow(10.0, mNewPeak / 20.0) / mPeak;
double ampInit = 20.0 * log10(mRatio); double ampInit = 20.0 * log10(mRatio);
mAmp = TrapDouble(ampInit, MIN_Amp, MAX_Amp); mAmp = TrapDouble(ampInit, MIN_Amp, MAX_Amp);

View File

@@ -71,6 +71,7 @@ private:
double mPeak; double mPeak;
double mRatio; double mRatio;
double mRatioClip; // maximum value of mRatio which does not cause clipping
double mAmp; double mAmp;
double mNewPeak; double mNewPeak;
bool mCanClip; bool mCanClip;