21#ifndef __AUDACITY_EFFECT_CHANGEPITCH__
22#define __AUDACITY_EFFECT_CHANGEPITCH__
30#include <wx/weakref.h>
39class EffectChangePitch final :
public EffectSoundTouch
42 static inline EffectChangePitch *
43 FetchParameters(EffectChangePitch &e,
EffectSettings &) {
return &e; }
47 virtual ~EffectChangePitch();
64 std::unique_ptr<EffectEditor> PopulateOrExchange(
75 void DeduceFrequencies();
80 void Calc_SemitonesChange_fromPitches();
81 void Calc_SemitonesChange_fromOctaveChange();
82 void Calc_SemitonesChange_fromPercentChange();
83 void Calc_ToFrequency();
84 void Calc_PercentChange();
87 void OnChoice_FromPitch(wxCommandEvent & evt);
88 void OnSpin_FromOctave(wxCommandEvent & evt);
89 void OnChoice_ToPitch(wxCommandEvent & evt);
90 void OnSpin_ToOctave(wxCommandEvent & evt);
92 void OnText_SemitonesChange(wxCommandEvent & evt);
94 void OnText_FromFrequency(wxCommandEvent & evt);
95 void OnText_ToFrequency(wxCommandEvent & evt);
97 void OnText_PercentChange(wxCommandEvent & evt);
98 void OnSlider_PercentChange(wxCommandEvent & evt);
101 void Update_Choice_FromPitch();
102 void Update_Spin_FromOctave();
103 void Update_Choice_ToPitch();
104 void Update_Spin_ToOctave();
106 void Update_Text_SemitonesChange();
108 void Update_Text_FromFrequency();
109 void Update_Text_ToFrequency();
111 void Update_Text_PercentChange();
112 void Update_Slider_PercentChange();
115 wxWeakRef<wxWindow> mUIParent{};
124 double m_FromFrequency;
125 double m_ToFrequency;
127 double m_dSemitonesChange;
128 double m_dStartFrequency;
129 double m_dPercentChange;
135 wxChoice * m_pChoice_FromPitch;
136 wxSpinCtrl * m_pSpin_FromOctave;
137 wxChoice * m_pChoice_ToPitch;
138 wxSpinCtrl * m_pSpin_ToOctave;
139 wxTextCtrl * m_pTextCtrl_SemitonesChange;
141 wxTextCtrl * m_pTextCtrl_FromFrequency;
142 wxTextCtrl * m_pTextCtrl_ToFrequency;
143 wxTextCtrl * m_pTextCtrl_PercentChange;
144 wxSlider * m_pSlider_PercentChange;
147 wxCheckBox * mUseSBSMSCheckBox;
151 DECLARE_EVENT_TABLE()
153static constexpr
EffectParameter Percentage{ &EffectChangePitch::m_dPercentChange,
154 L
"Percentage", 0.0, -99.0, 3000.0, 1 };
155static constexpr EffectParameter UseSBSMS{ &EffectChangePitch::mUseSBSMS,
156 L
"SBSMS",
false,
false,
true, 1 };
std::optional< std::unique_ptr< EffectSettingsAccess::Message > > OptionalMessage
static Settings & settings()
ComponentInterfaceSymbol pairs a persistent string identifier used internally with an optional,...
Performs effect computation.
Hold values to send to effect output meters.
Interface for manipulations of an Effect's settings.
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
Holds a msgid for the translation catalog; may also bind format arguments.
Externalized state of a plug-in.