Audacity 3.2.0
Echo.h
Go to the documentation of this file.
1/**********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 Echo.h
6
7 Dominic Mazzoni
8 Vaughan Johnson (dialog)
9
10**********************************************************************/
11
12#ifndef __AUDACITY_EFFECT_ECHO__
13#define __AUDACITY_EFFECT_ECHO__
14
16#include "ShuttleAutomation.h"
17#include <float.h> // for FLT_MAX
18
19class ShuttleGui;
20
22
23
25{
26 static constexpr double delayDefault = 1.0;
27 static constexpr double decayDefault = 0.5;
28
31};
32
33class EffectEcho final : public EffectWithSettings<
34 EffectEchoSettings, StatelessPerTrackEffect
35>
36{
37public:
38
40
41 EffectEcho();
42 virtual ~EffectEcho();
43
44 // ComponentInterface implementation
45
46 ComponentInterfaceSymbol GetSymbol() const override;
47 TranslatableString GetDescription() const override;
48 ManualPageID ManualPage() const override;
49
50 // EffectDefinitionInterface implementation
51
52 EffectType GetType() const override;
53
54 // Effect implementation
55 std::unique_ptr<EffectEditor> MakeEditor(
56 ShuttleGui & S, EffectInstance &instance,
57 EffectSettingsAccess &access, const EffectOutputs *pOutputs)
58 const override;
59
60 struct Editor;
61
62 struct Instance;
63
64 std::shared_ptr<EffectInstance> MakeInstance() const override;
65
66private:
67 // EffectEcho implementation
68
69
70 const EffectParameterMethods& Parameters() const override;
71
72#if 0
73 // TODO simplify like this in C++20
74 using ParametersType = CapturedParameters<EffectEcho,
76 &EffectEcho::delay, L"Delay", 1.0f, 0.001f, FLT_MAX, 1.0f }
78 &EffectEcho::decay, L"Decay", 0.5f, 0.0f, FLT_MAX, 1.0f }
79 >;
80#else
81
83 L"Delay", EffectEchoSettings::delayDefault, 0.001f, FLT_MAX, 1.0f };
85 L"Decay", EffectEchoSettings::decayDefault, 0.0f, FLT_MAX, 1.0f };
86
87#endif
88};
89
90#endif // __AUDACITY_EFFECT_ECHO__
EffectType
#define S(N)
Definition: ToChars.cpp:64
Generates EffectParameterMethods overrides from variadic template arguments.
ComponentInterfaceSymbol pairs a persistent string identifier used internally with an optional,...
An Effect that causes an echo, variable delay and volume.
Definition: Echo.h:36
EffectEcho()
Definition: Echo.cpp:86
static const ComponentInterfaceSymbol Symbol
Definition: Echo.h:39
TranslatableString GetDescription() const override
Definition: Echo.cpp:102
ComponentInterfaceSymbol GetSymbol() const override
Definition: Echo.cpp:97
std::shared_ptr< EffectInstance > MakeInstance() const override
Make an object maintaining short-term state of an Effect.
Definition: Echo.cpp:78
ManualPageID ManualPage() const override
Name of a page in the Audacity alpha manual, default is empty.
Definition: Echo.cpp:107
static constexpr EffectParameter Decay
Definition: Echo.h:84
const EffectParameterMethods & Parameters() const override
Definition: Echo.cpp:31
EffectType GetType() const override
Type determines how it behaves.
Definition: Echo.cpp:114
static constexpr EffectParameter Delay
Definition: Echo.h:82
virtual ~EffectEcho()
Definition: Echo.cpp:91
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: Echo.cpp:194
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.
static constexpr double delayDefault
Definition: Echo.h:26
static constexpr double decayDefault
Definition: Echo.h:27
double decay
Definition: Echo.h:30
double delay
Definition: Echo.h:29