Audacity  3.0.3
TimeScale.cpp
Go to the documentation of this file.
1 /**********************************************************************
2 
3  Audacity: A Digital Audio Editor
4 
5  TimeScale.cpp
6 
7  Clayton Otey
8 
9 *******************************************************************//*******************************************************************/
15 
16 
17 
18 #if USE_SBSMS
19 #include "TimeScale.h"
20 #include "LoadEffects.h"
21 
22 #include <math.h>
23 
24 #include <wx/intl.h>
25 #include <wx/slider.h>
26 
27 #include "../Shuttle.h"
28 #include "../ShuttleGui.h"
29 #include "../widgets/valnum.h"
30 
31 enum
32 {
39 };
40 
41 // Define keys, defaults, minimums, and maximums for the effect parameters
42 //
43 // Name Type Key Def Min Max Scale
44 Param( RatePercentStart, double, wxT("RatePercentChangeStart"), 0.0, -90.0, 500, 1 );
45 Param( RatePercentEnd, double, wxT("RatePercentChangeEnd"), 0.0, -90.0, 500, 1 );
46 Param( HalfStepsStart, double, wxT("PitchHalfStepsStart"), 0.0, -12.0, 12.0, 1 );
47 Param( HalfStepsEnd, double, wxT("PitchHalfStepsEnd"), 0.0, -12.0, 12.0, 1 );
48 Param( PitchPercentStart, double, wxT("PitchPercentChangeStart"), 0.0, -50.0, 100.0, 1 );
49 Param( PitchPercentEnd, double, wxT("PitchPercentChangeEnd"), 0.0, -50.0, 100.0, 1 );
50 
51 //
52 // EffectTimeScale
53 //
54 
56 { wxT("Sliding Stretch"), XO("Sliding Stretch") };
57 
59 
60 BEGIN_EVENT_TABLE(EffectTimeScale, wxEvtHandler)
70 
72 {
73  m_RatePercentChangeStart = DEF_RatePercentStart;
74  m_RatePercentChangeEnd = DEF_RatePercentEnd;
75  m_PitchHalfStepsStart = DEF_HalfStepsStart;
76  m_PitchHalfStepsEnd = DEF_HalfStepsEnd;
77  m_PitchPercentChangeStart = DEF_PitchPercentStart;
78  m_PitchPercentChangeEnd = DEF_PitchPercentEnd;
79 
80  slideTypeRate = SlideLinearOutputRate;
81  slideTypePitch = SlideLinearOutputRate;
82  bPreview = false;
83  previewSelectedDuration = 0.0;
84 
85  SetLinearEffectFlag(true);
86 }
87 
89 {
90 }
91 
92 // ComponentInterface implementation
93 
95 {
96  return Symbol;
97 }
98 
100 {
101  return XO("Allows continuous changes to the tempo and/or pitch");
102 }
103 
105 {
106  return L"Sliding_Stretch";
107 }
108 
109 // EffectDefinitionInterface implementation
110 
112 {
113  return EffectTypeProcess;
114 }
115 
116 // EffectClientInterface implementation
118  S.SHUTTLE_PARAM( m_RatePercentChangeStart, RatePercentStart );
119  S.SHUTTLE_PARAM( m_RatePercentChangeEnd, RatePercentEnd );
120  S.SHUTTLE_PARAM( m_PitchHalfStepsStart, HalfStepsStart );
121  S.SHUTTLE_PARAM( m_PitchHalfStepsEnd, HalfStepsEnd );
122  S.SHUTTLE_PARAM( m_PitchPercentChangeStart, PitchPercentStart );
123  S.SHUTTLE_PARAM( m_PitchPercentChangeEnd, PitchPercentEnd );
124  return true;
125 }
126 
128 {
129  parms.Write(KEY_RatePercentStart, m_RatePercentChangeStart);
130  parms.Write(KEY_RatePercentEnd, m_RatePercentChangeEnd);
131  parms.Write(KEY_HalfStepsStart, m_PitchHalfStepsStart);
132  parms.Write(KEY_HalfStepsEnd, m_PitchHalfStepsEnd);
133  parms.Write(KEY_PitchPercentStart, m_PitchPercentChangeStart);
134  parms.Write(KEY_PitchPercentEnd, m_PitchPercentChangeEnd);
135 
136  return true;
137 }
138 
140 {
141  ReadAndVerifyDouble(RatePercentStart);
142  ReadAndVerifyDouble(RatePercentEnd);
143  ReadAndVerifyDouble(HalfStepsStart);
144  ReadAndVerifyDouble(HalfStepsEnd);
145  ReadAndVerifyDouble(PitchPercentStart);
146  ReadAndVerifyDouble(PitchPercentEnd);
147 
148  m_RatePercentChangeStart = RatePercentStart;
149  m_RatePercentChangeEnd = RatePercentEnd;
150  m_PitchHalfStepsStart = HalfStepsStart;
151  m_PitchHalfStepsEnd = HalfStepsEnd;
152  m_PitchPercentChangeStart = PitchPercentStart;
153  m_PitchPercentChangeEnd = PitchPercentEnd;
154 
155  return true;
156 }
157 
158 // Effect implementation
159 
161 {
162  return true;
163 }
164 
165 double EffectTimeScale::CalcPreviewInputLength(double previewLength)
166 {
167  double inputLength = Effect::GetDuration();
168  if(inputLength == 0.0) {
169  return 0.0;
170  } else {
171  double rateStart1 = PercentChangeToRatio(m_RatePercentChangeStart);
172  double rateEnd1 = PercentChangeToRatio(m_RatePercentChangeEnd);
173  double tOut = previewLength/inputLength;
174  double t = EffectSBSMS::getInvertedStretchedTime(rateStart1,rateEnd1,slideTypeRate,tOut);
175  return t * inputLength;
176  }
177 }
178 
179 void EffectTimeScale::Preview(bool dryOnly)
180 {
182  auto cleanup = valueRestorer( bPreview, true );
183  Effect::Preview(dryOnly);
184 }
185 
187 {
188  double pitchStart1 = PercentChangeToRatio(m_PitchPercentChangeStart);
189  double pitchEnd1 = PercentChangeToRatio(m_PitchPercentChangeEnd);
190  double rateStart1 = PercentChangeToRatio(m_RatePercentChangeStart);
191  double rateEnd1 = PercentChangeToRatio(m_RatePercentChangeEnd);
192 
193  if(bPreview) {
194  double t = (mT1-mT0) / previewSelectedDuration;
195  rateEnd1 = EffectSBSMS::getRate(rateStart1,rateEnd1,slideTypeRate,t);
196  pitchEnd1 = EffectSBSMS::getRate(pitchStart1,pitchEnd1,slideTypePitch,t);
197  }
198 
199  EffectSBSMS::setParameters(rateStart1,rateEnd1,pitchStart1,pitchEnd1,slideTypeRate,slideTypePitch,false,false,false);
200  return EffectSBSMS::Process();
201 }
202 
204 {
205  S.SetBorder(5);
206  S.AddSpace(0, 5);
207 
208  S.StartMultiColumn(2, wxALIGN_CENTER);
209  {
210  // Rate Start
211  S.StartStatic(XO("Initial Tempo Change (%)"));
212  {
213  S.StartMultiColumn(1, wxCENTER);
214  {
216  .Validator<FloatingPointValidator<double>>(
218  NumValidatorStyle::NO_TRAILING_ZEROES,
219  MIN_RatePercentStart, MAX_RatePercentStart
220  )
221  .AddTextBox( {}, wxT(""), 12);
222  }
223  S.EndMultiColumn();
224  S.StartHorizontalLay(wxEXPAND, 0);
225  {
227  .Style(wxSL_HORIZONTAL)
228  .AddSlider( {}, DEF_RatePercentStart, MAX_RatePercentStart, MIN_RatePercentStart);
229  }
230  S.EndHorizontalLay();
231  }
232  S.EndStatic();
233 
234  S.StartStatic(XO("Final Tempo Change (%)"));
235  {
236  S.StartMultiColumn(1, wxCENTER);
237  {
239  .Validator<FloatingPointValidator<double>>(
241  NumValidatorStyle::NO_TRAILING_ZEROES,
242  MIN_RatePercentEnd, MAX_RatePercentEnd
243  )
244  .AddTextBox( {}, wxT(""), 12);
245  }
246  S.EndMultiColumn();
247  S.StartHorizontalLay(wxEXPAND, 0);
248  {
250  .Style(wxSL_HORIZONTAL)
251  .AddSlider( {}, DEF_RatePercentEnd, MAX_RatePercentEnd, MIN_RatePercentEnd);
252  }
253  S.EndHorizontalLay();
254  }
255  S.EndStatic();
256 
257  // Pitch Start
258  S.StartStatic(XO("Initial Pitch Shift"));
259  {
260  S.StartMultiColumn(2, wxCENTER);
261  {
263  .Validator<FloatingPointValidator<double>>(
265  NumValidatorStyle::NO_TRAILING_ZEROES,
266  MIN_HalfStepsStart, MAX_HalfStepsStart
267  )
268  .AddTextBox(XXO("(&semitones) [-12 to 12]:"), wxT(""), 12);
269 
270 
272  .Validator<FloatingPointValidator<double>>(
274  NumValidatorStyle::NO_TRAILING_ZEROES,
275  MIN_PitchPercentStart, MAX_PitchPercentStart
276  )
277  .AddTextBox(XXO("(%) [-50 to 100]:"), wxT(""), 12);
278  }
279  S.EndMultiColumn();
280  }
281  S.EndStatic();
282 
283  // Pitch End
284  S.StartStatic(XO("Final Pitch Shift"));
285  {
286  S.StartMultiColumn(2, wxCENTER);
287  {
289  .Validator<FloatingPointValidator<double>>(
291  NumValidatorStyle::NO_TRAILING_ZEROES,
292  MIN_HalfStepsEnd, MAX_HalfStepsEnd
293  )
294  .AddTextBox(XXO("(s&emitones) [-12 to 12]:"), wxT(""), 12);
295 
297  .Validator<FloatingPointValidator<double>>(
299  NumValidatorStyle::NO_TRAILING_ZEROES,
300  MIN_PitchPercentStart, MAX_PitchPercentStart)
301  .AddTextBox(XXO("(%) [-50 to 100]:"), wxT(""), 12);
302  }
303  S.EndMultiColumn();
304  }
305  S.EndStatic();
306  }
307  S.EndMultiColumn();
308 
309  return;
310 }
311 
313 {
314  if (!mUIParent->TransferDataToWindow())
315  {
316  return false;
317  }
318 
321 
322  return true;
323 }
324 
326 {
327  if (!mUIParent->Validate() || !mUIParent->TransferDataFromWindow())
328  {
329  return false;
330  }
331 
332  return true;
333 }
334 
335 inline double EffectTimeScale::PercentChangeToRatio(double percentChange)
336 {
337  return 1.0 + percentChange / 100.0;
338 }
339 
340 inline double EffectTimeScale::HalfStepsToPercentChange(double halfSteps)
341 {
342  return 100.0 * (pow(2.0,halfSteps/12.0) - 1.0);
343 }
344 
345 inline double EffectTimeScale::PercentChangeToHalfSteps(double percentChange)
346 {
347  return 12.0 * log2(PercentChangeToRatio(percentChange));
348 }
349 
351 {
352  m_pTextCtrl_RatePercentChangeStart->GetValidator()->TransferToWindow();
353 }
354 
356 {
357  m_pTextCtrl_RatePercentChangeEnd->GetValidator()->TransferToWindow();
358 }
359 
361 {
363 }
364 
366 {
368 }
369 
371 {
372  m_pTextCtrl_PitchHalfStepsStart->GetValidator()->TransferToWindow();
373 }
374 
376 {
377  m_pTextCtrl_PitchHalfStepsEnd->GetValidator()->TransferToWindow();
378 }
379 
381 {
382  m_pTextCtrl_PitchPercentChangeStart->GetValidator()->TransferToWindow();
383 }
384 
386 {
387  m_pTextCtrl_PitchPercentChangeEnd->GetValidator()->TransferToWindow();
388 }
389 
390 void EffectTimeScale::OnText_RatePercentChangeStart(wxCommandEvent & WXUNUSED(evt))
391 {
392  if (!EnableApply(mUIParent->TransferDataFromWindow()))
393  {
394  return;
395  }
396 
398 }
399 
400 void EffectTimeScale::OnText_RatePercentChangeEnd(wxCommandEvent & WXUNUSED(evt))
401 {
402  if (!EnableApply(mUIParent->TransferDataFromWindow()))
403  {
404  return;
405  }
406 
408 }
409 
411 {
412  m_RatePercentChangeStart = (double) evt.GetInt();
413 
415 }
416 
418 {
419  m_RatePercentChangeEnd = (double) evt.GetInt();
420 
422 }
423 
424 void EffectTimeScale::OnText_PitchHalfStepsStart(wxCommandEvent & WXUNUSED(evt))
425 {
426  if (!EnableApply(mUIParent->TransferDataFromWindow()))
427  {
428  return;
429  }
430 
433 }
434 
435 void EffectTimeScale::OnText_PitchHalfStepsEnd(wxCommandEvent & WXUNUSED(evt))
436 {
437  if (!EnableApply(mUIParent->TransferDataFromWindow()))
438  {
439  return;
440  }
441 
444 }
445 
446 void EffectTimeScale::OnText_PitchPercentChangeStart(wxCommandEvent & WXUNUSED(evt))
447 {
448  if (!EnableApply(mUIParent->TransferDataFromWindow()))
449  {
450  return;
451  }
452 
455 }
456 
457 void EffectTimeScale::OnText_PitchPercentChangeEnd(wxCommandEvent & WXUNUSED(evt))
458 {
459  if (!EnableApply(mUIParent->TransferDataFromWindow()))
460  {
461  return;
462  }
463 
466 }
467 
468 #endif
EffectTimeScale::~EffectTimeScale
virtual ~EffectTimeScale()
Definition: TimeScale.cpp:88
ID_PitchHalfStepsEnd
@ ID_PitchHalfStepsEnd
Definition: TimeScale.cpp:36
TranslatableString
Holds a msgid for the translation catalog; may also bind format arguments.
Definition: TranslatableString.h:32
CommandParameters
CommandParameters, derived from wxFileConfig, is essentially doing the same things as the Shuttle cla...
Definition: EffectAutomationParameters.h:67
TimeScale.h
EffectTimeScale::Init
bool Init() override
Definition: TimeScale.cpp:160
valueRestorer
ValueRestorer< T > valueRestorer(T &var)
inline functions provide convenient parameter type deduction
Definition: MemoryX.h:354
EffectTimeScale
An EffectTimeScale does high quality sliding time scaling/pitch shifting.
Definition: TimeScale.h:25
Effect::GetDuration
double GetDuration() override
Definition: Effect.cpp:816
EffectTypeProcess
@ EffectTypeProcess
Definition: EffectInterface.h:59
EffectTimeScale::OnText_PitchHalfStepsEnd
void OnText_PitchHalfStepsEnd(wxCommandEvent &evt)
Definition: TimeScale.cpp:435
EffectTimeScale::Update_Text_PitchHalfStepsStart
void Update_Text_PitchHalfStepsStart()
Definition: TimeScale.cpp:370
Effect::EnableApply
virtual bool EnableApply(bool enable=true)
Definition: Effect.cpp:1926
EffectTimeScale::Update_Text_PitchHalfStepsEnd
void Update_Text_PitchHalfStepsEnd()
Definition: TimeScale.cpp:375
ID_PitchPercentChangeStart
@ ID_PitchPercentChangeStart
Definition: TimeScale.cpp:37
EffectTimeScale::m_pTextCtrl_RatePercentChangeEnd
wxTextCtrl * m_pTextCtrl_RatePercentChangeEnd
Definition: TimeScale.h:97
EffectTimeScale::OnSlider_RatePercentChangeStart
void OnSlider_RatePercentChangeStart(wxCommandEvent &evt)
Definition: TimeScale.cpp:410
EffectTimeScale::OnText_PitchHalfStepsStart
void OnText_PitchHalfStepsStart(wxCommandEvent &evt)
Definition: TimeScale.cpp:424
ID_PitchPercentChangeEnd
@ ID_PitchPercentChangeEnd
Definition: TimeScale.cpp:38
Effect::mT1
double mT1
Definition: Effect.h:467
ShuttleGui::AddSpace
wxSizerItem * AddSpace(int width, int height, int prop=0)
Definition: ShuttleGui.cpp:2459
EffectTimeScale::OnText_PitchPercentChangeEnd
void OnText_PitchPercentChangeEnd(wxCommandEvent &evt)
Definition: TimeScale.cpp:457
XO
#define XO(s)
Definition: Internat.h:31
EffectTimeScale::ManualPage
ManualPageID ManualPage() override
Definition: TimeScale.cpp:104
EffectTimeScale::m_pTextCtrl_PitchHalfStepsEnd
wxTextCtrl * m_pTextCtrl_PitchHalfStepsEnd
Definition: TimeScale.h:101
ShuttleParams
Shuttle that deals with parameters. This is a base class with lots of virtual functions that do nothi...
Definition: Shuttle.h:62
EffectTimeScale::Preview
void Preview(bool dryOnly) override
Definition: TimeScale.cpp:179
ShuttleGuiBase::EndMultiColumn
void EndMultiColumn()
Definition: ShuttleGui.cpp:1238
EffectTimeScale::previewSelectedDuration
double previewSelectedDuration
Definition: TimeScale.h:86
EffectTimeScale::PercentChangeToRatio
double PercentChangeToRatio(double percentChange)
Definition: TimeScale.cpp:335
EffectTimeScale::CalcPreviewInputLength
double CalcPreviewInputLength(double previewLength) override
Definition: TimeScale.cpp:165
EffectTimeScale::OnText_RatePercentChangeEnd
void OnText_RatePercentChangeEnd(wxCommandEvent &evt)
Definition: TimeScale.cpp:400
ComponentInterfaceSymbol
ComponentInterfaceSymbol pairs a persistent string identifier used internally with an optional,...
Definition: ComponentInterfaceSymbol.h:27
ShuttleGui::Id
ShuttleGui & Id(int id)
Definition: ShuttleGui.cpp:2274
EffectTimeScale::OnText_RatePercentChangeStart
void OnText_RatePercentChangeStart(wxCommandEvent &evt)
Definition: TimeScale.cpp:390
ShuttleGui::Style
ShuttleGui & Style(long iStyle)
Definition: ShuttleGui.h:727
EffectTimeScale::SetAutomationParameters
bool SetAutomationParameters(CommandParameters &parms) override
Definition: TimeScale.cpp:139
EffectTimeScale::m_pSlider_RatePercentChangeStart
wxSlider * m_pSlider_RatePercentChangeStart
Definition: TimeScale.h:98
XXO
#define XXO(s)
Definition: Internat.h:44
ShuttleGuiBase::EndHorizontalLay
void EndHorizontalLay()
Definition: ShuttleGui.cpp:1177
Effect::mT0
double mT0
Definition: Effect.h:466
ShuttleGuiBase::StartHorizontalLay
void StartHorizontalLay(int PositionFlags=wxALIGN_CENTRE, int iProp=1)
Definition: ShuttleGui.cpp:1167
EffectTimeScale::m_PitchHalfStepsEnd
double m_PitchHalfStepsEnd
Definition: TimeScale.h:92
ShuttleGuiBase::StartMultiColumn
void StartMultiColumn(int nCols, int PositionFlags=wxALIGN_LEFT)
Definition: ShuttleGui.cpp:1229
EffectTimeScale::m_PitchPercentChangeStart
double m_PitchPercentChangeStart
Definition: TimeScale.h:93
EffectTimeScale::TransferDataToWindow
bool TransferDataToWindow() override
Definition: TimeScale.cpp:312
EffectTimeScale::Update_Text_PitchPercentChangeStart
void Update_Text_PitchPercentChangeStart()
Definition: TimeScale.cpp:380
EffectTimeScale::PopulateOrExchange
void PopulateOrExchange(ShuttleGui &S) override
Definition: TimeScale.cpp:203
ID_RatePercentChangeEnd
@ ID_RatePercentChangeEnd
Definition: TimeScale.cpp:34
EffectTimeScale::TransferDataFromWindow
bool TransferDataFromWindow() override
Definition: TimeScale.cpp:325
EffectTimeScale::OnSlider_RatePercentChangeEnd
void OnSlider_RatePercentChangeEnd(wxCommandEvent &evt)
Definition: TimeScale.cpp:417
ShuttleGui::Validator
ShuttleGui & Validator(const Factory &f)
Definition: ShuttleGui.h:678
EffectTimeScale::DefineParams
bool DefineParams(ShuttleParams &S) override
Definition: TimeScale.cpp:117
EffectTimeScale::GetType
EffectType GetType() override
Definition: TimeScale.cpp:111
EffectTimeScale::m_PitchHalfStepsStart
double m_PitchHalfStepsStart
Definition: TimeScale.h:91
EffectTimeScale::Process
bool Process() override
Definition: TimeScale.cpp:186
ReadAndVerifyDouble
#define ReadAndVerifyDouble(name)
Definition: Effect.h:633
ShuttleGuiBase::AddSlider
wxSlider * AddSlider(const TranslatableString &Prompt, int pos, int Max, int Min=0)
Definition: ShuttleGui.cpp:589
Effect::Preview
virtual void Preview(bool dryOnly)
Definition: Effect.cpp:2295
ID_RatePercentChangeStart
@ ID_RatePercentChangeStart
Definition: TimeScale.cpp:33
LoadEffects.h
ShuttleGuiBase::StartStatic
wxStaticBox * StartStatic(const TranslatableString &Str, int iProp=0)
Definition: ShuttleGui.cpp:893
EffectSBSMS::getRate
static double getRate(double rateStart, double rateEnd, SlideType slideType, double t)
Definition: SBSMSEffect.cpp:206
EffectTimeScale::Update_Text_RatePercentChangeStart
void Update_Text_RatePercentChangeStart()
Definition: TimeScale.cpp:350
EffectTimeScale::m_pTextCtrl_PitchPercentChangeStart
wxTextCtrl * m_pTextCtrl_PitchPercentChangeStart
Definition: TimeScale.h:102
EffectSBSMS::getInvertedStretchedTime
static double getInvertedStretchedTime(double rateStart, double rateEnd, SlideType slideType, double outputTime)
Definition: SBSMSEffect.cpp:200
EffectTimeScale::Update_Slider_RatePercentChangeEnd
void Update_Slider_RatePercentChangeEnd()
Definition: TimeScale.cpp:365
EffectTimeScale::slideTypeRate
SlideType slideTypeRate
Definition: TimeScale.h:87
BuiltinEffectsModule::Registration
Definition: LoadEffects.h:40
anonymous_namespace{TimeScale.cpp}::reg
BuiltinEffectsModule::Registration< EffectTimeScale > reg
Definition: TimeScale.cpp:58
Effect::mUIParent
wxWindow * mUIParent
Definition: Effect.h:478
TaggedIdentifier< ManualPageIDTag >
EffectTimeScale::GetSymbol
ComponentInterfaceSymbol GetSymbol() override
Definition: TimeScale.cpp:94
EffectTimeScale::slideTypePitch
SlideType slideTypePitch
Definition: TimeScale.h:88
EffectTimeScale::m_RatePercentChangeEnd
double m_RatePercentChangeEnd
Definition: TimeScale.h:90
EffectTimeScale::m_pTextCtrl_PitchHalfStepsStart
wxTextCtrl * m_pTextCtrl_PitchHalfStepsStart
Definition: TimeScale.h:100
EffectTimeScale::PercentChangeToHalfSteps
double PercentChangeToHalfSteps(double percentChange)
Definition: TimeScale.cpp:345
EffectTimeScale::m_RatePercentChangeStart
double m_RatePercentChangeStart
Definition: TimeScale.h:89
EffectTimeScale::m_pTextCtrl_PitchPercentChangeEnd
wxTextCtrl * m_pTextCtrl_PitchPercentChangeEnd
Definition: TimeScale.h:103
EffectTimeScale::m_pSlider_RatePercentChangeEnd
wxSlider * m_pSlider_RatePercentChangeEnd
Definition: TimeScale.h:99
EffectTimeScale::m_PitchPercentChangeEnd
double m_PitchPercentChangeEnd
Definition: TimeScale.h:94
EffectTimeScale::Update_Text_RatePercentChangeEnd
void Update_Text_RatePercentChangeEnd()
Definition: TimeScale.cpp:355
Param
Param(RatePercentStart, double, wxT("RatePercentChangeStart"), 0.0, -90.0, 500, 1)
EffectTimeScale::GetAutomationParameters
bool GetAutomationParameters(CommandParameters &parms) override
Definition: TimeScale.cpp:127
ShuttleGuiBase::SetBorder
void SetBorder(int Border)
Definition: ShuttleGui.h:489
ID_PitchHalfStepsStart
@ ID_PitchHalfStepsStart
Definition: TimeScale.cpp:35
EffectTimeScale::OnText_PitchPercentChangeStart
void OnText_PitchPercentChangeStart(wxCommandEvent &evt)
Definition: TimeScale.cpp:446
ShuttleGuiBase::EndStatic
void EndStatic()
Definition: ShuttleGui.cpp:922
EffectTimeScale::bPreview
bool bPreview
Definition: TimeScale.h:85
EffectType
EffectType
Definition: EffectInterface.h:55
EffectTimeScale::GetDescription
TranslatableString GetDescription() override
Definition: TimeScale.cpp:99
END_EVENT_TABLE
END_EVENT_TABLE()
EffectTimeScale::Symbol
static const ComponentInterfaceSymbol Symbol
Definition: TimeScale.h:27
EffectTimeScale::HalfStepsToPercentChange
double HalfStepsToPercentChange(double halfSteps)
Definition: TimeScale.cpp:340
ShuttleGui
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
Definition: ShuttleGui.h:631
EffectTimeScale::Update_Text_PitchPercentChangeEnd
void Update_Text_PitchPercentChangeEnd()
Definition: TimeScale.cpp:385
EffectTimeScale::Update_Slider_RatePercentChangeStart
void Update_Slider_RatePercentChangeStart()
Definition: TimeScale.cpp:360
EffectTimeScale::m_pTextCtrl_RatePercentChangeStart
wxTextCtrl * m_pTextCtrl_RatePercentChangeStart
Definition: TimeScale.h:96
EffectSBSMS::setParameters
void setParameters(double rateStart, double rateEnd, double pitchStart, double pitchEnd, SlideType rateSlideType, SlideType pitchSlideType, bool bLinkRatePitch, bool bRateReferenceInput, bool bPitchReferenceInput)
Definition: SBSMSEffect.cpp:147
EffectSBSMS::Process
bool Process() override
Definition: SBSMSEffect.cpp:212