From 27657ddea7034a9ad32f2b6d530a4eaebbe12607 Mon Sep 17 00:00:00 2001 From: Leland Lucius Date: Mon, 27 Apr 2015 10:52:42 -0500 Subject: [PATCH] Restore non-preset values when Factory Preset -> Defaults is selected --- src/effects/ChangePitch.cpp | 33 +++++----- src/effects/ChangePitch.h | 1 + src/effects/ChangeSpeed.cpp | 14 ++++- src/effects/ChangeSpeed.h | 1 + src/effects/Equalization.cpp | 115 ++++++++++++++++++++--------------- src/effects/Equalization.h | 3 + 6 files changed, 101 insertions(+), 66 deletions(-) diff --git a/src/effects/ChangePitch.cpp b/src/effects/ChangePitch.cpp index 00d3d7364..29d8eb894 100644 --- a/src/effects/ChangePitch.cpp +++ b/src/effects/ChangePitch.cpp @@ -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 diff --git a/src/effects/ChangePitch.h b/src/effects/ChangePitch.h index b173f265c..5accb4545 100644 --- a/src/effects/ChangePitch.h +++ b/src/effects/ChangePitch.h @@ -52,6 +52,7 @@ public: virtual bool GetAutomationParameters(EffectAutomationParameters & parms); virtual bool SetAutomationParameters(EffectAutomationParameters & parms); + virtual bool LoadFactoryDefaults(); // Effect implementation diff --git a/src/effects/ChangeSpeed.cpp b/src/effects/ChangeSpeed.cpp index 67747b0d1..7209f2003 100644 --- a/src/effects/ChangeSpeed.cpp +++ b/src/effects/ChangeSpeed.cpp @@ -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; diff --git a/src/effects/ChangeSpeed.h b/src/effects/ChangeSpeed.h index aeb67b4fe..3f449c23b 100644 --- a/src/effects/ChangeSpeed.h +++ b/src/effects/ChangeSpeed.h @@ -47,6 +47,7 @@ public: virtual bool GetAutomationParameters(EffectAutomationParameters & parms); virtual bool SetAutomationParameters(EffectAutomationParameters & parms); + virtual bool LoadFactoryDefaults(); // Effect implementation diff --git a/src/effects/Equalization.cpp b/src/effects/Equalization.cpp index 141cdb9e3..f2d8f3ede 100644 --- a/src/effects/Equalization.cpp +++ b/src/effects/Equalization.cpp @@ -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;jDelete(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;jDelete(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; } diff --git a/src/effects/Equalization.h b/src/effects/Equalization.h index 12a9990de..cb8e2d363 100644 --- a/src/effects/Equalization.h +++ b/src/effects/Equalization.h @@ -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);