mirror of
https://github.com/cookiengineer/audacity
synced 2025-09-18 17:10:55 +02:00
Remove 'CS' from preset storage.
Make default normalization level -1.0dB. Disallow norm level >0dB. If level read from pref is +ve, make it -ve. Add checking for various illegal OK/Preview combinations. Validate input on a numeric input field.
This commit is contained in:
parent
40f82c962c
commit
6bd56a5471
@ -53,12 +53,14 @@ static double gFrameSum; //lda odd ... having this as member var crashed on exit
|
|||||||
|
|
||||||
bool EffectNormalize::Init()
|
bool EffectNormalize::Init()
|
||||||
{
|
{
|
||||||
int boolProxy = gPrefs->Read(wxT("/CsPresets/Norm_AmpDbGain"), 1);
|
int boolProxy = gPrefs->Read(wxT("/Presets/Norm_AmpDbGain"), 1);
|
||||||
mGain = (boolProxy == 1);
|
mGain = (boolProxy == 1);
|
||||||
boolProxy = gPrefs->Read(wxT("/CsPresets/Norm_RemoveDcOffset"), 1);
|
boolProxy = gPrefs->Read(wxT("/Presets/Norm_RemoveDcOffset"), 1);
|
||||||
mDC = (boolProxy == 1);
|
mDC = (boolProxy == 1);
|
||||||
gPrefs->Read(wxT("/CsPresets/Norm_Level"), &mLevel, 0.0);
|
gPrefs->Read(wxT("/Presets/Norm_Level"), &mLevel, -1.0);
|
||||||
boolProxy = gPrefs->Read(wxT("/CsPresets/Norm_StereoIndependent"), 0L);
|
if(mLevel > 0.0)
|
||||||
|
mLevel = -mLevel;
|
||||||
|
boolProxy = gPrefs->Read(wxT("/Presets/Norm_StereoIndependent"), 0L);
|
||||||
mStereoInd = (boolProxy == 1);
|
mStereoInd = (boolProxy == 1);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -131,10 +133,10 @@ bool EffectNormalize::PromptUser()
|
|||||||
mDC = dlog.mDC;
|
mDC = dlog.mDC;
|
||||||
mLevel = dlog.mLevel;
|
mLevel = dlog.mLevel;
|
||||||
mStereoInd = dlog.mStereoInd;
|
mStereoInd = dlog.mStereoInd;
|
||||||
gPrefs->Write(wxT("/CsPresets/Norm_AmpDbGain"), mGain);
|
gPrefs->Write(wxT("/Presets/Norm_AmpDbGain"), mGain);
|
||||||
gPrefs->Write(wxT("/CsPresets/Norm_RemoveDcOffset"), mDC);
|
gPrefs->Write(wxT("/Presets/Norm_RemoveDcOffset"), mDC);
|
||||||
gPrefs->Write(wxT("/CsPresets/Norm_Level"), mLevel);
|
gPrefs->Write(wxT("/Presets/Norm_Level"), mLevel);
|
||||||
gPrefs->Write(wxT("/CsPresets/Norm_StereoIndependent"), mStereoInd);
|
gPrefs->Write(wxT("/Presets/Norm_StereoIndependent"), mStereoInd);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -338,11 +340,15 @@ void EffectNormalize::ProcessData(float *buffer, sampleCount len)
|
|||||||
// NormalizeDialog
|
// NormalizeDialog
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
#define ID_NORMALIZE_AMPLITUDE 10002
|
#define ID_DC_REMOVE 10002
|
||||||
|
#define ID_NORMALIZE_AMPLITUDE 10003
|
||||||
|
#define ID_LEVEL_TEXT 10004
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(NormalizeDialog, EffectDialog)
|
BEGIN_EVENT_TABLE(NormalizeDialog, EffectDialog)
|
||||||
|
EVT_CHECKBOX(ID_DC_REMOVE, NormalizeDialog::OnUpdateUI)
|
||||||
EVT_CHECKBOX(ID_NORMALIZE_AMPLITUDE, NormalizeDialog::OnUpdateUI)
|
EVT_CHECKBOX(ID_NORMALIZE_AMPLITUDE, NormalizeDialog::OnUpdateUI)
|
||||||
EVT_BUTTON(ID_EFFECT_PREVIEW, NormalizeDialog::OnPreview)
|
EVT_BUTTON(ID_EFFECT_PREVIEW, NormalizeDialog::OnPreview)
|
||||||
|
EVT_TEXT(ID_LEVEL_TEXT, NormalizeDialog::OnUpdateUI)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
NormalizeDialog::NormalizeDialog(EffectNormalize *effect,
|
NormalizeDialog::NormalizeDialog(EffectNormalize *effect,
|
||||||
@ -360,6 +366,8 @@ NormalizeDialog::NormalizeDialog(EffectNormalize *effect,
|
|||||||
|
|
||||||
void NormalizeDialog::PopulateOrExchange(ShuttleGui & S)
|
void NormalizeDialog::PopulateOrExchange(ShuttleGui & S)
|
||||||
{
|
{
|
||||||
|
wxTextValidator vld(wxFILTER_NUMERIC);
|
||||||
|
|
||||||
S.StartHorizontalLay(wxCENTER, false);
|
S.StartHorizontalLay(wxCENTER, false);
|
||||||
{
|
{
|
||||||
S.AddTitle(_("by Dominic Mazzoni"));
|
S.AddTitle(_("by Dominic Mazzoni"));
|
||||||
@ -376,20 +384,21 @@ void NormalizeDialog::PopulateOrExchange(ShuttleGui & S)
|
|||||||
{
|
{
|
||||||
S.StartVerticalLay(false);
|
S.StartVerticalLay(false);
|
||||||
{
|
{
|
||||||
mDCCheckBox = S.AddCheckBox(_("Remove any DC offset (center on 0.0 vertically)"),
|
mDCCheckBox = S.Id(ID_DC_REMOVE).AddCheckBox(_("Remove any DC offset (center on 0.0 vertically)"),
|
||||||
mDC ? wxT("true") : wxT("false"));
|
mDC ? wxT("true") : wxT("false"));
|
||||||
|
|
||||||
mGainCheckBox = S.Id(ID_NORMALIZE_AMPLITUDE).AddCheckBox(_("Normalize maximum amplitude to:"),
|
mGainCheckBox = S.Id(ID_NORMALIZE_AMPLITUDE).AddCheckBox(_("Normalize maximum amplitude to:"),
|
||||||
mGain ? wxT("true") : wxT("false"));
|
mGain ? wxT("true") : wxT("false"));
|
||||||
|
|
||||||
S.StartHorizontalLay(wxALIGN_LEFT, false);
|
S.StartHorizontalLay(wxALIGN_CENTER, false);
|
||||||
{
|
{
|
||||||
mLevelTextCtrl = S.AddTextBox(wxT(""),
|
mLevelTextCtrl = S.Id(ID_LEVEL_TEXT).AddTextBox(wxT(""), wxT(""), 10);
|
||||||
Internat::ToString(mLevel, 1),
|
mLevelTextCtrl->SetValidator(vld);
|
||||||
10);
|
|
||||||
mLevelTextCtrl->SetName(_("Maximum amplitude dB"));
|
mLevelTextCtrl->SetName(_("Maximum amplitude dB"));
|
||||||
mLeveldB = S.AddVariableText(_("dB"), false,
|
mLeveldB = S.AddVariableText(_("dB"), false,
|
||||||
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
|
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
|
||||||
|
mWarning = S.AddVariableText( wxT(""), false,
|
||||||
|
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
|
||||||
}
|
}
|
||||||
S.EndHorizontalLay();
|
S.EndHorizontalLay();
|
||||||
mStereoIndCheckBox = S.AddCheckBox(_("Normalize stereo channels independently"),
|
mStereoIndCheckBox = S.AddCheckBox(_("Normalize stereo channels independently"),
|
||||||
@ -431,10 +440,39 @@ void NormalizeDialog::OnUpdateUI(wxCommandEvent& evt)
|
|||||||
|
|
||||||
void NormalizeDialog::UpdateUI()
|
void NormalizeDialog::UpdateUI()
|
||||||
{
|
{
|
||||||
|
// Disallow level stuff if not normalizing
|
||||||
bool enable = mGainCheckBox->GetValue();
|
bool enable = mGainCheckBox->GetValue();
|
||||||
mLevelTextCtrl->Enable(enable);
|
mLevelTextCtrl->Enable(enable);
|
||||||
mLeveldB->Enable(enable);
|
mLeveldB->Enable(enable);
|
||||||
mStereoIndCheckBox->Enable(enable);
|
mStereoIndCheckBox->Enable(enable);
|
||||||
|
|
||||||
|
// Disallow OK/Preview if doing nothing
|
||||||
|
wxButton *ok = (wxButton *) FindWindow(wxID_OK);
|
||||||
|
wxButton *preview = (wxButton *) FindWindow(ID_EFFECT_PREVIEW);
|
||||||
|
bool dc = mDCCheckBox->GetValue();
|
||||||
|
if( !enable && !dc )
|
||||||
|
{
|
||||||
|
ok->Enable(false);
|
||||||
|
preview->Enable(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ok->Enable(true);
|
||||||
|
preview->Enable(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Disallow OK/Preview if requested level is > 0
|
||||||
|
wxString val = mLevelTextCtrl->GetValue();
|
||||||
|
double r;
|
||||||
|
val.ToDouble(&r);
|
||||||
|
if(r > 0.0)
|
||||||
|
{
|
||||||
|
ok->Enable(false);
|
||||||
|
preview->Enable(false);
|
||||||
|
mWarning->SetLabel(_(". Maximum 0dB."));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
mWarning->SetLabel(wxT(""));
|
||||||
}
|
}
|
||||||
|
|
||||||
void NormalizeDialog::OnPreview(wxCommandEvent &event)
|
void NormalizeDialog::OnPreview(wxCommandEvent &event)
|
||||||
|
@ -115,6 +115,7 @@ class NormalizeDialog: public EffectDialog
|
|||||||
wxCheckBox *mDCCheckBox;
|
wxCheckBox *mDCCheckBox;
|
||||||
wxTextCtrl *mLevelTextCtrl;
|
wxTextCtrl *mLevelTextCtrl;
|
||||||
wxStaticText *mLeveldB;
|
wxStaticText *mLeveldB;
|
||||||
|
wxStaticText *mWarning;
|
||||||
wxCheckBox *mStereoIndCheckBox;
|
wxCheckBox *mStereoIndCheckBox;
|
||||||
|
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user