1
0
mirror of https://github.com/cookiengineer/audacity synced 2026-01-02 14:17:07 +01:00
Files
audacity/src/effects/Reverb.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

130 lines
3.0 KiB
C++

/**********************************************************************
Audacity: A Digital Audio Editor
Audacity(R) is copyright (c) 1999-2013 Audacity Team.
License: GPL v2. See License.txt.
Reverb.h
Rob Sykes, Vaughan Johnson
**********************************************************************/
#ifndef __AUDACITY_EFFECT_REVERB__
#define __AUDACITY_EFFECT_REVERB__
#include <wx/checkbox.h>
#include <wx/event.h>
#include <wx/slider.h>
#include <wx/spinctrl.h>
#include <wx/string.h>
#include "Effect.h"
class ShuttleGui;
#define REVERB_PLUGIN_SYMBOL ComponentInterfaceSymbol{ XO("Reverb") }
struct Reverb_priv_t;
class EffectReverb final : public Effect
{
public:
EffectReverb();
virtual ~EffectReverb();
struct Params
{
double mRoomSize;
double mPreDelay;
double mReverberance;
double mHfDamping;
double mToneLow;
double mToneHigh;
double mWetGain;
double mDryGain;
double mStereoWidth;
bool mWetOnly;
};
// ComponentInterface implementation
ComponentInterfaceSymbol GetSymbol() override;
wxString GetDescription() override;
wxString ManualPage() override;
// EffectDefinitionInterface implementation
EffectType GetType() override;
// EffectClientInterface implementation
unsigned GetAudioInCount() override;
unsigned GetAudioOutCount() override;
bool ProcessInitialize(sampleCount totalLen, ChannelNames chanMap = NULL) override;
bool ProcessFinalize() 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;
wxArrayString GetFactoryPresets() override;
bool LoadFactoryPreset(int id) override;
// Effect implementation
bool Startup() override;
void PopulateOrExchange(ShuttleGui & S) override;
bool TransferDataToWindow() override;
bool TransferDataFromWindow() override;
private:
// EffectReverb implementation
void SetTitle(const wxString & name = wxT(""));
#define SpinSliderHandlers(n) \
void On ## n ## Slider(wxCommandEvent & evt); \
void On ## n ## Text(wxCommandEvent & evt);
SpinSliderHandlers(RoomSize)
SpinSliderHandlers(PreDelay)
SpinSliderHandlers(Reverberance)
SpinSliderHandlers(HfDamping)
SpinSliderHandlers(ToneLow)
SpinSliderHandlers(ToneHigh)
SpinSliderHandlers(WetGain)
SpinSliderHandlers(DryGain)
SpinSliderHandlers(StereoWidth)
#undef SpinSliderHandlers
private:
unsigned mNumChans {};
Reverb_priv_t *mP;
Params mParams;
bool mProcessingEvent;
#define SpinSlider(n) \
wxSpinCtrl *m ## n ## T; \
wxSlider *m ## n ## S;
SpinSlider(RoomSize)
SpinSlider(PreDelay)
SpinSlider(Reverberance)
SpinSlider(HfDamping)
SpinSlider(ToneLow)
SpinSlider(ToneHigh)
SpinSlider(WetGain)
SpinSlider(DryGain)
SpinSlider(StereoWidth)
#undef SpinSlider
wxCheckBox *mWetOnlyC;
DECLARE_EVENT_TABLE()
};
#endif