1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-25 16:48:44 +02:00
Also modify member var name to be m_PercentChange, so consistent with ChangeTempo and ChangePitch.
This commit is contained in:
v.audacity 2013-03-08 05:01:07 +00:00
parent c032b9c22e
commit 04fe2860fe
2 changed files with 36 additions and 29 deletions

View File

@ -52,7 +52,7 @@ enum {
EffectChangeSpeed::EffectChangeSpeed() EffectChangeSpeed::EffectChangeSpeed()
{ {
// control values // control values
mPercentChange = 0.0; m_PercentChange = 0.0;
mFromVinyl = kVinyl_33AndAThird; mFromVinyl = kVinyl_33AndAThird;
mToVinyl = kVinyl_33AndAThird; mToVinyl = kVinyl_33AndAThird;
} }
@ -61,13 +61,18 @@ wxString EffectChangeSpeed::GetEffectDescription() {
// Note: This is useful only after change amount has been set. // Note: This is useful only after change amount has been set.
return wxString::Format(_("Applied effect: %s %.1f%%"), return wxString::Format(_("Applied effect: %s %.1f%%"),
this->GetEffectName().c_str(), this->GetEffectName().c_str(),
mPercentChange); m_PercentChange);
} }
double EffectChangeSpeed::CalcPreviewInputLength(double previewLength)
{
return previewLength * (100.0 + m_PercentChange) / 100.0;
}
bool EffectChangeSpeed::PromptUser() bool EffectChangeSpeed::PromptUser()
{ {
ChangeSpeedDialog dlog(this, mParent); ChangeSpeedDialog dlog(this, mParent);
dlog.mPercentChange = mPercentChange; dlog.m_PercentChange = m_PercentChange;
dlog.mFromVinyl = mFromVinyl; dlog.mFromVinyl = mFromVinyl;
dlog.mToVinyl = mToVinyl; dlog.mToVinyl = mToVinyl;
// Don't need to call TransferDataToWindow, although other // Don't need to call TransferDataToWindow, although other
@ -80,7 +85,7 @@ bool EffectChangeSpeed::PromptUser()
if (dlog.GetReturnCode() == wxID_CANCEL) if (dlog.GetReturnCode() == wxID_CANCEL)
return false; return false;
mPercentChange = dlog.mPercentChange; m_PercentChange = dlog.m_PercentChange;
mFromVinyl = dlog.mFromVinyl; mFromVinyl = dlog.mFromVinyl;
mToVinyl = dlog.mToVinyl; mToVinyl = dlog.mToVinyl;
@ -89,7 +94,7 @@ bool EffectChangeSpeed::PromptUser()
bool EffectChangeSpeed::TransferParameters(Shuttle& shuttle) bool EffectChangeSpeed::TransferParameters(Shuttle& shuttle)
{ {
shuttle.TransferDouble(wxT("Percentage"), mPercentChange, 0.0); shuttle.TransferDouble(wxT("Percentage"), m_PercentChange, 0.0);
return true; return true;
} }
@ -121,7 +126,7 @@ bool EffectChangeSpeed::Process()
mCurTrackNum = 0; mCurTrackNum = 0;
mMaxNewLength = 0.0; mMaxNewLength = 0.0;
mFactor = 100.0 / (100.0 + mPercentChange); mFactor = 100.0 / (100.0 + m_PercentChange);
t = iter.First(); t = iter.First();
while (t != NULL) while (t != NULL)
@ -327,7 +332,7 @@ ChangeSpeedDialog::ChangeSpeedDialog(EffectChangeSpeed *effect, wxWindow *parent
mpChoice_ToVinyl = NULL; mpChoice_ToVinyl = NULL;
// effect parameters // effect parameters
mPercentChange = 0.0; m_PercentChange = 0.0;
mFromVinyl = kVinyl_33AndAThird; mFromVinyl = kVinyl_33AndAThird;
mToVinyl = kVinyl_33AndAThird; mToVinyl = kVinyl_33AndAThird;
@ -423,7 +428,7 @@ bool ChangeSpeedDialog::TransferDataFromWindow()
double newValue = 0; double newValue = 0;
wxString str = mpTextCtrl_PercentChange->GetValue(); wxString str = mpTextCtrl_PercentChange->GetValue();
str.ToDouble(&newValue); str.ToDouble(&newValue);
mPercentChange = newValue; m_PercentChange = newValue;
} }
// from/to Vinyl controls // from/to Vinyl controls
@ -448,14 +453,14 @@ void ChangeSpeedDialog::OnText_PercentChange(wxCommandEvent & event)
double newValue = 0; double newValue = 0;
wxString str = mpTextCtrl_PercentChange->GetValue(); wxString str = mpTextCtrl_PercentChange->GetValue();
str.ToDouble(&newValue); str.ToDouble(&newValue);
mPercentChange = newValue; m_PercentChange = newValue;
mbLoopDetect = true; mbLoopDetect = true;
this->Update_Slider_PercentChange(); this->Update_Slider_PercentChange();
this->Update_Vinyl(); this->Update_Vinyl();
mbLoopDetect = false; mbLoopDetect = false;
FindWindow(wxID_OK)->Enable(mPercentChange > -100.0); FindWindow(wxID_OK)->Enable(m_PercentChange > -100.0);
} }
} }
@ -465,10 +470,10 @@ void ChangeSpeedDialog::OnSlider_PercentChange(wxCommandEvent & event)
return; return;
if (mpSlider_PercentChange) { if (mpSlider_PercentChange) {
mPercentChange = (double)(mpSlider_PercentChange->GetValue()); m_PercentChange = (double)(mpSlider_PercentChange->GetValue());
// Warp positive values to actually go up faster & further than negatives. // Warp positive values to actually go up faster & further than negatives.
if (mPercentChange > 0.0) if (m_PercentChange > 0.0)
mPercentChange = pow(mPercentChange, PERCENTCHANGE_SLIDER_WARP); m_PercentChange = pow(m_PercentChange, PERCENTCHANGE_SLIDER_WARP);
mbLoopDetect = true; mbLoopDetect = true;
this->Update_Text_PercentChange(); this->Update_Text_PercentChange();
@ -510,15 +515,15 @@ void ChangeSpeedDialog::OnPreview(wxCommandEvent &event)
TransferDataFromWindow(); TransferDataFromWindow();
// Save & restore parameters around Preview, because we didn't do OK. // Save & restore parameters around Preview, because we didn't do OK.
double oldPercentChange = mEffect->mPercentChange; double oldPercentChange = mEffect->m_PercentChange;
if( mPercentChange < -99.0) if( m_PercentChange < -99.0)
{ {
mPercentChange = -99.0; m_PercentChange = -99.0;
this->Update_Text_PercentChange(); this->Update_Text_PercentChange();
} }
mEffect->mPercentChange = mPercentChange; mEffect->m_PercentChange = m_PercentChange;
mEffect->Preview(); mEffect->Preview();
mEffect->mPercentChange = oldPercentChange; mEffect->m_PercentChange = oldPercentChange;
} }
// helper fns // helper fns
@ -527,19 +532,19 @@ void ChangeSpeedDialog::Update_Text_PercentChange()
{ {
if (mpTextCtrl_PercentChange) { if (mpTextCtrl_PercentChange) {
wxString str; wxString str;
str.Printf(wxT("%.3f"), mPercentChange); str.Printf(wxT("%.3f"), m_PercentChange);
mpTextCtrl_PercentChange->SetValue(str); mpTextCtrl_PercentChange->SetValue(str);
FindWindow(wxID_OK)->Enable(mPercentChange > -100.0); FindWindow(wxID_OK)->Enable(m_PercentChange > -100.0);
} }
} }
void ChangeSpeedDialog::Update_Slider_PercentChange() void ChangeSpeedDialog::Update_Slider_PercentChange()
{ {
if (mpSlider_PercentChange) { if (mpSlider_PercentChange) {
double unwarped = mPercentChange; double unwarped = m_PercentChange;
if (unwarped > 0.0) if (unwarped > 0.0)
// Un-warp values above zero to actually go up to PERCENTCHANGE_MAX. // Un-warp values above zero to actually go up to PERCENTCHANGE_MAX.
unwarped = pow(mPercentChange, (1.0 / PERCENTCHANGE_SLIDER_WARP)); unwarped = pow(m_PercentChange, (1.0 / PERCENTCHANGE_SLIDER_WARP));
// Add 0.5 to unwarped so trunc -> round. // Add 0.5 to unwarped so trunc -> round.
mpSlider_PercentChange->SetValue((int)(unwarped + 0.5)); mpSlider_PercentChange->SetValue((int)(unwarped + 0.5));
@ -553,7 +558,7 @@ void ChangeSpeedDialog::Update_Vinyl()
{ {
// Chances are so low that the slider will exactly match a // Chances are so low that the slider will exactly match a
// standard ratio, just turn it "n/a" unless it's 0.0. // standard ratio, just turn it "n/a" unless it's 0.0.
if ((mPercentChange == 0.0) && mpChoice_FromVinyl) if ((m_PercentChange == 0.0) && mpChoice_FromVinyl)
mpChoice_ToVinyl->SetSelection(mpChoice_FromVinyl->GetSelection()); mpChoice_ToVinyl->SetSelection(mpChoice_FromVinyl->GetSelection());
else else
mpChoice_ToVinyl->SetSelection(kVinyl_NA); mpChoice_ToVinyl->SetSelection(kVinyl_NA);
@ -580,7 +585,7 @@ void ChangeSpeedDialog::Update_PercentChange()
case kVinyl_45: toRPM = 45.0; break; case kVinyl_45: toRPM = 45.0; break;
case kVinyl_78: toRPM = 78; break; case kVinyl_78: toRPM = 78; break;
} }
mPercentChange = ((toRPM * 100.0) / fromRPM) - 100.0; m_PercentChange = ((toRPM * 100.0) / fromRPM) - 100.0;
this->Update_Text_PercentChange(); this->Update_Text_PercentChange();
this->Update_Slider_PercentChange(); this->Update_Slider_PercentChange();

View File

@ -49,11 +49,13 @@ class EffectChangeSpeed : public Effect
// Useful only after PromptUser values have been set. // Useful only after PromptUser values have been set.
virtual wxString GetEffectDescription(); virtual wxString GetEffectDescription();
double CalcPreviewInputLength(double previewLength);
protected: protected:
virtual bool PromptUser(); virtual bool PromptUser();
virtual bool TransferParameters( Shuttle & shuttle ); virtual bool TransferParameters( Shuttle & shuttle );
virtual bool CheckWhetherSkipEffect() { return (mPercentChange == 0.0); } virtual bool CheckWhetherSkipEffect() { return (m_PercentChange == 0.0); }
virtual bool Process(); virtual bool Process();
private: private:
@ -68,7 +70,7 @@ class EffectChangeSpeed : public Effect
double mCurT1; double mCurT1;
// control values // control values
double mPercentChange; // percent change to apply to tempo double m_PercentChange; // percent change to apply to tempo
// -100% is meaningless, but sky's the upper limit. // -100% is meaningless, but sky's the upper limit.
// Slider is (-100, 200], but textCtrls can set higher. // Slider is (-100, 200], but textCtrls can set higher.
int mFromVinyl; // from standard vinyl speed (RPM) enum int mFromVinyl; // from standard vinyl speed (RPM) enum
@ -99,8 +101,8 @@ class ChangeSpeedDialog : public EffectDialog
void OnPreview(wxCommandEvent &event); void OnPreview(wxCommandEvent &event);
// helper fns // helper fns
void Update_Text_PercentChange(); // Update control per current mPercentChange. void Update_Text_PercentChange(); // Update control per current m_PercentChange.
void Update_Slider_PercentChange(); // Update control per current mPercentChange. void Update_Slider_PercentChange(); // Update control per current m_PercentChange.
void Update_Vinyl(); // Update Vinyl controls for new percent change. void Update_Vinyl(); // Update Vinyl controls for new percent change.
void Update_PercentChange(); // Update percent change controls for new Vinyl values. void Update_PercentChange(); // Update percent change controls for new Vinyl values.
@ -116,7 +118,7 @@ class ChangeSpeedDialog : public EffectDialog
public: public:
// effect parameters // effect parameters
double mPercentChange; // percent change to apply to tempo double m_PercentChange; // percent change to apply to tempo
// -100% is meaningless, but sky's the upper limit. // -100% is meaningless, but sky's the upper limit.
// Slider is (-100, 200], but textCtrls can set higher. // Slider is (-100, 200], but textCtrls can set higher.
int mFromVinyl; // from standard vinyl speed (RPM) int mFromVinyl; // from standard vinyl speed (RPM)