1 /********************************************************************** 2 3 Audacity: A Digital Audio Editor 4 Audacity(R) is copyright (c) 1999-2013 Audacity Team. 5 License: GPL v2. See License.txt. 6 7 Reverb.h 8 Rob Sykes, Vaughan Johnson 9 10 **********************************************************************/ 11 12 #ifndef __AUDACITY_EFFECT_REVERB__ 13 #define __AUDACITY_EFFECT_REVERB__ 14 15 #include "Effect.h" 16 17 class wxCheckBox; 18 class wxSlider; 19 class wxSpinCtrl; 20 class ShuttleGui; 21 22 struct Reverb_priv_t; 23 24 class EffectReverb final : public Effect 25 { 26 public: 27 static const ComponentInterfaceSymbol Symbol; 28 29 EffectReverb(); 30 virtual ~EffectReverb(); 31 32 struct Params 33 { 34 double mRoomSize; 35 double mPreDelay; 36 double mReverberance; 37 double mHfDamping; 38 double mToneLow; 39 double mToneHigh; 40 double mWetGain; 41 double mDryGain; 42 double mStereoWidth; 43 bool mWetOnly; 44 }; 45 46 // ComponentInterface implementation 47 48 ComponentInterfaceSymbol GetSymbol() override; 49 TranslatableString GetDescription() override; 50 ManualPageID ManualPage() override; 51 52 // EffectDefinitionInterface implementation 53 54 EffectType GetType() override; 55 56 // EffectClientInterface implementation 57 58 unsigned GetAudioInCount() override; 59 unsigned GetAudioOutCount() override; 60 bool ProcessInitialize(sampleCount totalLen, ChannelNames chanMap = NULL) override; 61 bool ProcessFinalize() override; 62 size_t ProcessBlock(float **inBlock, float **outBlock, size_t blockLen) override; 63 bool DefineParams( ShuttleParams & S ) override; 64 bool GetAutomationParameters(CommandParameters & parms) override; 65 bool SetAutomationParameters(CommandParameters & parms) override; 66 RegistryPaths GetFactoryPresets() override; 67 bool LoadFactoryPreset(int id) override; 68 69 // Effect implementation 70 71 bool Startup() override; 72 void PopulateOrExchange(ShuttleGui & S) override; 73 bool TransferDataToWindow() override; 74 bool TransferDataFromWindow() override; 75 76 private: 77 // EffectReverb implementation 78 79 void SetTitle(const wxString & name = {}); 80 81 #define SpinSliderHandlers(n) \ 82 void On ## n ## Slider(wxCommandEvent & evt); \ 83 void On ## n ## Text(wxCommandEvent & evt); 84 85 SpinSliderHandlers(RoomSize) SpinSliderHandlers(PreDelay)86 SpinSliderHandlers(PreDelay) 87 SpinSliderHandlers(Reverberance) 88 SpinSliderHandlers(HfDamping) 89 SpinSliderHandlers(ToneLow) 90 SpinSliderHandlers(ToneHigh) 91 SpinSliderHandlers(WetGain) 92 SpinSliderHandlers(DryGain) 93 SpinSliderHandlers(StereoWidth) 94 95 #undef SpinSliderHandlers 96 97 private: 98 unsigned mNumChans {}; 99 Reverb_priv_t *mP; 100 101 Params mParams; 102 103 bool mProcessingEvent; 104 105 #define SpinSlider(n) \ 106 wxSpinCtrl *m ## n ## T; \ 107 wxSlider *m ## n ## S; 108 109 SpinSlider(RoomSize) 110 SpinSlider(PreDelay) 111 SpinSlider(Reverberance) 112 SpinSlider(HfDamping) 113 SpinSlider(ToneLow) 114 SpinSlider(ToneHigh) 115 SpinSlider(WetGain) 116 SpinSlider(DryGain) 117 SpinSlider(StereoWidth) 118 119 #undef SpinSlider 120 121 wxCheckBox *mWetOnlyC; 122 123 DECLARE_EVENT_TABLE() 124 }; 125 126 #endif 127