audacia/src/effects/SBSMSEffect.h

59 lines
1.7 KiB
C++

/**********************************************************************
Audacity: A Digital Audio Editor
SBSMSEffect.h
ClaytonOtey
This abstract class contains all of the common code for an
effect that uses SBSMS to do its processing (TimeScale)
**********************************************************************/
#if USE_SBSMS
#ifndef __AUDACITY_EFFECT_SBSMS__
#define __AUDACITY_EFFECT_SBSMS__
#include "Effect.h"
#include "../../../lib-src/header-substitutes/sbsms.h"
using namespace _sbsms_;
class LabelTrack;
class EffectSBSMS /* not final */ : public Effect
{
public:
bool Process() override;
void setParameters(double rateStart, double rateEnd, double pitchStart, double pitchEnd,
SlideType rateSlideType, SlideType pitchSlideType,
bool bLinkRatePitch, bool bRateReferenceInput, bool bPitchReferenceInput);
void setParameters(double tempoRatio, double pitchRatio); // Constant ratio (tempoRatio, pitchRatio)
static double getInvertedStretchedTime(double rateStart, double rateEnd, SlideType slideType, double outputTime);
static double getRate(double rateStart, double rateEnd, SlideType slideType, double t);
protected:
wxString mProxyEffectName { XO("SBSMS Time / Pitch Stretch") };
wxString GetName() override { return mProxyEffectName; };
private:
bool ProcessLabelTrack(LabelTrack *track);
double rateStart, rateEnd, pitchStart, pitchEnd;
bool bLinkRatePitch, bRateReferenceInput, bPitchReferenceInput;
SlideType rateSlideType;
SlideType pitchSlideType;
int mCurTrackNum;
double mCurT0;
double mCurT1;
float mTotalStretch;
friend class EffectChangeTempo;
friend class EffectChangePitch;
};
#endif
#endif