mirror of
https://github.com/cookiengineer/audacity
synced 2025-11-08 22:23:59 +01:00
Locate and position the current Audacity source code, and clear a variety of old junk out of the way into junk-branches
This commit is contained in:
144
src/effects/ChangeTempo.h
Normal file
144
src/effects/ChangeTempo.h
Normal file
@@ -0,0 +1,144 @@
|
||||
/**********************************************************************
|
||||
|
||||
Audacity: A Digital Audio Editor
|
||||
|
||||
ChangeTempo.h
|
||||
|
||||
Vaughan Johnson, Dominic Mazzoni
|
||||
|
||||
Change Tempo effect provides speeding up or
|
||||
slowing down tempo without changing pitch.
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#if USE_SOUNDTOUCH
|
||||
|
||||
#ifndef __AUDACITY_EFFECT_CHANGETEMPO__
|
||||
#define __AUDACITY_EFFECT_CHANGETEMPO__
|
||||
|
||||
#include "SoundTouchEffect.h"
|
||||
|
||||
#include <wx/intl.h>
|
||||
#include <wx/dialog.h>
|
||||
#include <wx/slider.h>
|
||||
|
||||
class wxString;
|
||||
class wxTextCtrl;
|
||||
|
||||
|
||||
class EffectChangeTempo : public EffectSoundTouch {
|
||||
|
||||
public:
|
||||
EffectChangeTempo();
|
||||
|
||||
virtual wxString GetEffectName() {
|
||||
return wxString(_("Change Tempo..."));
|
||||
}
|
||||
|
||||
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("ChangeTempo"));
|
||||
}
|
||||
|
||||
virtual wxString GetEffectAction() {
|
||||
return wxString(_("Changing Tempo"));
|
||||
}
|
||||
|
||||
// Useful only after PromptUser values have been set.
|
||||
virtual wxString GetEffectDescription();
|
||||
|
||||
virtual bool Init();
|
||||
|
||||
virtual bool PromptUser();
|
||||
virtual bool TransferParameters( Shuttle & shuttle );
|
||||
|
||||
virtual bool CheckWhetherSkipEffect() { return (m_PercentChange == 0.0); }
|
||||
virtual bool Process();
|
||||
|
||||
private:
|
||||
double m_PercentChange; // percent change to apply to tempo
|
||||
// -100% is meaningless, but sky's the upper limit
|
||||
unsigned int m_FromBPM; // user-set beats-per-minute. Zero means not yet set.
|
||||
unsigned int m_ToBPM; // Zero value means not yet set.
|
||||
double m_FromLength; // starting length of selection
|
||||
double m_ToLength; // target length of selection
|
||||
|
||||
friend class ChangeTempoDialog;
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// ChangeTempoDialog
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
class ChangeTempoDialog:public EffectDialog {
|
||||
public:
|
||||
ChangeTempoDialog(EffectChangeTempo * effect,
|
||||
wxWindow * parent);
|
||||
|
||||
void PopulateOrExchange(ShuttleGui & S);
|
||||
bool TransferDataToWindow();
|
||||
bool TransferDataFromWindow();
|
||||
|
||||
private:
|
||||
// handlers
|
||||
void OnText_PercentChange(wxCommandEvent & event);
|
||||
void OnSlider_PercentChange(wxCommandEvent & event);
|
||||
void OnText_FromBPM(wxCommandEvent & event);
|
||||
void OnText_ToBPM(wxCommandEvent & event);
|
||||
void OnText_ToLength(wxCommandEvent & event);
|
||||
|
||||
void OnPreview( wxCommandEvent &event );
|
||||
|
||||
// helper fns
|
||||
void Update_Text_PercentChange(); // Update control per current m_PercentChange.
|
||||
void Update_Slider_PercentChange(); // Update control per current m_PercentChange.
|
||||
void Update_Text_ToBPM(); // Use m_FromBPM & m_PercentChange to set new m_ToBPM & control.
|
||||
void Update_Text_ToLength(); // Use m_FromLength & m_PercentChange to set new m_ToLength & control.
|
||||
|
||||
private:
|
||||
EffectChangeTempo * mEffect;
|
||||
bool m_bLoopDetect;
|
||||
|
||||
// controls
|
||||
wxTextCtrl * m_pTextCtrl_PercentChange;
|
||||
wxSlider * m_pSlider_PercentChange;
|
||||
wxTextCtrl * m_pTextCtrl_FromBPM;
|
||||
wxTextCtrl * m_pTextCtrl_ToBPM;
|
||||
wxTextCtrl * m_pTextCtrl_FromLength;
|
||||
wxTextCtrl * m_pTextCtrl_ToLength;
|
||||
|
||||
public:
|
||||
// effect parameters
|
||||
double m_PercentChange; // percent change to apply to tempo
|
||||
// -100% is meaningless, but sky's the upper limit.
|
||||
// Slider is (-100, 200], but textCtrls can set higher.
|
||||
unsigned int m_FromBPM; // user-set beats-per-minute. Zero means not yet set.
|
||||
unsigned int m_ToBPM; // Zero value means not yet set.
|
||||
double m_FromLength; // starting length of selection
|
||||
double m_ToLength; // target length of selection
|
||||
|
||||
private:
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
|
||||
#endif // __AUDACITY_EFFECT_CHANGETEMPO__
|
||||
|
||||
#endif // USE_SOUNDTOUCH
|
||||
|
||||
// Indentation settings for Vim and Emacs and unique identifier for Arch, a
|
||||
// version control system. Please do not modify past this point.
|
||||
//
|
||||
// Local Variables:
|
||||
// c-basic-offset: 3
|
||||
// indent-tabs-mode: nil
|
||||
// End:
|
||||
//
|
||||
// vim: et sts=3 sw=3
|
||||
// arch-tag: d5538ef9-b7b0-4dd9-a23b-8cce354262a8
|
||||
|
||||
Reference in New Issue
Block a user