mirror of
https://github.com/cookiengineer/audacity
synced 2026-01-02 14:17:07 +01:00
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.
130 lines
3.0 KiB
C++
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
|