Audacity 3.2.0
Normalize.h
Go to the documentation of this file.
1/**********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 Normalize.h
6
7 Dominic Mazzoni
8 Vaughan Johnson (Preview)
9
10**********************************************************************/
11
12#ifndef __AUDACITY_EFFECT_NORMALIZE__
13#define __AUDACITY_EFFECT_NORMALIZE__
14
15#include "StatefulEffect.h"
16#include "Biquad.h"
17#include "ShuttleAutomation.h"
18#include <wx/weakref.h>
19
20class wxCheckBox;
21class wxStaticText;
22class wxTextCtrl;
23class ShuttleGui;
24
25class EffectNormalize final : public StatefulEffect
26{
27public:
28 static inline EffectNormalize *
31
33 virtual ~EffectNormalize();
34
35 // ComponentInterface implementation
36
37 ComponentInterfaceSymbol GetSymbol() const override;
38 TranslatableString GetDescription() const override;
39 ManualPageID ManualPage() const override;
40
41 // EffectDefinitionInterface implementation
42
43 EffectType GetType() const override;
44
45 // Effect implementation
46
47 bool CheckWhetherSkipEffect(const EffectSettings &settings) const override;
48 bool Process(EffectInstance &instance, EffectSettings &settings) override;
49 std::unique_ptr<EffectEditor> PopulateOrExchange(
50 ShuttleGui & S, EffectInstance &instance,
51 EffectSettingsAccess &access, const EffectOutputs *pOutputs) override;
52 bool TransferDataToWindow(const EffectSettings &settings) override;
54
55private:
56 // EffectNormalize implementation
57
58 bool ProcessOne(
59 WaveTrack * t, const TranslatableString &msg, double& progress, float offset);
60 bool AnalyseTrack(const WaveTrack * track, const TranslatableString &msg,
61 double &progress, float &offset, float &extent);
62 bool AnalyseTrackData(const WaveTrack * track, const TranslatableString &msg, double &progress,
63 float &offset);
64 void AnalyseDataDC(float *buffer, size_t len);
65 void ProcessData(float *buffer, size_t len, float offset);
66
67 void OnUpdateUI(wxCommandEvent & evt);
68 void UpdateUI();
69
70private:
71 wxWeakRef<wxWindow> mUIParent{};
72
73 double mPeakLevel;
74 bool mGain;
75 bool mDC;
77
78 double mCurT0;
79 double mCurT1;
80 float mMult;
81 double mSum;
82
83 wxCheckBox *mGainCheckBox;
84 wxCheckBox *mDCCheckBox;
85 wxTextCtrl *mLevelTextCtrl;
86 wxStaticText *mLeveldB;
87 wxStaticText *mWarning;
88 wxCheckBox *mStereoIndCheckBox;
90
91 const EffectParameterMethods& Parameters() const override;
92 DECLARE_EVENT_TABLE()
93
95 L"PeakLevel", -1.0, -145.0, 0.0, 1 };
97 L"RemoveDcOffset", true, false, true, 1 };
99 L"ApplyGain", true, false, true, 1 };
101 L"StereoIndependent", false, false, true, 1 };
102};
103
104#endif
EffectType
#define S(N)
Definition: ToChars.cpp:64
static Settings & settings()
Definition: TrackInfo.cpp:83
ComponentInterfaceSymbol pairs a persistent string identifier used internally with an optional,...
Performs effect computation.
An Effect to bring the peak level up to a chosen level.
Definition: Normalize.h:26
static constexpr EffectParameter RemoveDC
Definition: Normalize.h:96
static EffectNormalize * FetchParameters(EffectNormalize &e, EffectSettings &)
Definition: Normalize.h:29
bool TransferDataFromWindow(EffectSettings &settings) override
Definition: Normalize.cpp:278
wxStaticText * mWarning
Definition: Normalize.h:87
double mCurT0
Definition: Normalize.h:78
EffectType GetType() const override
Type determines how it behaves.
Definition: Normalize.cpp:80
wxStaticText * mLeveldB
Definition: Normalize.h:86
static constexpr EffectParameter StereoInd
Definition: Normalize.h:100
bool Process(EffectInstance &instance, EffectSettings &settings) override
Definition: Normalize.cpp:92
std::unique_ptr< EffectEditor > PopulateOrExchange(ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access, const EffectOutputs *pOutputs) override
Add controls to effect panel; always succeeds.
Definition: Normalize.cpp:211
bool TransferDataToWindow(const EffectSettings &settings) override
Definition: Normalize.cpp:266
const EffectParameterMethods & Parameters() const override
Definition: Normalize.cpp:33
bool AnalyseTrack(const WaveTrack *track, const TranslatableString &msg, double &progress, float &offset, float &extent)
Definition: Normalize.cpp:290
bool AnalyseTrackData(const WaveTrack *track, const TranslatableString &msg, double &progress, float &offset)
Definition: Normalize.cpp:329
static constexpr EffectParameter PeakLevel
Definition: Normalize.h:94
wxWeakRef< wxWindow > mUIParent
Definition: Normalize.h:71
double mPeakLevel
Definition: Normalize.h:73
wxCheckBox * mGainCheckBox
Definition: Normalize.h:83
wxCheckBox * mDCCheckBox
Definition: Normalize.h:84
ComponentInterfaceSymbol GetSymbol() const override
Definition: Normalize.cpp:63
bool ProcessOne(WaveTrack *t, const TranslatableString &msg, double &progress, float offset)
Definition: Normalize.cpp:394
double mCurT1
Definition: Normalize.h:79
virtual ~EffectNormalize()
Definition: Normalize.cpp:57
static const ComponentInterfaceSymbol Symbol
Definition: Normalize.h:30
void OnUpdateUI(wxCommandEvent &evt)
Definition: Normalize.cpp:463
static constexpr EffectParameter ApplyGain
Definition: Normalize.h:98
TranslatableString GetDescription() const override
Definition: Normalize.cpp:68
wxTextCtrl * mLevelTextCtrl
Definition: Normalize.h:85
wxCheckBox * mStereoIndCheckBox
Definition: Normalize.h:88
void ProcessData(float *buffer, size_t len, float offset)
Definition: Normalize.cpp:455
bool CheckWhetherSkipEffect(const EffectSettings &settings) const override
After Init(), tell whether Process() should be skipped.
Definition: Normalize.cpp:87
ManualPageID ManualPage() const override
Name of a page in the Audacity alpha manual, default is empty.
Definition: Normalize.cpp:73
void AnalyseDataDC(float *buffer, size_t len)
Definition: Normalize.cpp:449
Hold values to send to effect output meters.
Interface for manipulations of an Effect's settings.
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
Definition: ShuttleGui.h:625
Holds a msgid for the translation catalog; may also bind format arguments.
A Track that contains audio waveform data.
Definition: WaveTrack.h:51
Externalized state of a plug-in.