Restore non-preset values when Factory Preset -> Defaults is selected
This commit is contained in:
parent
7407243e25
commit
27657ddea7
|
@ -139,6 +139,13 @@ bool EffectChangePitch::SetAutomationParameters(EffectAutomationParameters & par
|
|||
return true;
|
||||
}
|
||||
|
||||
bool EffectChangePitch::LoadFactoryDefaults()
|
||||
{
|
||||
DeduceFrequencies();
|
||||
|
||||
return Effect::LoadFactoryDefaults();
|
||||
}
|
||||
|
||||
// Effect implementation
|
||||
|
||||
bool EffectChangePitch::Init()
|
||||
|
@ -174,20 +181,6 @@ void EffectChangePitch::PopulateOrExchange(ShuttleGui & S)
|
|||
{
|
||||
DeduceFrequencies(); // Set frequency-related control values based on sample.
|
||||
|
||||
// effect parameters
|
||||
double dFromMIDInote = FreqToMIDInote(m_dStartFrequency);
|
||||
double dToMIDInote = dFromMIDInote + m_dSemitonesChange;
|
||||
m_nFromPitch = PitchIndex(dFromMIDInote);
|
||||
m_nFromOctave = PitchOctave(dFromMIDInote);
|
||||
m_nToPitch = PitchIndex(dToMIDInote);
|
||||
m_nToOctave = PitchOctave(dToMIDInote);
|
||||
|
||||
m_dSemitonesChange = m_dSemitonesChange;
|
||||
|
||||
m_FromFrequency = m_dStartFrequency;
|
||||
Calc_PercentChange();
|
||||
Calc_ToFrequency();
|
||||
|
||||
wxArrayString pitch;
|
||||
pitch.Add(wxT("C"));
|
||||
pitch.Add(wxT("C#/Db"));
|
||||
|
@ -315,6 +308,7 @@ bool EffectChangePitch::TransferDataToWindow()
|
|||
Update_Spin_FromOctave();
|
||||
Update_Spin_ToOctave();
|
||||
Update_Text_SemitonesChange();
|
||||
Update_Text_FromFrequency();
|
||||
Update_Text_ToFrequency();
|
||||
Update_Text_PercentChange();
|
||||
Update_Slider_PercentChange();
|
||||
|
@ -408,6 +402,17 @@ void EffectChangePitch::DeduceFrequencies()
|
|||
lag = (windowSize/2 - 1) - argmax;
|
||||
m_dStartFrequency = rate / lag;
|
||||
}
|
||||
|
||||
double dFromMIDInote = FreqToMIDInote(m_dStartFrequency);
|
||||
double dToMIDInote = dFromMIDInote + m_dSemitonesChange;
|
||||
m_nFromPitch = PitchIndex(dFromMIDInote);
|
||||
m_nFromOctave = PitchOctave(dFromMIDInote);
|
||||
m_nToPitch = PitchIndex(dToMIDInote);
|
||||
m_nToOctave = PitchOctave(dToMIDInote);
|
||||
|
||||
m_FromFrequency = m_dStartFrequency;
|
||||
Calc_PercentChange();
|
||||
Calc_ToFrequency();
|
||||
}
|
||||
|
||||
// calculations
|
||||
|
|
|
@ -52,6 +52,7 @@ public:
|
|||
|
||||
virtual bool GetAutomationParameters(EffectAutomationParameters & parms);
|
||||
virtual bool SetAutomationParameters(EffectAutomationParameters & parms);
|
||||
virtual bool LoadFactoryDefaults();
|
||||
|
||||
// Effect implementation
|
||||
|
||||
|
|
|
@ -139,6 +139,14 @@ bool EffectChangeSpeed::SetAutomationParameters(EffectAutomationParameters & par
|
|||
return true;
|
||||
}
|
||||
|
||||
bool EffectChangeSpeed::LoadFactoryDefaults()
|
||||
{
|
||||
mFromVinyl = kVinyl_33AndAThird;
|
||||
mFormat = _("hh:mm:ss + milliseconds");
|
||||
|
||||
return Effect::LoadFactoryDefaults();
|
||||
}
|
||||
|
||||
// Effect implementation
|
||||
|
||||
bool EffectChangeSpeed::CheckWhetherSkipEffect()
|
||||
|
@ -275,6 +283,9 @@ bool EffectChangeSpeed::Process()
|
|||
|
||||
void EffectChangeSpeed::PopulateOrExchange(ShuttleGui & S)
|
||||
{
|
||||
GetPrivateConfig(GetCurrentSettingsGroup(), wxT("TimeFormat"), mFormat, mFormat);
|
||||
GetPrivateConfig(GetCurrentSettingsGroup(), wxT("VinylChoice"), mFromVinyl, mFromVinyl);
|
||||
|
||||
S.SetBorder(5);
|
||||
|
||||
S.StartVerticalLay(0);
|
||||
|
@ -394,9 +405,6 @@ bool EffectChangeSpeed::TransferDataToWindow()
|
|||
return false;
|
||||
}
|
||||
|
||||
GetPrivateConfig(GetCurrentSettingsGroup(), wxT("TimeFormat"), mFormat, mFormat);
|
||||
GetPrivateConfig(GetCurrentSettingsGroup(), wxT("VinylChoice"), mFromVinyl, mFromVinyl);
|
||||
|
||||
if (mFromVinyl == kVinyl_NA)
|
||||
{
|
||||
mFromVinyl = kVinyl_33AndAThird;
|
||||
|
|
|
@ -47,6 +47,7 @@ public:
|
|||
|
||||
virtual bool GetAutomationParameters(EffectAutomationParameters & parms);
|
||||
virtual bool SetAutomationParameters(EffectAutomationParameters & parms);
|
||||
virtual bool LoadFactoryDefaults();
|
||||
|
||||
// Effect implementation
|
||||
|
||||
|
|
|
@ -376,6 +376,16 @@ bool EffectEqualization::SetAutomationParameters(EffectAutomationParameters & pa
|
|||
return true;
|
||||
}
|
||||
|
||||
bool EffectEqualization::LoadFactoryDefaults()
|
||||
{
|
||||
mdBMin = DEF_dBMin;
|
||||
mdBMax = DEF_dBMax;
|
||||
mDrawMode = DEF_DrawMode;
|
||||
mDrawGrid = DEF_DrawGrid;
|
||||
|
||||
return Effect::LoadFactoryDefaults();
|
||||
}
|
||||
|
||||
// EffectUIClientInterface implementation
|
||||
|
||||
bool EffectEqualization::ValidateUI()
|
||||
|
@ -895,6 +905,7 @@ bool EffectEqualization::TransferDataToWindow()
|
|||
if (mDrawMode)
|
||||
{
|
||||
mDraw->SetValue(true);
|
||||
UpdateDraw();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1841,6 +1852,60 @@ void EffectEqualization::LayoutEQSliders()
|
|||
mUIParent->RefreshRect(wxRect(szrG->GetPosition(), szrGSize));
|
||||
}
|
||||
|
||||
void EffectEqualization::UpdateDraw()
|
||||
{
|
||||
int numPoints = mLogEnvelope->GetNumberOfPoints();
|
||||
double *when = new double[ numPoints ];
|
||||
double *value = new double[ numPoints ];
|
||||
double deltadB = 0.1;
|
||||
double dx, dy, dx1, dy1, err;
|
||||
|
||||
mLogEnvelope->GetPoints( when, value, numPoints );
|
||||
|
||||
// set 'unnamed' as the selected curve
|
||||
EnvelopeUpdated();
|
||||
|
||||
bool flag = true;
|
||||
while (flag)
|
||||
{
|
||||
flag = false;
|
||||
int numDeleted = 0;
|
||||
mLogEnvelope->GetPoints( when, value, numPoints );
|
||||
for(int j=0;j<numPoints-2;j++)
|
||||
{
|
||||
dx = when[j+2+numDeleted] - when[j+numDeleted];
|
||||
dy = value[j+2+numDeleted] - value[j+numDeleted];
|
||||
dx1 = when[j+numDeleted+1] - when[j+numDeleted];
|
||||
dy1 = dy * dx1 / dx;
|
||||
err = fabs(value[j+numDeleted+1] - (value[j+numDeleted] + dy1));
|
||||
if( err < deltadB )
|
||||
{ // within < deltadB dB?
|
||||
mLogEnvelope->Delete(j+1);
|
||||
numPoints--;
|
||||
numDeleted++;
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
delete [] when;
|
||||
delete [] value;
|
||||
|
||||
if(mLin)
|
||||
{
|
||||
EnvLogToLin();
|
||||
mEnvelope = mLinEnvelope;
|
||||
mFreqRuler->ruler.SetLog(false);
|
||||
mFreqRuler->ruler.SetRange(0, mHiFreq);
|
||||
}
|
||||
|
||||
szrV->Show(szrG,false);
|
||||
szrH->Show(szrI,false);
|
||||
szrH->Show(szrL,true);
|
||||
mUIParent->Layout();
|
||||
wxGetTopLevelParent(mUIParent)->Layout();
|
||||
mPanel->ForceRecalc(); // it may have changed slightly due to the deletion of points
|
||||
}
|
||||
|
||||
void EffectEqualization::UpdateGraphic()
|
||||
{
|
||||
double loLog = log10(mLoFreq);
|
||||
|
@ -2323,56 +2388,8 @@ void EffectEqualization::OnInterp(wxCommandEvent & WXUNUSED(event))
|
|||
|
||||
void EffectEqualization::OnDrawMode(wxCommandEvent & WXUNUSED(event))
|
||||
{
|
||||
int numPoints = mLogEnvelope->GetNumberOfPoints();
|
||||
double *when = new double[ numPoints ];
|
||||
double *value = new double[ numPoints ];
|
||||
double deltadB = 0.1;
|
||||
double dx, dy, dx1, dy1, err;
|
||||
UpdateDraw();
|
||||
|
||||
mLogEnvelope->GetPoints( when, value, numPoints );
|
||||
|
||||
// set 'unnamed' as the selected curve
|
||||
EnvelopeUpdated();
|
||||
|
||||
bool flag = true;
|
||||
while (flag)
|
||||
{
|
||||
flag = false;
|
||||
int numDeleted = 0;
|
||||
mLogEnvelope->GetPoints( when, value, numPoints );
|
||||
for(int j=0;j<numPoints-2;j++)
|
||||
{
|
||||
dx = when[j+2+numDeleted] - when[j+numDeleted];
|
||||
dy = value[j+2+numDeleted] - value[j+numDeleted];
|
||||
dx1 = when[j+numDeleted+1] - when[j+numDeleted];
|
||||
dy1 = dy * dx1 / dx;
|
||||
err = fabs(value[j+numDeleted+1] - (value[j+numDeleted] + dy1));
|
||||
if( err < deltadB )
|
||||
{ // within < deltadB dB?
|
||||
mLogEnvelope->Delete(j+1);
|
||||
numPoints--;
|
||||
numDeleted++;
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
delete [] when;
|
||||
delete [] value;
|
||||
|
||||
if(mLin)
|
||||
{
|
||||
EnvLogToLin();
|
||||
mEnvelope = mLinEnvelope;
|
||||
mFreqRuler->ruler.SetLog(false);
|
||||
mFreqRuler->ruler.SetRange(0, mHiFreq);
|
||||
}
|
||||
|
||||
szrV->Show(szrG,false);
|
||||
szrH->Show(szrI,false);
|
||||
szrH->Show(szrL,true);
|
||||
mUIParent->Layout();
|
||||
wxGetTopLevelParent(mUIParent)->Layout();
|
||||
mPanel->ForceRecalc(); // it may have changed slightly due to the deletion of points
|
||||
mDrawMode = true;
|
||||
}
|
||||
|
||||
|
|
|
@ -101,6 +101,7 @@ public:
|
|||
|
||||
virtual bool GetAutomationParameters(EffectAutomationParameters & parms);
|
||||
virtual bool SetAutomationParameters(EffectAutomationParameters & parms);
|
||||
virtual bool LoadFactoryDefaults();
|
||||
|
||||
// EffectUIClientInterface implementation
|
||||
|
||||
|
@ -149,6 +150,8 @@ private:
|
|||
XMLTagHandler *HandleXMLChild(const wxChar *tag);
|
||||
void WriteXML(XMLWriter &xmlFile);
|
||||
|
||||
void UpdateDraw();
|
||||
|
||||
void LayoutEQSliders();
|
||||
void UpdateGraphic(void);
|
||||
void EnvLogToLin(void);
|
||||
|
|
Loading…
Reference in New Issue