Update of /cvsroot/audacity/audacity-src/src/effects
In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv26134/effects
Modified Files:
AutoDuck.cpp AutoDuck.h
Log Message:
Add inner fade down/up len params
Index: AutoDuck.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/AutoDuck.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- AutoDuck.cpp 26 Jan 2007 11:06:17 -0000 1.1
+++ AutoDuck.cpp 26 Jan 2007 20:50:59 -0000 1.2
@@ -34,10 +34,12 @@
* Default values for effect params
*/
#define PARAM_DEFAULT_DUCK_AMOUNT_DB -12.0
-#define PARAM_DEFAULT_FADE_DOWN_LEN 0.5
-#define PARAM_DEFAULT_FADE_UP_LEN 0.5
+#define PARAM_DEFAULT_OUTER_FADE_DOWN_LEN 0.5
+#define PARAM_DEFAULT_INNER_FADE_DOWN_LEN 0
+#define PARAM_DEFAULT_OUTER_FADE_UP_LEN 0.5
+#define PARAM_DEFAULT_INNER_FADE_UP_LEN 0
#define PARAM_DEFAULT_THRESHOLD_DB -30.0
-#define PARAM_DEFAULT_MAXIMUM_PAUSE 0
+#define PARAM_DEFAULT_MAXIMUM_PAUSE 1.0
/*
* Common constants
@@ -80,10 +82,14 @@
{
gPrefs->Read(wxT("/Effects/AutoDuck/DuckAmountDb"),
&mDuckAmountDb, PARAM_DEFAULT_DUCK_AMOUNT_DB);
- gPrefs->Read(wxT("/Effects/AutoDuck/FadeDownLen"),
- &mFadeDownLen, PARAM_DEFAULT_FADE_DOWN_LEN);
- gPrefs->Read(wxT("/Effects/AutoDuck/FadeUpLen"),
- &mFadeUpLen, PARAM_DEFAULT_FADE_UP_LEN);
+ gPrefs->Read(wxT("/Effects/AutoDuck/InnerFadeDownLen"),
+ &mInnerFadeDownLen, PARAM_DEFAULT_INNER_FADE_DOWN_LEN);
+ gPrefs->Read(wxT("/Effects/AutoDuck/InnerFadeUpLen"),
+ &mInnerFadeUpLen, PARAM_DEFAULT_INNER_FADE_UP_LEN);
+ gPrefs->Read(wxT("/Effects/AutoDuck/OuterFadeDownLen"),
+ &mOuterFadeDownLen, PARAM_DEFAULT_OUTER_FADE_DOWN_LEN);
+ gPrefs->Read(wxT("/Effects/AutoDuck/OuterFadeUpLen"),
+ &mOuterFadeUpLen, PARAM_DEFAULT_OUTER_FADE_UP_LEN);
gPrefs->Read(wxT("/Effects/AutoDuck/ThresholdDb"),
&mThresholdDb, PARAM_DEFAULT_THRESHOLD_DB);
gPrefs->Read(wxT("/Effects/AutoDuck/MaximumPause"),
@@ -143,10 +149,14 @@
{
shuttle.TransferDouble(wxT("DuckAmountDb"), mDuckAmountDb,
PARAM_DEFAULT_DUCK_AMOUNT_DB);
- shuttle.TransferDouble(wxT("FadeDownLen"), mFadeDownLen,
- PARAM_DEFAULT_FADE_DOWN_LEN);
- shuttle.TransferDouble(wxT("FadeUpLen"), mFadeUpLen,
- PARAM_DEFAULT_FADE_UP_LEN);
+ shuttle.TransferDouble(wxT("InnerFadeDownLen"), mInnerFadeDownLen,
+ PARAM_DEFAULT_INNER_FADE_DOWN_LEN);
+ shuttle.TransferDouble(wxT("InnerFadeUpLen"), mInnerFadeUpLen,
+ PARAM_DEFAULT_INNER_FADE_UP_LEN);
+ shuttle.TransferDouble(wxT("OuterFadeDownLen"), mOuterFadeDownLen,
+ PARAM_DEFAULT_OUTER_FADE_DOWN_LEN);
+ shuttle.TransferDouble(wxT("OuterFadeUpLen"), mOuterFadeUpLen,
+ PARAM_DEFAULT_OUTER_FADE_UP_LEN);
shuttle.TransferDouble(wxT("ThresholdDb"), mThresholdDb,
PARAM_DEFAULT_THRESHOLD_DB);
shuttle.TransferDouble(wxT("MaximumPause"), mMaximumPause,
@@ -173,8 +183,10 @@
return false; // user cancelled dialog
gPrefs->Write(wxT("/Effects/AutoDuck/DuckAmountDb"), mDuckAmountDb);
- gPrefs->Write(wxT("/Effects/AutoDuck/FadeDownLen"), mFadeDownLen);
- gPrefs->Write(wxT("/Effects/AutoDuck/FadeUpLen"), mFadeUpLen);
+ gPrefs->Write(wxT("/Effects/AutoDuck/OuterFadeDownLen"), mOuterFadeDownLen);
+ gPrefs->Write(wxT("/Effects/AutoDuck/OuterFadeUpLen"), mOuterFadeUpLen);
+ gPrefs->Write(wxT("/Effects/AutoDuck/InnerFadeDownLen"), mInnerFadeDownLen);
+ gPrefs->Write(wxT("/Effects/AutoDuck/InnerFadeUpLen"), mInnerFadeUpLen);
gPrefs->Write(wxT("/Effects/AutoDuck/ThresholdDb"), mThresholdDb);
gPrefs->Write(wxT("/Effects/AutoDuck/MaximumPause"), mMaximumPause);
@@ -191,9 +203,9 @@
bool cancel = false;
longSampleCount start =
- mControlTrack->TimeToLongSamples(mT0 + mFadeDownLen);
+ mControlTrack->TimeToLongSamples(mT0 + mOuterFadeDownLen);
longSampleCount end =
- mControlTrack->TimeToLongSamples(mT1 - mFadeUpLen);
+ mControlTrack->TimeToLongSamples(mT1 - mOuterFadeUpLen);
if (end <= start)
return false;
@@ -201,8 +213,11 @@
// the minimum number of samples we have to wait until the maximum
// pause has been exceeded
double maxPause = mMaximumPause;
- if (maxPause < mFadeDownLen + mFadeUpLen)
- maxPause = mFadeDownLen + mFadeUpLen;
+
+ // We don't fade in until we have time enough to actually fade out again
+ if (maxPause < mOuterFadeDownLen + mOuterFadeUpLen)
+ maxPause = mOuterFadeDownLen + mOuterFadeUpLen;
+
longSampleCount minSamplesPause =
mControlTrack->TimeToLongSamples(maxPause);
@@ -276,8 +291,8 @@
mControlTrack->LongSamplesToTime(i - curSamplesPause);
regions.Add(AutoDuckRegion(
- duckRegionStart - mFadeDownLen,
- duckRegionEnd + mFadeUpLen));
+ duckRegionStart - mOuterFadeDownLen,
+ duckRegionEnd + mOuterFadeUpLen));
inDuckRegion = false;
}
@@ -300,8 +315,8 @@
double duckRegionEnd =
mControlTrack->LongSamplesToTime(end - curSamplesPause);
regions.Add(AutoDuckRegion(
- duckRegionStart - mFadeDownLen,
- duckRegionEnd + mFadeUpLen));
+ duckRegionStart - mOuterFadeDownLen,
+ duckRegionEnd + mOuterFadeUpLen));
}
delete[] buf;
@@ -353,11 +368,13 @@
float *buf = new float[BUF_SIZE];
int pos = start;
- int fadeDownSamples = t->TimeToLongSamples(mFadeDownLen);
+ int fadeDownSamples = t->TimeToLongSamples(
+ mOuterFadeDownLen + mInnerFadeDownLen);
if (fadeDownSamples < 1)
fadeDownSamples = 1;
- int fadeUpSamples = t->TimeToLongSamples(mFadeUpLen);
+ int fadeUpSamples = t->TimeToLongSamples(
+ mOuterFadeUpLen + mInnerFadeUpLen);
if (fadeUpSamples < 1)
fadeUpSamples = 1;
@@ -409,20 +426,24 @@
* Effect dialog implementation
*/
-#define ID_DUCK_AMOUNT_DB 10001
-#define ID_THRESHOLD_DB 10002
-#define ID_FADE_DOWN_LEN 10003
-#define ID_FADE_UP_LEN 10004
-#define ID_MAXIMUM_PAUSE 10005
-#define ID_PANEL 10006
+#define ID_DUCK_AMOUNT_DB 10001
+#define ID_THRESHOLD_DB 10002
+#define ID_INNER_FADE_DOWN_LEN 10003
+#define ID_INNER_FADE_UP_LEN 10004
+#define ID_OUTER_FADE_DOWN_LEN 10005
+#define ID_OUTER_FADE_UP_LEN 10006
+#define ID_MAXIMUM_PAUSE 10007
+#define ID_PANEL 10008
BEGIN_EVENT_TABLE(EffectAutoDuckDialog, wxDialog)
EVT_BUTTON(wxID_OK, EffectAutoDuckDialog::OnOk)
EVT_BUTTON(wxID_OK, EffectAutoDuckDialog::OnCancel)
EVT_TEXT(ID_DUCK_AMOUNT_DB, EffectAutoDuckDialog::OnValueChanged)
EVT_TEXT(ID_THRESHOLD_DB, EffectAutoDuckDialog::OnValueChanged)
- EVT_TEXT(ID_FADE_DOWN_LEN, EffectAutoDuckDialog::OnValueChanged)
- EVT_TEXT(ID_FADE_UP_LEN, EffectAutoDuckDialog::OnValueChanged)
+ EVT_TEXT(ID_INNER_FADE_DOWN_LEN, EffectAutoDuckDialog::OnValueChanged)
+ EVT_TEXT(ID_INNER_FADE_UP_LEN, EffectAutoDuckDialog::OnValueChanged)
+ EVT_TEXT(ID_OUTER_FADE_DOWN_LEN, EffectAutoDuckDialog::OnValueChanged)
+ EVT_TEXT(ID_OUTER_FADE_UP_LEN, EffectAutoDuckDialog::OnValueChanged)
EVT_TEXT(ID_MAXIMUM_PAUSE, EffectAutoDuckDialog::OnValueChanged)
END_EVENT_TABLE()
@@ -469,21 +490,34 @@
Internat::ToDisplayString(mEffect->mMaximumPause), 10);
S.AddUnits(_("seconds"));
- mFadeDownLenBox = S.Id(ID_FADE_DOWN_LEN).AddTextBox(
- _("Fade Down Length:"),
- Internat::ToDisplayString(mEffect->mFadeDownLen), 10);
+ mOuterFadeDownLenBox = S.Id(ID_OUTER_FADE_DOWN_LEN).AddTextBox(
+ _("Outer Fade Down Length:"),
+ Internat::ToDisplayString(mEffect->mOuterFadeDownLen), 10);
+ S.AddUnits(_("seconds"));
+
+ mOuterFadeUpLenBox = S.Id(ID_OUTER_FADE_UP_LEN).AddTextBox(
+ _("Outer Fade Up Length:"),
+ Internat::ToDisplayString(mEffect->mOuterFadeUpLen), 10);
+ S.AddUnits(_("seconds"));
+
+ mInnerFadeDownLenBox = S.Id(ID_INNER_FADE_DOWN_LEN).AddTextBox(
+ _("Inner Fade Down Length:"),
+ Internat::ToDisplayString(mEffect->mInnerFadeDownLen), 10);
S.AddUnits(_("seconds"));
+ mInnerFadeUpLenBox = S.Id(ID_INNER_FADE_UP_LEN).AddTextBox(
+ _("Inner Fade Up Length:"),
+ Internat::ToDisplayString(mEffect->mInnerFadeUpLen), 10);
+ S.AddUnits(_("seconds"));
+ }
+ S.EndMultiColumn();
+
+ S.StartMultiColumn(3, wxCENTER);
+ {
mThresholdDbBox = S.Id(ID_THRESHOLD_DB).AddTextBox(
_("Threshold:"),
Internat::ToDisplayString(mEffect->mThresholdDb), 10);
S.AddUnits(_("db"));
-
- mFadeUpLenBox = S.Id(ID_FADE_UP_LEN).AddTextBox(
- _("Fade Up Length:"),
- Internat::ToDisplayString(mEffect->mFadeUpLen), 10);
- S.AddUnits(_("seconds"));
-
}
S.EndMultiColumn();
@@ -510,9 +544,11 @@
void EffectAutoDuckDialog::OnOk(wxCommandEvent& evt)
{
- double duckAmountDb = 0, thresholdDb = 0, fadeDownLen = 0;
- double fadeUpLen = 0, maximumPause = 0;
-
+ double duckAmountDb = 0, thresholdDb = 0;
+ double innerFadeDownLen = 0, innerFadeUpLen = 0;
+ double outerFadeDownLen = 0, outerFadeUpLen = 0;
+ double maximumPause = 0;
+
bool success =
mDuckAmountDbBox->GetValue().ToDouble(&duckAmountDb) &&
mEffect->mDuckAmountDb > -100 &&
@@ -520,12 +556,18 @@
mThresholdDbBox->GetValue().ToDouble(&thresholdDb) &&
mEffect->mThresholdDb > -100 &&
mEffect->mThresholdDb < 0 &&
- mFadeDownLenBox->GetValue().ToDouble(&fadeDownLen) &&
- mEffect->mFadeDownLen >= 0 &&
- mEffect->mFadeDownLen < 1000 &&
- mFadeUpLenBox->GetValue().ToDouble(&fadeUpLen) &&
- mEffect->mFadeUpLen >= 0 &&
- mEffect->mFadeUpLen < 1000 &&
+ mInnerFadeDownLenBox->GetValue().ToDouble(&innerFadeDownLen) &&
+ mEffect->mInnerFadeDownLen >= 0 &&
+ mEffect->mInnerFadeDownLen < 1000 &&
+ mInnerFadeUpLenBox->GetValue().ToDouble(&innerFadeUpLen) &&
+ mEffect->mInnerFadeUpLen >= 0 &&
+ mEffect->mInnerFadeUpLen < 1000 &&
+ mOuterFadeDownLenBox->GetValue().ToDouble(&outerFadeDownLen) &&
+ mEffect->mOuterFadeDownLen >= 0 &&
+ mEffect->mOuterFadeDownLen < 1000 &&
+ mOuterFadeUpLenBox->GetValue().ToDouble(&outerFadeUpLen) &&
+ mEffect->mOuterFadeUpLen >= 0 &&
+ mEffect->mOuterFadeUpLen < 1000 &&
mMaximumPauseBox->GetValue().ToDouble(&maximumPause) &&
mEffect->mMaximumPause >= 0 &&
mEffect->mMaximumPause < 1000;
@@ -539,8 +581,10 @@
mEffect->mDuckAmountDb = duckAmountDb;
mEffect->mThresholdDb = thresholdDb;
- mEffect->mFadeDownLen = fadeDownLen;
- mEffect->mFadeUpLen = fadeUpLen;
+ mEffect->mInnerFadeDownLen = innerFadeDownLen;
+ mEffect->mInnerFadeUpLen = innerFadeUpLen;
+ mEffect->mOuterFadeDownLen = outerFadeDownLen;
+ mEffect->mOuterFadeUpLen = outerFadeUpLen;
mEffect->mMaximumPause = maximumPause;
EndModal(wxID_OK);
@@ -565,17 +609,17 @@
#define TEXT_DISTANCE 15 // pixel distance text <-> center of control point
-#define FADE_DOWN_START 50 // x coordinate
-#define FADE_UP_START 550 // x coordinate
+#define FADE_DOWN_START 150 // x coordinate
+#define FADE_UP_START 450 // x coordinate
#define DUCK_AMOUNT_START 50 // y coordinate
#define MAX_DUCK_AMOUNT 0 // db
#define MIN_DUCK_AMOUNT -24 // db
#define MIN_FADE 0 // seconds
-#define MAX_FADE 4.5 // seconds
+#define MAX_FADE 3 // seconds
-#define FADE_SCALE 50 // scale factor for second -> pixel conversion
+#define FADE_SCALE 40 // scale factor for second -> pixel conversion
#define DUCK_AMOUNT_SCALE 8 // scale factor for db -> pixel conversion
static int GetDistance(const wxPoint& first, const wxPoint& second)
@@ -614,8 +658,10 @@
void EffectAutoDuckPanel::ResetControlPoints()
{
- mControlPoints[fadeDown] = wxPoint(-100,-100);
- mControlPoints[fadeUp] = wxPoint(-100,-100);
+ mControlPoints[innerFadeDown] = wxPoint(-100,-100);
+ mControlPoints[innerFadeUp] = wxPoint(-100,-100);
+ mControlPoints[outerFadeDown] = wxPoint(-100,-100);
+ mControlPoints[outerFadeUp] = wxPoint(-100,-100);
mControlPoints[duckAmount] = wxPoint(-100,-100);
}
@@ -645,14 +691,20 @@
dc.SetTextBackground(*wxWHITE);
double duckAmountDb = 0;
- double fadeDownLen = 0;
- double fadeUpLen = 0;
+ double innerFadeDownLen = 0;
+ double innerFadeUpLen = 0;
+ double outerFadeDownLen = 0;
+ double outerFadeUpLen = 0;
mParent->mDuckAmountDbBox->GetValue().ToDouble(&duckAmountDb);
- mParent->mFadeDownLenBox->GetValue().ToDouble(&fadeDownLen);
- mParent->mFadeUpLenBox->GetValue().ToDouble(&fadeUpLen);
+ mParent->mInnerFadeDownLenBox->GetValue().ToDouble(&innerFadeDownLen);
+ mParent->mInnerFadeUpLenBox->GetValue().ToDouble(&innerFadeUpLen);
+ mParent->mOuterFadeDownLenBox->GetValue().ToDouble(&outerFadeDownLen);
+ mParent->mOuterFadeUpLenBox->GetValue().ToDouble(&outerFadeUpLen);
- if (fadeDownLen < MIN_FADE || fadeDownLen > MAX_FADE ||
- fadeUpLen < MIN_FADE || fadeUpLen > MAX_FADE ||
+ if (innerFadeDownLen < MIN_FADE || innerFadeDownLen > MAX_FADE ||
+ innerFadeUpLen < MIN_FADE || innerFadeUpLen > MAX_FADE ||
+ outerFadeDownLen < MIN_FADE || outerFadeDownLen > MAX_FADE ||
+ outerFadeUpLen < MIN_FADE || outerFadeUpLen > MAX_FADE ||
duckAmountDb < MIN_DUCK_AMOUNT || duckAmountDb > MAX_DUCK_AMOUNT)
{
// values are out of range, no preview available
@@ -671,49 +723,66 @@
wxPoint points[6];
- points[0].x = FADE_DOWN_START - 30;
+ points[0].x = 10;
points[0].y = DUCK_AMOUNT_START;
- points[1].x = FADE_DOWN_START;
+ points[1].x = FADE_DOWN_START - (int)(outerFadeDownLen * FADE_SCALE);
points[1].y = DUCK_AMOUNT_START;
- points[2].x = FADE_DOWN_START + (int)(fadeDownLen * FADE_SCALE);
+ points[2].x = FADE_DOWN_START + (int)(innerFadeDownLen * FADE_SCALE);
points[2].y = DUCK_AMOUNT_START -
(int)(duckAmountDb * DUCK_AMOUNT_SCALE);
- points[3].x = FADE_UP_START - (int)(fadeUpLen * FADE_SCALE);
+ points[3].x = FADE_UP_START - (int)(innerFadeUpLen * FADE_SCALE);
points[3].y = DUCK_AMOUNT_START -
(int)(duckAmountDb * DUCK_AMOUNT_SCALE);
- points[4].x = FADE_UP_START;
+ points[4].x = FADE_UP_START + (int)(outerFadeUpLen * FADE_SCALE);
points[4].y = DUCK_AMOUNT_START;
-
- points[5].x = FADE_UP_START + 30;
+
+ points[5].x = clientWidth - 10;
points[5].y = DUCK_AMOUNT_START;
-
+
dc.DrawLines(6, points);
+ dc.SetPen(wxPen(*wxBLACK, 1, wxDOT));
+
+ dc.DrawLine(FADE_DOWN_START, 10, FADE_DOWN_START, clientHeight - 10);
+ dc.DrawLine(FADE_UP_START, 10, FADE_UP_START, clientHeight - 10);
+
dc.SetPen(AColor::envelopePen);
dc.SetBrush(*wxWHITE_BRUSH);
- mControlPoints[fadeDown] = wxPoint(points[2].x - 3, points[2].y - 2);
- mControlPoints[fadeUp] = wxPoint(points[3].x - 3, points[3].y - 2);
+ mControlPoints[outerFadeDown] = points[1];
+ mControlPoints[innerFadeDown] = points[2];
+ mControlPoints[innerFadeUp] = points[3];
+ mControlPoints[outerFadeUp] = points[4];
mControlPoints[duckAmount] = wxPoint(
- (points[2].x + points[3].x) / 2 - 3, points[2].y - 3);
+ (points[2].x + points[3].x) / 2, points[2].y);
for (int i = 0; i < AUTO_DUCK_PANEL_NUM_CONTROL_POINTS; i++)
{
+ EControlPoint cp = (EControlPoint)i;
int digits;
float value;
- if (i == (int)fadeDown)
+ if (cp == innerFadeDown)
{
- value = fadeDownLen;
+ value = innerFadeDownLen;
digits = 2;
}
- else if (i == (int)fadeUp)
+ else if (cp == innerFadeUp)
{
- value = fadeUpLen;
+ value = innerFadeUpLen;
+ digits = 2;
+ }
+ else if (cp == outerFadeDown)
+ {
+ value = outerFadeDownLen;
+ digits = 2;
+ } else if (cp == outerFadeUp)
+ {
+ value = outerFadeUpLen;
digits = 2;
}
else
@@ -725,7 +794,7 @@
wxString valueStr = Internat::ToDisplayString(value, digits);
valueStr += wxT(" ");
- if (i == (int)duckAmount)
+ if (cp == duckAmount)
valueStr += wxT("db"); // i18n-hint: short form of 'decibels'
else
valueStr += _("s"); // i18n-hint: short form of 'seconds'
@@ -736,15 +805,15 @@
int textPosX = mControlPoints[i].x - textWidth / 2;
int textPosY = mControlPoints[i].y;
- if (i == (int)duckAmount)
+ if (cp == duckAmount || cp == outerFadeDown || cp == outerFadeUp)
textPosY -= TEXT_DISTANCE + textHeight;
else
textPosY += TEXT_DISTANCE;
dc.DrawText(valueStr, textPosX, textPosY);
- dc.DrawEllipse(mControlPoints[i].x,
- mControlPoints[i].y, 6, 6);
+ dc.DrawEllipse(mControlPoints[i].x - 3,
+ mControlPoints[i].y - 3, 6, 6);
}
}
@@ -821,8 +890,10 @@
case none:
SetCursor(wxNullCursor);
break;
- case fadeDown:
- case fadeUp:
+ case innerFadeDown:
+ case innerFadeUp:
+ case outerFadeDown:
+ case outerFadeUp:
SetCursor(wxCursor(wxCURSOR_SIZEWE));
break;
case duckAmount:
@@ -860,22 +931,40 @@
switch (mCurrentControlPoint)
{
- case fadeDown:
+ case outerFadeDown:
+ newValue = ((double)(FADE_DOWN_START - evt.GetX())) / FADE_SCALE;
+ if (newValue < MIN_FADE)
+ newValue = MIN_FADE;
+ if (newValue > MAX_FADE)
+ newValue = MAX_FADE;
+ mParent->mOuterFadeDownLenBox->SetValue(
+ Internat::ToDisplayString(newValue));
+ break;
+ case outerFadeUp:
+ newValue = ((double)(evt.GetX() - FADE_UP_START)) / FADE_SCALE;
+ if (newValue < MIN_FADE)
+ newValue = MIN_FADE;
+ if (newValue > MAX_FADE)
+ newValue = MAX_FADE;
+ mParent->mOuterFadeUpLenBox->SetValue(
+ Internat::ToDisplayString(newValue));
+ break;
+ case innerFadeDown:
newValue = ((double)(evt.GetX() - FADE_DOWN_START)) / FADE_SCALE;
if (newValue < MIN_FADE)
newValue = MIN_FADE;
if (newValue > MAX_FADE)
newValue = MAX_FADE;
- mParent->mFadeDownLenBox->SetValue(
+ mParent->mInnerFadeDownLenBox->SetValue(
Internat::ToDisplayString(newValue));
break;
- case fadeUp:
+ case innerFadeUp:
newValue = ((double)(FADE_UP_START - evt.GetX())) / FADE_SCALE;
if (newValue < MIN_FADE)
newValue = MIN_FADE;
if (newValue > MAX_FADE)
newValue = MAX_FADE;
- mParent->mFadeUpLenBox->SetValue(
+ mParent->mInnerFadeUpLenBox->SetValue(
Internat::ToDisplayString(newValue));
break;
case duckAmount:
Index: AutoDuck.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/AutoDuck.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- AutoDuck.h 26 Jan 2007 11:06:17 -0000 1.1
+++ AutoDuck.h 26 Jan 2007 20:50:59 -0000 1.2
@@ -35,8 +35,10 @@
EffectAutoDuck* mEffect;
wxTextCtrl* mDuckAmountDbBox;
- wxTextCtrl* mFadeDownLenBox;
- wxTextCtrl* mFadeUpLenBox;
+ wxTextCtrl* mInnerFadeDownLenBox;
+ wxTextCtrl* mInnerFadeUpLenBox;
+ wxTextCtrl* mOuterFadeDownLenBox;
+ wxTextCtrl* mOuterFadeUpLenBox;
wxTextCtrl* mThresholdDbBox;
wxTextCtrl* mMaximumPauseBox;
EffectAutoDuckPanel* mPanel;
@@ -44,7 +46,7 @@
DECLARE_EVENT_TABLE()
};
-#define AUTO_DUCK_PANEL_NUM_CONTROL_POINTS 3
+#define AUTO_DUCK_PANEL_NUM_CONTROL_POINTS 5
class EffectAutoDuckPanel: public wxPanel
{
@@ -55,8 +57,10 @@
private:
enum EControlPoint
{
- fadeDown = 0,
- fadeUp,
+ innerFadeDown = 0,
+ outerFadeDown,
+ innerFadeUp,
+ outerFadeUp,
duckAmount,
none = 99,
};
@@ -110,8 +114,10 @@
bool ApplyDuckFade(int trackNumber, WaveTrack* t, double t0, double t1);
double mDuckAmountDb;
- double mFadeDownLen;
- double mFadeUpLen;
+ double mInnerFadeDownLen;
+ double mInnerFadeUpLen;
+ double mOuterFadeDownLen;
+ double mOuterFadeUpLen;
double mThresholdDb;
double mMaximumPause;
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs