/********************************************************************** 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 "Effect.h" class wxCheckBox; class wxSlider; class wxSpinCtrl; class ShuttleGui; struct Reverb_priv_t; class EffectReverb final : public Effect { public: static const ComponentInterfaceSymbol Symbol; 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; TranslatableString 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; RegistryPaths 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 = {}); #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