audacia/src/effects/ToneGen.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

86 lines
2.1 KiB
C++

/**********************************************************************
Audacity: A Digital Audio Editor
ToneGen.h
Steve Jolly
This class implements a tone generator effect.
**********************************************************************/
#ifndef __AUDACITY_EFFECT_TONEGEN__
#define __AUDACITY_EFFECT_TONEGEN__
#include <wx/arrstr.h>
#include <wx/string.h>
#include "../widgets/NumericTextCtrl.h"
#include "Effect.h"
class ShuttleGui;
#define CHIRP_PLUGIN_SYMBOL ComponentInterfaceSymbol{ XO("Chirp") }
#define TONE_PLUGIN_SYMBOL ComponentInterfaceSymbol{ XO("Tone") }
class EffectToneGen final : public Effect
{
public:
EffectToneGen(bool isChirp);
virtual ~EffectToneGen();
// ComponentInterface implementation
ComponentInterfaceSymbol GetSymbol() override;
wxString GetDescription() override;
wxString ManualPage() override;
// EffectDefinitionInterface implementation
EffectType GetType() override;
// EffectClientInterface implementation
unsigned GetAudioOutCount() override;
bool ProcessInitialize(sampleCount totalLen, ChannelNames chanMap = NULL) override;
size_t ProcessBlock(float **inBlock, float **outBlock, size_t blockLen) override;
bool DefineParams( ShuttleParams & S ) override;
bool GetAutomationParameters(CommandParameters & parms) override;
bool SetAutomationParameters(CommandParameters & parms) override;
// Effect implementation
void PopulateOrExchange(ShuttleGui & S) override;
bool TransferDataFromWindow() override;
bool TransferDataToWindow() override;
private:
// EffectToneGen implementation
void OnControlUpdate(wxCommandEvent & evt);
private:
bool mChirp;
// mSample is an external placeholder to remember the last "buffer"
// position so we use it to reinitialize from where we left
sampleCount mSample;
double mPositionInCycles;
// If we made these static variables,
// Tone and Chirp would share the same parameters.
int mWaveform;
int mInterpolation;
double mFrequency[2];
double mAmplitude[2];
double mLogFrequency[2];
NumericTextCtrl *mToneDurationT;
DECLARE_EVENT_TABLE()
};
#endif