Audacity 3.2.0
Distortion.h
Go to the documentation of this file.
1/**********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 Distortion.h
6
7 Steve Daulton
8
9**********************************************************************/
10
11#ifndef __AUDACITY_EFFECT_DISTORTION__
12#define __AUDACITY_EFFECT_DISTORTION__
13
14#include <queue>
15
17#include "ShuttleAutomation.h"
18
19class ShuttleGui;
20
21#define STEPS 1024 // number of +ve or -ve steps in lookup tabe
22#define TABLESIZE 2049 // size of lookup table (steps * 2 + 1)
23
24const bool defaultDCBlock = false;
25
27{
28public:
32 bool dcblock;
33 double threshold;
34 double noisefloor;
35 double param1;
36 double param2;
38
39 // DC block filter variables
40 std::queue<float> queuesamples;
41 double queuetotal;
42
44
45 // mMakeupGain is used by some distortion types to pass the
46 // amount of gain required to bring overall effect gain to unity
47 double mMakeupGain{ 1.0 };
48};
49
50
52{
53 static constexpr int mDefaultTableChoiceIndx = 0;
54 static constexpr bool mDefaultDCBlock = defaultDCBlock;
55 static constexpr double mDefaultThreshold_dB = -6.0;
56 static constexpr double mDefaultNoiseFloor = -70.0;
57 static constexpr double mDefaultParam1 = 50.0;
58 static constexpr double mDefaultParam2 = 50.0;
59 static constexpr int mDefaultRepeats = 1;
60
68};
69
70
72 EffectDistortionSettings, StatelessPerTrackEffect
73>
74{
75public:
76 struct Params;
77
79
81 virtual ~EffectDistortion();
82
83
84 // ComponentInterface implementation
85
86 ComponentInterfaceSymbol GetSymbol() const override;
87 TranslatableString GetDescription() const override;
88 ManualPageID ManualPage() const override;
89
90 // EffectDefinitionInterface implementation
91
92 EffectType GetType() const override;
93 RealtimeSince RealtimeSupport() const override;
94 RegistryPaths GetFactoryPresets() const override;
96 const override;
98
99
100 // Effect implementation
101
102 std::unique_ptr<EffectEditor> MakeEditor(
103 ShuttleGui & S, EffectInstance &instance,
104 EffectSettingsAccess &access, const EffectOutputs *pOutputs)
105 const override;
106
107 struct Editor;
108 struct Instance;
109 std::shared_ptr<EffectInstance> MakeInstance() const override;
110
111private:
112
114 {
115 ID_DCBlock = 10001,
121 };
122
123
124private:
125
127
128 const EffectParameterMethods& Parameters() const override;
129
131 {
144 };
145
147
148// (Note: 'Repeats' is the total number of times the effect is applied.)
152
153static constexpr EffectParameter DCBlock
156
160
164
165static constexpr EffectParameter Param1
166{ &EffectDistortionSettings::mParam1, L"Parameter 1",
168
169static constexpr EffectParameter Param2
170{ &EffectDistortionSettings::mParam2, L"Parameter 2",
172
173static constexpr EffectParameter Repeats{
176
177};
178
179#endif
const bool defaultDCBlock
Definition: Distortion.h:24
EffectType
std::optional< std::unique_ptr< EffectSettingsAccess::Message > > OptionalMessage
std::vector< RegistryPath > RegistryPaths
Definition: Identifier.h:219
#define S(N)
Definition: ToChars.cpp:64
static Settings & settings()
Definition: TrackInfo.cpp:69
ComponentInterfaceSymbol pairs a persistent string identifier used internally with an optional,...
RealtimeSince
In which versions of Audacity was an effect realtime capable?
A WaveShaper distortion effect.
Definition: Distortion.h:74
static constexpr EffectParameter Threshold_dB
Definition: Distortion.h:158
static constexpr EffectParameter Param2
Definition: Distortion.h:170
std::shared_ptr< EffectInstance > MakeInstance() const override
Make an object maintaining short-term state of an Effect.
Definition: Distortion.cpp:310
OptionalMessage DoLoadFactoryPreset(int id, EffectSettings &settings)
Definition: Distortion.cpp:437
static const ComponentInterfaceSymbol Symbol
Definition: Distortion.h:76
static constexpr EffectParameter Param1
Definition: Distortion.h:166
virtual ~EffectDistortion()
Definition: Distortion.cpp:328
static const EnumValueSymbol kTableTypeStrings[nTableTypes]
Definition: Distortion.h:146
OptionalMessage LoadFactoryPreset(int id, EffectSettings &settings) const override
Definition: Distortion.cpp:431
ComponentInterfaceSymbol GetSymbol() const override
Definition: Distortion.cpp:334
static constexpr EffectParameter Repeats
Definition: Distortion.h:173
static constexpr EffectParameter DCBlock
Definition: Distortion.h:154
static constexpr EnumParameter TableTypeIndx
Definition: Distortion.h:150
static constexpr EffectParameter NoiseFloor
Definition: Distortion.h:162
RealtimeSince RealtimeSupport() const override
Since which version of Audacity has the effect supported realtime?
Definition: Distortion.cpp:356
EffectType GetType() const override
Type determines how it behaves.
Definition: Distortion.cpp:351
TranslatableString GetDescription() const override
Definition: Distortion.cpp:339
const EffectParameterMethods & Parameters() const override
Definition: Distortion.cpp:63
std::unique_ptr< EffectEditor > MakeEditor(ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access, const EffectOutputs *pOutputs) const override
Called only from PopulateUI, to add controls to effect panel.
Definition: Distortion.cpp:453
ManualPageID ManualPage() const override
Name of a page in the Audacity alpha manual, default is empty.
Definition: Distortion.cpp:344
RegistryPaths GetFactoryPresets() const override
Report names of factory presets.
Definition: Distortion.cpp:418
sampleCount skipcount
Definition: Distortion.h:30
std::queue< float > queuesamples
Definition: Distortion.h:40
Performs effect computation.
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:640
Holds a msgid for the translation catalog; may also bind format arguments.
Positions or offsets within audio files need a wide type.
Definition: SampleCount.h:19
static constexpr bool mDefaultDCBlock
Definition: Distortion.h:54
static constexpr int mDefaultRepeats
Definition: Distortion.h:59
static constexpr double mDefaultParam2
Definition: Distortion.h:58
static constexpr double mDefaultParam1
Definition: Distortion.h:57
static constexpr double mDefaultNoiseFloor
Definition: Distortion.h:56
static constexpr double mDefaultThreshold_dB
Definition: Distortion.h:55
static constexpr int mDefaultTableChoiceIndx
Definition: Distortion.h:53
Externalized state of a plug-in.