void EffectChangePitch::OnSpin_ToOctave(wxCommandEvent & WXUNUSED(evt)) { if (m_bLoopDetect) return; int nNewValue = m_pSpin_ToOctave->GetValue(); // Validation: Rather than set a range for octave numbers, enforce a range that // keeps m_dPercentChange above -99%, per Soundtouch constraints. if ((nNewValue + 3) < m_nFromOctave) { ::wxBell(); m_pSpin_ToOctave->SetValue(m_nFromOctave - 3); return; } m_nToOctave = nNewValue; m_ToFrequency = PitchToFreq(m_nToPitch, m_nToOctave); Calc_SemitonesChange_fromPitches(); Calc_PercentChange(); // Call *after* m_dSemitonesChange is updated. m_bLoopDetect = true; { Update_Text_SemitonesChange(); Update_Text_ToFrequency(); Update_Text_PercentChange(); Update_Slider_PercentChange(); } m_bLoopDetect = false; }
void EffectChangePitch::OnChoice_ToPitch(wxCommandEvent & WXUNUSED(evt)) { if (m_bLoopDetect) return; m_nToPitch = m_pChoice_ToPitch->GetSelection(); Calc_SemitonesChange_fromPitches(); Calc_PercentChange(); // Call *after* m_dSemitonesChange is updated. Calc_ToFrequency(); // Call *after* m_dPercentChange is updated. m_bLoopDetect = true; { Update_Text_SemitonesChange(); Update_Text_ToFrequency(); Update_Text_PercentChange(); Update_Slider_PercentChange(); } m_bLoopDetect = false; }