1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-08-10 17:11:17 +02:00
audacity/src/effects/Paulstretch.h
James Crook 466e9c179e Create ComponentInterface
It combines the old IdentInterface with the ParamsInterface, providing an identifier and parameters (if needed).
The main purpose of the change is to make the class hierarchy (as viewed via doxygen) much easier to follow.
2018-11-02 17:04:43 +00:00

69 lines
1.6 KiB
C++

/**********************************************************************
Audacity: A Digital Audio Editor
Paulstretch.h
Nasca Octavian Paul (Paul Nasca)
**********************************************************************/
#ifndef __AUDACITY_EFFECT_PAULSTRETCH__
#define __AUDACITY_EFFECT_PAULSTRETCH__
#include <wx/string.h>
#include "Effect.h"
class ShuttleGui;
#define PAULSTRETCH_PLUGIN_SYMBOL ComponentInterfaceSymbol{ XO("Paulstretch") }
class EffectPaulstretch final : public Effect
{
public:
EffectPaulstretch();
virtual ~EffectPaulstretch();
// ComponentInterface implementation
ComponentInterfaceSymbol GetSymbol() override;
wxString GetDescription() override;
wxString ManualPage() override;
// EffectDefinitionInterface implementation
EffectType GetType() override;
// EffectClientInterface implementation
bool DefineParams( ShuttleParams & S ) override;
bool GetAutomationParameters(CommandParameters & parms) override;
bool SetAutomationParameters(CommandParameters & parms) override;
// Effect implementation
double CalcPreviewInputLength(double previewLength) override;
bool Process() override;
void PopulateOrExchange(ShuttleGui & S) override;
bool TransferDataToWindow() override;
bool TransferDataFromWindow() override;
private:
// EffectPaulstretch implementation
void OnText(wxCommandEvent & evt);
size_t GetBufferSize(double rate);
bool ProcessOne(WaveTrack *track, double t0, double t1, int count);
private:
float mAmount;
float mTime_resolution; //seconds
double m_t1;
DECLARE_EVENT_TABLE()
};
#endif