bool EffectDtmf::Startup() { wxString base = wxT("/Effects/DtmfGen/"); // Migrate settings from 2.1.0 or before // Already migrated, so bail if (gPrefs->Exists(base + wxT("Migrated"))) { return true; } // Load the old "current" settings if (gPrefs->Exists(base)) { gPrefs->Read(base + wxT("String"), &dtmfSequence, wxT(SHORT_APP_NAME)); gPrefs->Read(base + wxT("DutyCycle"), &dtmfDutyCycle, 550L); gPrefs->Read(base + wxT("Amplitude"), &dtmfAmplitude, 0.8f); SaveUserPreset(GetCurrentSettingsGroup()); // Do not migrate again gPrefs->Write(base + wxT("Migrated"), true); gPrefs->Flush(); } return true; }
bool EffectCompressor::Startup() { wxString base = wxT("/Effects/Compressor/"); // Migrate settings from 2.1.0 or before // Already migrated, so bail if (gPrefs->Exists(base + wxT("Migrated"))) { return true; } // Load the old "current" settings if (gPrefs->Exists(base)) { gPrefs->Read(base + wxT("ThresholdDB"), &mThresholdDB, -12.0f ); gPrefs->Read(base + wxT("NoiseFloorDB"), &mNoiseFloorDB, -40.0f ); gPrefs->Read(base + wxT("Ratio"), &mRatio, 2.0f ); gPrefs->Read(base + wxT("AttackTime"), &mAttackTime, 0.2f ); gPrefs->Read(base + wxT("DecayTime"), &mDecayTime, 1.0f ); gPrefs->Read(base + wxT("Normalize"), &mNormalize, true ); gPrefs->Read(base + wxT("UsePeak"), &mUsePeak, false ); SaveUserPreset(GetCurrentSettingsGroup()); // Do not migrate again gPrefs->Write(base + wxT("Migrated"), true); gPrefs->Flush(); } return true; }
bool EffectNoise::Startup() { wxString base = wxT("/Effects/Noise/"); // Migrate settings from 2.1.0 or before // Already migrated, so bail if (gPrefs->Exists(base + wxT("Migrated"))) { return true; } // Load the old "current" settings if (gPrefs->Exists(base)) { gPrefs->Read(base + wxT("Type"), &mType, 0L); gPrefs->Read(base + wxT("Amplitude"), &mAmp, 0.8f); SaveUserPreset(GetCurrentSettingsGroup()); // Do not migrate again gPrefs->Write(base + wxT("Migrated"), true); gPrefs->Flush(); } return true; }
bool EffectAutoDuck::Startup() { wxString base = wxT("/Effects/AutoDuck/"); // Migrate settings from 2.1.0 or before // Already migrated, so bail if (gPrefs->Exists(base + wxT("Migrated"))) { return true; } // Load the old "current" settings if (gPrefs->Exists(base)) { gPrefs->Read(base + wxT("DuckAmountDb"), &mDuckAmountDb, DEF_DuckAmountDb); gPrefs->Read(base + wxT("InnerFadeDownLen"), &mInnerFadeDownLen, DEF_InnerFadeDownLen); gPrefs->Read(base + wxT("InnerFadeUpLen"), &mInnerFadeUpLen, DEF_InnerFadeUpLen); gPrefs->Read(base + wxT("OuterFadeDownLen"), &mOuterFadeDownLen, DEF_OuterFadeDownLen); gPrefs->Read(base + wxT("OuterFadeUpLen"), &mOuterFadeUpLen, DEF_OuterFadeUpLen); gPrefs->Read(base + wxT("ThresholdDb"), &mThresholdDb, DEF_ThresholdDb); gPrefs->Read(base + wxT("MaximumPause"), &mMaximumPause, DEF_MaximumPause); SaveUserPreset(GetCurrentSettingsGroup()); // Do not migrate again gPrefs->Write(base + wxT("Migrated"), true); gPrefs->Flush(); } return true; }
void EffectChangeSpeed::Update_Vinyl() // Update Vinyl controls from percent change. { // Match Vinyl rpm when within 0.01% of a standard ratio. // Ratios calculated as: ((toRPM / fromRPM) - 1) * 100 * 100 // Caution: m_PercentChange could be infinite int ratio = (int)((m_PercentChange * 100) + 0.5); switch (ratio) { case 0: // toRPM is the same as fromRPM if (mFromVinyl != kVinyl_NA) { mpChoice_ToVinyl->SetSelection(mpChoice_FromVinyl->GetSelection()); } else { // Use the last saved option. GetPrivateConfig(GetCurrentSettingsGroup(), wxT("VinylChoice"), mFromVinyl, 0); mpChoice_FromVinyl->SetSelection(mFromVinyl); mpChoice_ToVinyl->SetSelection(mFromVinyl); } break; case 3500: mpChoice_FromVinyl->SetSelection(kVinyl_33AndAThird); mpChoice_ToVinyl->SetSelection(kVinyl_45); break; case 13400: mpChoice_FromVinyl->SetSelection(kVinyl_33AndAThird); mpChoice_ToVinyl->SetSelection(kVinyl_78); break; case -2593: mpChoice_FromVinyl->SetSelection(kVinyl_45); mpChoice_ToVinyl->SetSelection(kVinyl_33AndAThird); break; case 7333: mpChoice_FromVinyl->SetSelection(kVinyl_45); mpChoice_ToVinyl->SetSelection(kVinyl_78); break; case -5727: mpChoice_FromVinyl->SetSelection(kVinyl_78); mpChoice_ToVinyl->SetSelection(kVinyl_33AndAThird); break; case -4231: mpChoice_FromVinyl->SetSelection(kVinyl_78); mpChoice_ToVinyl->SetSelection(kVinyl_45); break; default: mpChoice_ToVinyl->SetSelection(kVinyl_NA); } // and update variables. mFromVinyl = mpChoice_FromVinyl->GetSelection(); mToVinyl = mpChoice_ToVinyl->GetSelection(); }
bool EffectChangeSpeed::Startup() { wxString base = wxT("/Effects/ChangeSpeed/"); // Migrate settings from 2.1.0 or before // Already migrated, so bail if (gPrefs->Exists(base + wxT("Migrated"))) { return true; } // Load the old "current" settings if (gPrefs->Exists(base)) { // Retrieve last used control values gPrefs->Read(base + wxT("PercentChange"), &m_PercentChange, 0); // default format "4" is the same as the Selection toolbar: "hh:mm:ss + milliseconds"; gPrefs->Read(base + wxT("TimeFormat"), &mFormat, _("hh:mm:ss + milliseconds")); gPrefs->Read(base + wxT("VinylChoice"), &mFromVinyl, 0); if (mFromVinyl == kVinyl_NA) { mFromVinyl = kVinyl_33AndAThird; } SetPrivateConfig(GetCurrentSettingsGroup(), wxT("TimeFormat"), mFormat); SetPrivateConfig(GetCurrentSettingsGroup(), wxT("VinylChoice"), mFromVinyl); SaveUserPreset(GetCurrentSettingsGroup()); // Do not migrate again gPrefs->Write(base + wxT("Migrated"), true); gPrefs->Flush(); } return true; }
bool EffectTruncSilence::Startup() { wxString base = wxT("/Effects/TruncateSilence/"); // Migrate settings from 2.1.0 or before // Already migrated, so bail if (gPrefs->Exists(base + wxT("Migrated"))) { return true; } // Load the old "current" settings if (gPrefs->Exists(base)) { int truncDbChoiceIndex = gPrefs->Read(base + wxT("DbChoiceIndex"), 4L); if ((truncDbChoiceIndex < 0) || (truncDbChoiceIndex >= Enums::NumDbChoices)) { // corrupted Prefs? truncDbChoiceIndex = 4L; } mThresholdDB = enumToDB( truncDbChoiceIndex ); mActionIndex = gPrefs->Read(base + wxT("ProcessChoice"), 0L); if ((mActionIndex < 0) || (mActionIndex > 1)) { // corrupted Prefs? mActionIndex = 0L; } gPrefs->Read(base + wxT("InitialAllowedSilence"), &mInitialAllowedSilence, 0.5); if ((mInitialAllowedSilence < 0.001) || (mInitialAllowedSilence > 10000.0)) { // corrupted Prefs? mInitialAllowedSilence = 0.5; } gPrefs->Read(base + wxT("LongestAllowedSilence"), &mTruncLongestAllowedSilence, 0.5); if ((mTruncLongestAllowedSilence < 0.0) || (mTruncLongestAllowedSilence > 10000.0)) { // corrupted Prefs? mTruncLongestAllowedSilence = 0.5; } gPrefs->Read(base + wxT("CompressPercent"), &mSilenceCompressPercent, 50.0); if ((mSilenceCompressPercent < 0.0) || (mSilenceCompressPercent > 100.0)) { // corrupted Prefs? mSilenceCompressPercent = 50.0; } SaveUserPreset(GetCurrentSettingsGroup()); } // Do not migrate again gPrefs->Write(base + wxT("Migrated"), true); return true; }
bool EffectScienFilter::Startup() { wxString base = wxT("/SciFilter/"); // Migrate settings from 2.1.0 or before // Already migrated, so bail if (gPrefs->Exists(base + wxT("Migrated"))) { return true; } // Load the old "current" settings if (gPrefs->Exists(base)) { double dTemp; gPrefs->Read(base + wxT("Order"), &mOrder, 1); mOrder = wxMax (1, mOrder); mOrder = wxMin (MAX_Order, mOrder); gPrefs->Read(base + wxT("FilterType"), &mFilterType, 0); mFilterType = wxMax (0, mFilterType); mFilterType = wxMin (2, mFilterType); gPrefs->Read(base + wxT("FilterSubtype"), &mFilterSubtype, 0); mFilterSubtype = wxMax (0, mFilterSubtype); mFilterSubtype = wxMin (1, mFilterSubtype); gPrefs->Read(base + wxT("Cutoff"), &dTemp, 1000.0); mCutoff = (float)dTemp; mCutoff = wxMax (1, mCutoff); mCutoff = wxMin (100000, mCutoff); gPrefs->Read(base + wxT("Ripple"), &dTemp, 1.0); mRipple = dTemp; mRipple = wxMax (0, mRipple); mRipple = wxMin (100, mRipple); gPrefs->Read(base + wxT("StopbandRipple"), &dTemp, 30.0); mStopbandRipple = dTemp; mStopbandRipple = wxMax (0, mStopbandRipple); mStopbandRipple = wxMin (100, mStopbandRipple); SaveUserPreset(GetCurrentSettingsGroup()); // Do not migrate again gPrefs->Write(base + wxT("Migrated"), true); gPrefs->Flush(); } return true; }
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; }
void EffectChangeSpeed::PopulateOrExchange(ShuttleGui & S) { GetPrivateConfig(GetCurrentSettingsGroup(), wxT("TimeFormat"), mFormat, mFormat); GetPrivateConfig(GetCurrentSettingsGroup(), wxT("VinylChoice"), mFromVinyl, mFromVinyl); S.SetBorder(5); S.StartVerticalLay(0); { S.AddSpace(0, 5); S.AddTitle(_("Change Speed, affecting both Tempo and Pitch")); S.AddSpace(0, 10); // Speed multiplier and percent change controls. S.StartMultiColumn(4, wxCENTER); { FloatingPointValidator<double> vldMultiplier(3, &mMultiplier, NUM_VAL_THREE_TRAILING_ZEROES); vldMultiplier.SetRange(MIN_Percentage / 100.0, ((MAX_Percentage / 100.0) + 1)); mpTextCtrl_Multiplier = S.Id(ID_Multiplier).AddTextBox(_("Speed Multiplier:"), wxT(""), 12); mpTextCtrl_Multiplier->SetValidator(vldMultiplier); FloatingPointValidator<double> vldPercentage(3, &m_PercentChange, NUM_VAL_THREE_TRAILING_ZEROES); vldPercentage.SetRange(MIN_Percentage, MAX_Percentage); mpTextCtrl_PercentChange = S.Id(ID_PercentChange).AddTextBox(_("Percent Change:"), wxT(""), 12); mpTextCtrl_PercentChange->SetValidator(vldPercentage); } S.EndMultiColumn(); // Percent change slider. S.StartHorizontalLay(wxEXPAND); { S.SetStyle(wxSL_HORIZONTAL); mpSlider_PercentChange = S.Id(ID_PercentChange).AddSlider(wxT(""), 0, (int)kSliderMax, (int)MIN_Percentage); mpSlider_PercentChange->SetName(_("Percent Change")); } S.EndHorizontalLay(); // Vinyl rpm controls. S.StartMultiColumn(5, wxCENTER); { /* i18n-hint: "rpm" is an English abbreviation meaning "revolutions per minute". */ S.AddUnits(_("Standard Vinyl rpm:")); wxASSERT(kNumVinyl == WXSIZEOF(kVinylStrings)); wxArrayString vinylChoices; for (int i = 0; i < kNumVinyl; i++) { if (i == kVinyl_NA) { vinylChoices.Add(wxGetTranslation(kVinylStrings[i])); } else { vinylChoices.Add(kVinylStrings[i]); } } mpChoice_FromVinyl = S.Id(ID_FromVinyl).AddChoice(_("from"), wxT(""), &vinylChoices); mpChoice_FromVinyl->SetName(_("From rpm")); mpChoice_FromVinyl->SetSizeHints(100, -1); mpChoice_ToVinyl = S.Id(ID_ToVinyl).AddChoice(_("to"), wxT(""), &vinylChoices); mpChoice_ToVinyl->SetName(_("To rpm")); mpChoice_ToVinyl->SetSizeHints(100, -1); } S.EndMultiColumn(); // From/To time controls. S.StartStatic(_("Selection Length"), 0); { S.StartMultiColumn(2, wxALIGN_LEFT); { S.AddPrompt(_("Current Length:")); mpFromLengthCtrl = safenew NumericTextCtrl(NumericConverter::TIME, S.GetParent(), wxID_ANY, mFormat, mFromLength, mProjectRate); mpFromLengthCtrl->SetName(_("from")); mpFromLengthCtrl->SetToolTip(_("Current length of selection.")); mpFromLengthCtrl->SetReadOnly(true); mpFromLengthCtrl->EnableMenu(false); S.AddWindow(mpFromLengthCtrl, wxALIGN_LEFT); S.AddPrompt(_("New Length:")); mpToLengthCtrl = safenew NumericTextCtrl(NumericConverter::TIME, S.GetParent(), ID_ToLength, mFormat, mToLength, mProjectRate); mpToLengthCtrl->SetName(_("to")); mpToLengthCtrl->EnableMenu(); S.AddWindow(mpToLengthCtrl, wxALIGN_LEFT); } S.EndMultiColumn(); } S.EndStatic(); } S.EndVerticalLay(); }
bool EffectReverb::Startup() { wxString base = wxT("/Effects/Reverb/"); // Migrate settings from 2.1.0 or before // Already migrated, so bail if (gPrefs->Exists(base + wxT("Migrated"))) { return true; } // Load the old "current" settings if (gPrefs->Exists(base)) { gPrefs->Read(base + wxT("RoomSize"), &mParams.mRoomSize, DEF_RoomSize); gPrefs->Read(base + wxT("Delay"), &mParams.mPreDelay, DEF_PreDelay); gPrefs->Read(base + wxT("Reverberance"), &mParams.mReverberance, DEF_Reverberance); gPrefs->Read(base + wxT("HfDamping"), &mParams.mHfDamping, DEF_HfDamping); gPrefs->Read(base + wxT("ToneLow"), &mParams.mToneLow, DEF_ToneLow); gPrefs->Read(base + wxT("ToneHigh"), &mParams.mToneHigh, DEF_ToneHigh); gPrefs->Read(base + wxT("WetGain"), &mParams.mWetGain, DEF_WetGain); gPrefs->Read(base + wxT("DryGain"), &mParams.mDryGain, DEF_DryGain); gPrefs->Read(base + wxT("StereoWidth"), &mParams.mStereoWidth, DEF_StereoWidth); gPrefs->Read(base + wxT("WetOnly"), &mParams.mWetOnly, DEF_WetOnly); SaveUserPreset(GetCurrentSettingsGroup()); // Do not migrate again gPrefs->Write(base + wxT("Migrated"), true); } // Load the previous user presets for (int i = 0; i < 10; i++) { wxString path = base + wxString::Format(wxT("%d/"), i); if (gPrefs->Exists(path)) { Params save = mParams; wxString name; gPrefs->Read(path + wxT("RoomSize"), &mParams.mRoomSize, DEF_RoomSize); gPrefs->Read(path + wxT("Delay"), &mParams.mPreDelay, DEF_PreDelay); gPrefs->Read(path + wxT("Reverberance"), &mParams.mReverberance, DEF_Reverberance); gPrefs->Read(path + wxT("HfDamping"), &mParams.mHfDamping, DEF_HfDamping); gPrefs->Read(path + wxT("ToneLow"), &mParams.mToneLow, DEF_ToneLow); gPrefs->Read(path + wxT("ToneHigh"), &mParams.mToneHigh, DEF_ToneHigh); gPrefs->Read(path + wxT("WetGain"), &mParams.mWetGain, DEF_WetGain); gPrefs->Read(path + wxT("DryGain"), &mParams.mDryGain, DEF_DryGain); gPrefs->Read(path + wxT("StereoWidth"), &mParams.mStereoWidth, DEF_StereoWidth); gPrefs->Read(path + wxT("WetOnly"), &mParams.mWetOnly, DEF_WetOnly); gPrefs->Read(path + wxT("name"), &name, wxEmptyString); if (!name.IsEmpty()) { name.Prepend(wxT(" - ")); } name.Prepend(wxString::Format(wxT("Settings%d"), i)); SaveUserPreset(GetUserPresetsGroup(name)); mParams = save; } } return true; }