mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-06 23:02:42 +02:00
139 lines
3.7 KiB
C++
139 lines
3.7 KiB
C++
/**********************************************************************
|
|
|
|
Audacity: A Digital Audio Editor
|
|
|
|
TimeScale.h
|
|
|
|
Clayton Otey
|
|
|
|
**********************************************************************/
|
|
|
|
#include "../Audacity.h"
|
|
|
|
#if USE_SBSMS
|
|
|
|
#ifndef __AUDACITY_EFFECT_TIMESCALE__
|
|
#define __AUDACITY_EFFECT_TIMESCALE__
|
|
|
|
#include "SBSMSEffect.h"
|
|
|
|
#include <wx/intl.h>
|
|
#include <wx/dialog.h>
|
|
#include <wx/slider.h>
|
|
|
|
class wxString;
|
|
class wxTextCtrl;
|
|
|
|
class EffectTimeScale : public EffectSBSMS {
|
|
|
|
public:
|
|
EffectTimeScale();
|
|
|
|
virtual wxString GetEffectName() {
|
|
return wxString(_("Sliding Time Scale/Pitch Shift..."));
|
|
}
|
|
|
|
virtual std::set<wxString> GetEffectCategories() {
|
|
std::set<wxString> result;
|
|
result.insert(wxT("http://audacityteam.org/namespace#PitchAndTempo"));
|
|
return result;
|
|
}
|
|
|
|
virtual wxString GetEffectIdentifier() {
|
|
return wxString(wxT("TimeScale"));
|
|
}
|
|
|
|
virtual wxString GetEffectAction() {
|
|
return wxString(_("Changing Tempo/Pitch"));
|
|
}
|
|
|
|
// Useful only after PromptUser values have been set.
|
|
virtual wxString GetEffectDescription();
|
|
|
|
virtual bool Init();
|
|
|
|
virtual bool PromptUser();
|
|
virtual bool TransferParameters( Shuttle & shuttle );
|
|
virtual bool Process();
|
|
|
|
private:
|
|
double m_RatePercentChangeStart;
|
|
double m_RatePercentChangeEnd;
|
|
double m_PitchHalfStepsStart;
|
|
double m_PitchHalfStepsEnd;
|
|
double m_PitchPercentChangeStart;
|
|
double m_PitchPercentChangeEnd;
|
|
bool m_PreAnalyze;
|
|
|
|
friend class TimeScaleDialog;
|
|
};
|
|
|
|
//----------------------------------------------------------------------------
|
|
// TimeScaleDialog
|
|
//----------------------------------------------------------------------------
|
|
|
|
class TimeScaleDialog:public EffectDialog {
|
|
public:
|
|
TimeScaleDialog(EffectTimeScale * effect,
|
|
wxWindow * parent);
|
|
|
|
void PopulateOrExchange(ShuttleGui & S);
|
|
bool TransferDataToWindow();
|
|
bool TransferDataFromWindow();
|
|
|
|
private:
|
|
// handlers
|
|
void OnText_RatePercentChangeStart(wxCommandEvent & event);
|
|
void OnText_RatePercentChangeEnd(wxCommandEvent & event);
|
|
void OnText_PitchPercentChangeStart(wxCommandEvent & event);
|
|
void OnText_PitchPercentChangeEnd(wxCommandEvent & event);
|
|
void OnText_PitchHalfStepsStart(wxCommandEvent & event);
|
|
void OnText_PitchHalfStepsEnd(wxCommandEvent & event);
|
|
void OnSlider_RatePercentChangeStart(wxCommandEvent & event);
|
|
void OnSlider_RatePercentChangeEnd(wxCommandEvent & event);
|
|
void OnCheckBox_PreAnalyze(wxCommandEvent & event);
|
|
|
|
// helper fns
|
|
bool CheckParameters();
|
|
void Update_Text_RatePercentChangeStart();
|
|
void Update_Text_RatePercentChangeEnd();
|
|
void Update_Text_PitchPercentChangeStart();
|
|
void Update_Text_PitchPercentChangeEnd();
|
|
void Update_Text_PitchHalfStepsStart();
|
|
void Update_Text_PitchHalfStepsEnd();
|
|
void Update_Slider_RatePercentChangeStart();
|
|
void Update_Slider_RatePercentChangeEnd();
|
|
void Update_CheckBox_PreAnalyze();
|
|
|
|
private:
|
|
EffectTimeScale *mEffect;
|
|
bool m_bLoopDetect;
|
|
|
|
// controls
|
|
wxTextCtrl *m_pTextCtrl_RatePercentChangeStart;
|
|
wxTextCtrl *m_pTextCtrl_RatePercentChangeEnd;
|
|
wxSlider *m_pSlider_RatePercentChangeStart;
|
|
wxSlider *m_pSlider_RatePercentChangeEnd;
|
|
wxTextCtrl *m_pTextCtrl_PitchHalfStepsStart;
|
|
wxTextCtrl *m_pTextCtrl_PitchHalfStepsEnd;
|
|
wxTextCtrl *m_pTextCtrl_PitchPercentChangeStart;
|
|
wxTextCtrl *m_pTextCtrl_PitchPercentChangeEnd;
|
|
wxCheckBox *m_pCheckBox_PreAnalyze;
|
|
|
|
public:
|
|
double m_RatePercentChangeStart;
|
|
double m_RatePercentChangeEnd;
|
|
double m_PitchHalfStepsStart;
|
|
double m_PitchHalfStepsEnd;
|
|
double m_PitchPercentChangeStart;
|
|
double m_PitchPercentChangeEnd;
|
|
bool m_PreAnalyze;
|
|
|
|
private:
|
|
DECLARE_EVENT_TABLE()
|
|
};
|
|
|
|
#endif // __AUDACITY_EFFECT_TIMESCALE
|
|
|
|
#endif // USE_SBSMS
|