/********************************************************************** Audacity: A Digital Audio Editor Amplify.h Dominic Mazzoni This rewritten class supports a smart Amplify effect - it calculates the maximum amount of gain that can be applied to all tracks without causing clipping and selects this as the default parameter. **********************************************************************/ #ifndef __AUDACITY_EFFECT_AMPLIFY__ #define __AUDACITY_EFFECT_AMPLIFY__ #include #include #include #include #include #include "../ShuttleGui.h" #include "Effect.h" #define AMPLIFY_PLUGIN_SYMBOL XO("Amplify") class EffectAmplify : public Effect { public: EffectAmplify(); virtual ~EffectAmplify(); // IdentInterface implementation virtual wxString GetSymbol(); virtual wxString GetDescription(); // EffectIdentInterface implementation virtual EffectType GetType(); // EffectClientInterface implementation virtual int GetAudioInCount(); virtual int GetAudioOutCount(); virtual sampleCount ProcessBlock(float **inBlock, float **outBlock, sampleCount blockLen); virtual bool GetAutomationParameters(EffectAutomationParameters & parms); virtual bool SetAutomationParameters(EffectAutomationParameters & parms); virtual bool LoadFactoryDefaults(); // Effect implementation virtual bool Init(); virtual void Preview(bool dryOnly); virtual void PopulateOrExchange(ShuttleGui & S); virtual bool TransferDataToWindow(); virtual bool TransferDataFromWindow(); private: // EffectAmplify implementation void OnAmpText(wxCommandEvent & evt); void OnPeakText(wxCommandEvent & evt); void OnAmpSlider(wxCommandEvent & evt); void OnClipCheckBox(wxCommandEvent & evt); void CheckClip(); private: double mPeak; double mRatio; double mRatioClip; // maximum value of mRatio which does not cause clipping double mAmp; double mNewPeak; bool mCanClip; wxSlider *mAmpS; wxTextCtrl *mAmpT; wxTextCtrl *mNewPeakT; wxCheckBox *mClip; DECLARE_EVENT_TABLE(); }; #endif // __AUDACITY_EFFECT_AMPLIFY__