void EffectChangePitch::OnSlider_PercentChange(wxCommandEvent & WXUNUSED(evt)) { if (m_bLoopDetect) return; m_dPercentChange = (double)(m_pSlider_PercentChange->GetValue()); // Warp positive values to actually go up faster & further than negatives. if (m_dPercentChange > 0.0) m_dPercentChange = pow(m_dPercentChange, kSliderWarp); Calc_SemitonesChange_fromPercentChange(); Calc_ToPitch(); // Call *after* m_dSemitonesChange is updated. Calc_ToFrequency(); Calc_ToOctave(); // Call after Calc_ToFrequency(). m_bLoopDetect = true; { Update_Choice_ToPitch(); Update_Spin_ToOctave(); Update_Text_SemitonesChange(); Update_Text_ToFrequency(); Update_Text_PercentChange(); } m_bLoopDetect = false; }
void EffectChangePitch::OnText_PercentChange(wxCommandEvent & WXUNUSED(evt)) { if (m_bLoopDetect) return; if (!m_pTextCtrl_PercentChange->GetValidator()->TransferFromWindow()) { EnableApply(false); return; } Calc_SemitonesChange_fromPercentChange(); Calc_ToPitch(); // Call *after* m_dSemitonesChange is updated. Calc_ToFrequency(); Calc_ToOctave(); // Call after Calc_ToFrequency(). m_bLoopDetect = true; { Update_Choice_ToPitch(); Update_Spin_ToOctave(); Update_Text_SemitonesChange(); Update_Text_ToFrequency(); Update_Slider_PercentChange(); } m_bLoopDetect = false; // Success. Make sure OK and Preview are enabled, in case we disabled above during editing. EnableApply(true); }
bool EffectChangePitch::TransferDataToWindow() { m_bLoopDetect = true; if (!mUIParent->TransferDataToWindow()) { return false; } Calc_SemitonesChange_fromPercentChange(); Calc_ToPitch(); // Call *after* m_dSemitonesChange is updated. Calc_ToFrequency(); Calc_ToOctave(); // Call after Calc_ToFrequency(). Update_Choice_FromPitch(); Update_Choice_ToPitch(); Update_Spin_FromOctave(); Update_Spin_ToOctave(); Update_Text_SemitonesChange(); Update_Text_FromFrequency(); Update_Text_ToFrequency(); Update_Text_PercentChange(); Update_Slider_PercentChange(); m_bLoopDetect = false; return true; }
bool EffectChangePitch::SetAutomationParameters(EffectAutomationParameters & parms) { // Vaughan, 2013-06: Long lost to history, I don't see why m_dPercentChange was chosen to be shuttled. // Only m_dSemitonesChange is used in Process(). ReadAndVerifyDouble(Percentage); m_dPercentChange = Percentage; Calc_SemitonesChange_fromPercentChange(); return true; }
bool EffectChangePitch::SetAutomationParameters(CommandParameters & parms) { // Vaughan, 2013-06: Long lost to history, I don't see why m_dPercentChange was chosen to be shuttled. // Only m_dSemitonesChange is used in Process(). ReadAndVerifyDouble(Percentage); m_dPercentChange = Percentage; Calc_SemitonesChange_fromPercentChange(); #if USE_SBSMS ReadAndVerifyBool(UseSBSMS); mUseSBSMS = UseSBSMS; #else mUseSBSMS = false; #endif return true; }
void EffectChangePitch::OnText_ToFrequency(wxCommandEvent & WXUNUSED(evt)) { if (m_bLoopDetect) return; // Empty string causes unpredictable results with ToDouble() and later calculations. // Non-positive frequency makes no sense, but user might still be editing, // so it's not an error, but we do not want to update the values/controls. if (!m_pTextCtrl_ToFrequency->GetValidator()->TransferFromWindow()) { EnableApply(false); return; } m_dPercentChange = ((m_ToFrequency * 100.0) / m_FromFrequency) - 100.0; Calc_ToOctave(); // Call after Calc_ToFrequency(). Calc_SemitonesChange_fromPercentChange(); Calc_ToPitch(); // Call *after* m_dSemitonesChange is updated. m_bLoopDetect = true; { Update_Choice_ToPitch(); Update_Spin_ToOctave(); Update_Text_SemitonesChange(); Update_Text_PercentChange(); Update_Slider_PercentChange(); } m_bLoopDetect = false; // Success. Make sure OK and Preview are disabled if percent change is out of bounds. // Can happen while editing. // If the value is good, might also need to re-enable because of above clause. bool bIsGoodValue = (m_dPercentChange > MIN_Percentage) && (m_dPercentChange <= MAX_Percentage); EnableApply(bIsGoodValue); }