bool EffectChangeSpeed::TransferDataToWindow() { mbLoopDetect = true; if (!mUIParent->TransferDataToWindow()) { return false; } if (mFromVinyl == kVinyl_NA) { mFromVinyl = kVinyl_33AndAThird; } Update_Text_PercentChange(); Update_Text_Multiplier(); Update_Slider_PercentChange(); Update_TimeCtrl_ToLength(); // Set from/to Vinyl controls - mFromVinyl must be set first. mpChoice_FromVinyl->SetSelection(mFromVinyl); // Then update to get correct mToVinyl. Update_Vinyl(); // Then update ToVinyl control. mpChoice_ToVinyl->SetSelection(mToVinyl); // Set From Length control. // Set the format first so we can get sample accuracy. mpFromLengthCtrl->SetFormatName(mFormat); mpFromLengthCtrl->SetValue(mFromLength); mbLoopDetect = false; return true; }
void EffectChangeSpeed::OnText_PercentChange(wxCommandEvent & WXUNUSED(evt)) { if (mbLoopDetect) return; mpTextCtrl_PercentChange->GetValidator()->TransferFromWindow(); UpdateUI(); mbLoopDetect = true; Update_Text_Multiplier(); Update_Slider_PercentChange(); Update_Vinyl(); Update_TimeCtrl_ToLength(); mbLoopDetect = false; }
void EffectChangeSpeed::OnSlider_PercentChange(wxCommandEvent & WXUNUSED(evt)) { if (mbLoopDetect) return; m_PercentChange = (double)(mpSlider_PercentChange->GetValue()); // Warp positive values to actually go up faster & further than negatives. if (m_PercentChange > 0.0) m_PercentChange = pow(m_PercentChange, kSliderWarp); UpdateUI(); mbLoopDetect = true; Update_Text_PercentChange(); Update_Text_Multiplier(); Update_Vinyl(); Update_TimeCtrl_ToLength(); mbLoopDetect = false; }
void EffectChangeSpeed::OnTimeCtrl_ToLength(wxCommandEvent & WXUNUSED(evt)) { if (mbLoopDetect) return; mToLength = mpToLengthCtrl->GetValue(); m_PercentChange = ((mFromLength * 100.0) / mToLength) - 100.0; UpdateUI(); mbLoopDetect = true; Update_Text_PercentChange(); Update_Text_Multiplier(); Update_Slider_PercentChange(); Update_Vinyl(); mbLoopDetect = false; }
void EffectChangeSpeed::OnTimeCtrl_ToLength(wxCommandEvent & WXUNUSED(evt)) { if (mbLoopDetect) return; mToLength = mpToLengthCtrl->GetValue(); // Division by (double) 0.0 is not an error and we want to show "infinite" in // text controls, so take care that we handle infinite values when they occur. m_PercentChange = ((mFromLength * 100.0) / mToLength) - 100.0; UpdateUI(); mbLoopDetect = true; Update_Text_PercentChange(); Update_Text_Multiplier(); Update_Slider_PercentChange(); Update_Vinyl(); mbLoopDetect = false; }
void EffectChangeSpeed::OnChoice_Vinyl(wxCommandEvent & WXUNUSED(evt)) { // Treat mpChoice_FromVinyl and mpChoice_ToVinyl as one control since we need // both to calculate Percent Change. mFromVinyl = mpChoice_FromVinyl->GetSelection(); mToVinyl = mpChoice_ToVinyl->GetSelection(); // Use this as the 'preferred' choice. if (mFromVinyl != kVinyl_NA) { SetPrivateConfig(GetCurrentSettingsGroup(), wxT("VinylChoice"), mFromVinyl); } // If mFromVinyl & mToVinyl are set, then there's a NEW percent change. if ((mFromVinyl != kVinyl_NA) && (mToVinyl != kVinyl_NA)) { double fromRPM; double toRPM; switch (mFromVinyl) { default: case kVinyl_33AndAThird: fromRPM = 33.0 + (1.0 / 3.0); break; case kVinyl_45: fromRPM = 45.0; break; case kVinyl_78: fromRPM = 78; break; } switch (mToVinyl) { default: case kVinyl_33AndAThird: toRPM = 33.0 + (1.0 / 3.0); break; case kVinyl_45: toRPM = 45.0; break; case kVinyl_78: toRPM = 78; break; } m_PercentChange = ((toRPM * 100.0) / fromRPM) - 100.0; UpdateUI(); mbLoopDetect = true; Update_Text_PercentChange(); Update_Text_Multiplier(); Update_Slider_PercentChange(); Update_TimeCtrl_ToLength(); } mbLoopDetect = false; }