Audacity 3.2.0
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Friends | List of all members
EffectBase Class Referenceabstract

Base class for many of the effects in Audacity. More...

#include <EffectBase.h>

Inheritance diagram for EffectBase:
Collaboration diagram for EffectBase:

Public Member Functions

 EffectBase ()
 ~EffectBase () override
bool IsLinearEffect () const
bool PreviewsFullSelection () const
void SetTracks (TrackList *pTracks)
virtual std::any BeginPreview (const EffectSettings &settings)
 Called when Preview() starts, to allow temporary effect state changes. More...
bool DoEffect (EffectSettings &settings, const InstanceFinder &finder, double projectRate, TrackList *list, WaveTrackFactory *factory, NotifyingSelectedRegion &selectedRegion, unsigned flags, const EffectSettingsAccessPtr &pAccess) override
virtual double CalcPreviewInputLength (const EffectSettings &settings, double previewLength) const =0
void CountWaveTracks ()
- Public Member Functions inherited from EffectPlugin
EffectPluginoperator= (EffectPlugin &)=delete
virtual ~EffectPlugin ()
virtual bool HasOptions () const =0
virtual bool CanExportPresets () const =0
 Whether the effect supports export of presets to files, and importing too. More...
virtual const EffectSettingsManagerGetDefinition () const =0
virtual bool SaveSettingsAsString (const EffectSettings &settings, wxString &parms) const =0
virtual OptionalMessage LoadSettingsFromString (const wxString &parms, EffectSettings &settings) const =0
virtual bool IsBatchProcessing () const =0
virtual void SetBatchProcessing ()=0
virtual void UnsetBatchProcessing ()=0
virtual bool DoEffect (EffectSettings &settings, const InstanceFinder &finder, double projectRate, TrackList *list, WaveTrackFactory *factory, NotifyingSelectedRegion &selectedRegion, unsigned flags, const EffectSettingsAccessPtr &pAccess=nullptr)=0
- Public Member Functions inherited from EffectInstanceFactory
virtual ~EffectInstanceFactory ()
virtual std::shared_ptr< EffectInstanceMakeInstance () const =0
 Make an object maintaining short-term state of an Effect. More...
- Public Member Functions inherited from EffectSettingsManager
virtual ~EffectSettingsManager ()
virtual bool VisitSettings (SettingsVisitor &visitor, EffectSettings &settings)
virtual bool VisitSettings (ConstSettingsVisitor &visitor, const EffectSettings &settings) const
virtual EffectSettings MakeSettings () const
virtual bool CopySettingsContents (const EffectSettings &src, EffectSettings &dst) const
 Update one settings object from another. More...
virtual bool SaveSettings (const EffectSettings &settings, CommandParameters &parms) const =0
 Store settings as keys and values. More...
virtual bool LoadSettings (const CommandParameters &parms, EffectSettings &settings) const =0
 Restore settings from keys and values. More...
virtual RegistryPaths GetFactoryPresets () const =0
 Report names of factory presets. More...
virtual OptionalMessage LoadUserPreset (const RegistryPath &name, EffectSettings &settings) const =0
virtual bool SaveUserPreset (const RegistryPath &name, const EffectSettings &settings) const =0
 Save settings in the configuration file as a user-named preset. More...
virtual OptionalMessage LoadFactoryPreset (int id, EffectSettings &settings) const =0
virtual OptionalMessage LoadFactoryDefaults (EffectSettings &settings) const =0
virtual std::unique_ptr< EffectOutputsMakeOutputs () const
 Produce an object to hold values to send to effect output meters. More...
- Public Member Functions inherited from EffectDefinitionInterface
virtual ~EffectDefinitionInterface ()
virtual EffectType GetType () const =0
 Type determines how it behaves. More...
virtual EffectType GetClassification () const
 Determines which menu it appears in; default same as GetType(). More...
virtual EffectFamilySymbol GetFamily () const =0
 Report identifier and user-visible name of the effect protocol. More...
virtual bool IsInteractive () const =0
 Whether the effect needs a dialog for entry of settings. More...
virtual bool IsDefault () const =0
 Whether the effect sorts "above the line" in the menus. More...
virtual RealtimeSince RealtimeSupport () const =0
 Since which version of Audacity has the effect supported realtime? More...
bool SupportsRealtime () const
virtual bool SupportsAutomation () const =0
 Whether the effect has any automatable controls. More...
virtual bool EnablesDebug () const
 Whether the effect dialog should have a Debug button; default, always false. More...
virtual ManualPageID ManualPage () const
 Name of a page in the Audacity alpha manual, default is empty. More...
virtual FilePath HelpPage () const
 Fully qualified local help file name, default is empty. More...
virtual bool IsHiddenFromMenus () const
 Default is false. More...
- Public Member Functions inherited from ComponentInterface
virtual ~ComponentInterface ()
virtual PluginPath GetPath () const =0
virtual ComponentInterfaceSymbol GetSymbol () const =0
virtual VendorSymbol GetVendor () const =0
virtual wxString GetVersion () const =0
virtual TranslatableString GetDescription () const =0
TranslatableString GetName () const

Static Public Member Functions

static std::optional< InstancePointerFindInstance (EffectPlugin &plugin)
static InstanceFinder DefaultInstanceFinder (EffectPlugin &plugin)
- Static Public Member Functions inherited from EffectDefinitionInterface
static Identifier GetSquashedName (const Identifier &ident)
 A utility that strips spaces and CamelCases a name. More...

Public Attributes

std::shared_ptr< TrackListmTracks {}
int mNumTracks {}
BasicUI::ProgressDialogmProgress {}
double mProjectRate {}
WaveTrackFactorymFactory {}
double mT0 {}
double mT1 {}
bool mIsPreview { false }

Protected Member Functions

virtual bool CheckWhetherSkipEffect (const EffectSettings &settings) const =0
 After Init(), tell whether Process() should be skipped. More...
void SetLinearEffectFlag (bool linearEffectFlag)
void SetPreviewFullSelectionFlag (bool previewDurationFlag)
bool IsPreviewing () const
const TrackListinputTracks () const
const AudacityProjectFindProject () const

Protected Attributes

wxArrayString mPresetNames
unsigned mUIFlags { 0 }

Private Member Functions

double GetDefaultDuration ()

Private Attributes

bool mIsLinearEffect { false }
bool mPreviewFullSelection { false }
int mNumGroups {}


class Effect

Additional Inherited Members

- Public Types inherited from EffectPlugin
using EffectSettingsAccessPtr = std::shared_ptr< EffectSettingsAccess >
using InstancePointer = std::shared_ptr< EffectInstanceEx >
using InstanceFinder = std::function< std::optional< InstancePointer >(EffectSettings &settings) >
- Public Types inherited from EffectDefinitionInterface
enum class  RealtimeSince : unsigned { Never , After_3_1 , Always }
 In which versions of Audacity was an effect realtime capable? More...
- Static Public Attributes inherited from EffectPlugin
static const wxString kUserPresetIdent = wxT("User Preset:")
static const wxString kFactoryPresetIdent = wxT("Factory Preset:")
static const wxString kCurrentSettingsIdent = wxT("<Current Settings>")
static const wxString kFactoryDefaultsIdent = wxT("<Factory Defaults>")

Detailed Description

Base class for many of the effects in Audacity.

Definition at line 26 of file EffectBase.h.

Constructor & Destructor Documentation

◆ EffectBase()

EffectBase::EffectBase ( )

Definition at line 32 of file EffectBase.cpp.

34 // PRL: I think this initialization of mProjectRate doesn't matter
35 // because it is always reassigned in DoEffect before it is used
36 // STF: but can't call AudioIOBase::GetOptimalSupportedSampleRate() here.
37 // (Which is called to compute the default-default value.) (Bug 2280)
double mProjectRate
Definition: EffectBase.h:112
bool ReadWithDefault(T *pVar, const T &defaultValue) const
overload of ReadWithDefault returning a boolean that is true if the value was previously defined *‍/
Definition: Prefs.h:213
PROJECT_RATE_API IntSetting DefaultSampleRate

References QualitySettings::DefaultSampleRate, mProjectRate, and Setting< T >::ReadWithDefault().

Here is the call graph for this function:

◆ ~EffectBase()

EffectBase::~EffectBase ( )

Member Function Documentation

◆ BeginPreview()

std::any EffectBase::BeginPreview ( const EffectSettings settings)

Called when Preview() starts, to allow temporary effect state changes.

default returns a null

will undo its effects in its destructor before Preview() finishes

Reimplemented in EffectAmplify, and EffectTimeScale.

Definition at line 239 of file EffectBase.cpp.

241 return {};

Referenced by EffectPreview().

Here is the caller graph for this function:

◆ CalcPreviewInputLength()

virtual double EffectBase::CalcPreviewInputLength ( const EffectSettings settings,
double  previewLength 
) const
pure virtual

Implemented in Effect, EffectChangeSpeed, EffectPaulstretch, EffectTimeScale, and EffectTruncSilence.

Referenced by EffectPreview().

Here is the caller graph for this function:

◆ CheckWhetherSkipEffect()

virtual bool EffectBase::CheckWhetherSkipEffect ( const EffectSettings settings) const
protectedpure virtual

After Init(), tell whether Process() should be skipped.

Implemented in Effect, EffectBassTreble, EffectChangeSpeed, EffectClickRemoval, EffectNoiseRemoval, and EffectNormalize.

Referenced by DoEffect().

Here is the caller graph for this function:

◆ CountWaveTracks()

void EffectBase::CountWaveTracks ( )

Definition at line 232 of file EffectBase.cpp.

234 const auto range = mTracks->Selected<const WaveTrack>();
235 mNumTracks = range.sum(&WaveTrack::NChannels);
236 mNumGroups = range.size();
int mNumTracks
Definition: EffectBase.h:110
int mNumGroups
Definition: EffectBase.h:127
std::shared_ptr< TrackList > mTracks
Definition: EffectBase.h:109
A Track that contains audio waveform data.
Definition: WaveTrack.h:227
size_t NChannels() const override
May report more than one only when this is a leader track.
Definition: WaveTrack.cpp:836

References mNumGroups, mNumTracks, mTracks, and WaveTrack::NChannels().

Referenced by DoEffect(), and EffectPreview().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DefaultInstanceFinder()

auto EffectBase::DefaultInstanceFinder ( EffectPlugin plugin)

Definition at line 254 of file EffectBase.cpp.

256 return [&plugin](auto&) { return FindInstance(plugin); };
static std::optional< InstancePointer > FindInstance(EffectPlugin &plugin)
Definition: EffectBase.cpp:244

Referenced by Effect::Delegate().

Here is the caller graph for this function:

◆ DoEffect()

bool EffectBase::DoEffect ( EffectSettings settings,
const InstanceFinder finder,
double  projectRate,
TrackList list,
WaveTrackFactory factory,
NotifyingSelectedRegion selectedRegion,
unsigned  flags,
const EffectSettingsAccessPtr pAccess 

Will only operate on tracks that have the "selected" flag set to true, which is consistent with Audacity's standard UI, and only when finder succeeds

true on success
settingsAlways given; only for processing
pAccessSometimes given; only for UI

Implements EffectPlugin.

Definition at line 57 of file EffectBase.cpp.

66 auto cleanup0 = valueRestorer(mUIFlags, flags);
67 wxASSERT(selectedRegion.duration() >= 0.0);
70 mProjectRate = projectRate;
72 SetTracks(list);
73 // Don't hold a dangling pointer when done
74 Finally Do([&]{ SetTracks(nullptr); });
76 // This is for performance purposes only, no additional recovery implied
77 auto &pProject = *const_cast<AudacityProject*>(FindProject()); // how to remove this const_cast?
78 TransactionScope trans(pProject, "Effect");
80 // Update track/group counts
83 bool isSelection = false;
85 auto duration = 0.0;
91 WaveTrack *newTrack{};
92 bool success = false;
93 auto oldDuration = duration;
95 auto cleanup = finally( [&] {
96 if (!success) {
97 if (newTrack) {
98 assert(newTrack->IsLeader());
99 mTracks->Remove(*newTrack);
100 }
101 // On failure, restore the old duration setting
102 settings.extra.SetDuration(oldDuration);
103 }
104 else
105 trans.Commit();
107 mPresetNames.clear();
108 } );
110 // We don't yet know the effect type for code in the Nyquist Prompt, so
111 // assume it requires a track and handle errors when the effect runs.
112 if ((GetType() == EffectTypeGenerate || GetPath() == NYQUIST_PROMPT_ID) && (mNumTracks == 0)) {
113 auto track = mFactory->Create();
114 track->SetName(mTracks->MakeUniqueTrackName(WaveTrack::GetDefaultAudioTrackNamePreference()));
115 newTrack = mTracks->Add(track);
116 // Expect that newly added tracks are always leaders
117 assert(newTrack->IsLeader());
118 newTrack->SetSelected(true);
119 }
121 mT0 = selectedRegion.t0();
122 mT1 = selectedRegion.t1();
123 if (mT1 > mT0)
124 {
125 // there is a selection: let's fit in there...
126 // MJS: note that this is just for the TTC and is independent of the track rate
127 // but we do need to make sure we have the right number of samples at the project rate
128 double quantMT0 = QUANTIZED_TIME(mT0, mProjectRate);
129 double quantMT1 = QUANTIZED_TIME(mT1, mProjectRate);
130 duration = quantMT1 - quantMT0;
131 isSelection = true;
132 mT1 = mT0 + duration;
133 }
135 // This is happening inside EffectSettingsAccess::ModifySettings
136 auto newFormat = (isSelection
139 ).Internal();
140 auto updater = [&](EffectSettings &settings) {
141 settings.extra.SetDuration(duration);
142 settings.extra.SetDurationFormat(newFormat);
143 return nullptr;
144 };
145 // Update our copy of settings; update the EffectSettingsAccess too,
146 // if we are going to show a dialog
148 if (pAccess)
149 pAccess->ModifySettings(updater);
152 mF0 = selectedRegion.f0();
153 mF1 = selectedRegion.f1();
155 mPresetNames.push_back(L"control-f0");
157 mPresetNames.push_back(L"control-f1");
162 // Allow the dialog factory to fill this in, but it might not
163 std::shared_ptr<EffectInstance> pInstance;
165 if (IsInteractive()) {
166 if (!finder)
167 return false;
168 else if (auto result = finder(settings))
169 pInstance = *result;
170 else
171 return false;
172 }
174 auto pInstanceEx = std::dynamic_pointer_cast<EffectInstanceEx>(pInstance);
175 if (!pInstanceEx) {
176 // Path that skipped the dialog factory -- effect may be non-interactive
177 // or this is batch mode processing or repeat of last effect with stored
178 // settings.
179 pInstanceEx = std::dynamic_pointer_cast<EffectInstanceEx>(MakeInstance());
180 // Note: Init may read parameters from preferences
181 if (!pInstanceEx || !pInstanceEx->Init())
182 return false;
183 }
186 // If the dialog was shown, then it has been closed without errors or
187 // cancellation, and any change of duration has been saved in the config file
189 bool returnVal = true;
190 bool skipFlag = CheckWhetherSkipEffect(settings);
191 if (skipFlag == false)
192 {
193 using namespace BasicUI;
194 auto name = GetName();
195 auto progress = MakeProgress(
196 name,
197 XO("Applying %s...").Format( name ),
199 );
200 auto vr = valueRestorer( mProgress, progress.get() );
202 assert(pInstanceEx); // null check above
203 returnVal = pInstanceEx->Process(settings);
204 }
206 if (returnVal && (mT1 >= mT0 ))
207 {
208 selectedRegion.setTimes(mT0, mT1);
209 }
211 success = returnVal;
212 return returnVal;
@ Internal
Indicates internal failure from Audacity.
const TranslatableString name
Definition: Distortion.cpp:76
const RegistryPath & CurrentSettingsGroup()
Component of a configuration key path, for last-used destructive settings.
@ EffectTypeGenerate
ValueRestorer< T > valueRestorer(T &var)
inline functions provide convenient parameter type deduction
Definition: MemoryX.h:250
#define QUANTIZED_TIME(time, rate)
Definition: MemoryX.h:333
static Settings & settings()
Definition: TrackInfo.cpp:69
static CustomUpdaterValue updater
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
Definition: Project.h:90
virtual PluginPath GetPath() const =0
TranslatableString GetName() const
double mT1
Definition: EffectBase.h:116
WaveTrackFactory * mFactory
Definition: EffectBase.h:114
void CountWaveTracks()
Definition: EffectBase.cpp:232
virtual bool CheckWhetherSkipEffect(const EffectSettings &settings) const =0
After Init(), tell whether Process() should be skipped.
BasicUI::ProgressDialog * mProgress
Definition: EffectBase.h:111
wxArrayString mPresetNames
Definition: EffectBase.h:99
double GetDefaultDuration()
Definition: EffectBase.cpp:48
double mT0
Definition: EffectBase.h:115
unsigned mUIFlags
Definition: EffectBase.h:100
void SetTracks(TrackList *pTracks)
Definition: EffectBase.cpp:43
const AudacityProject * FindProject() const
Definition: EffectBase.cpp:225
virtual EffectType GetType() const =0
Type determines how it behaves.
virtual bool IsInteractive() const =0
Whether the effect needs a dialog for entry of settings.
virtual std::shared_ptr< EffectInstance > MakeInstance() const =0
Make an object maintaining short-term state of an Effect.
virtual const EffectSettingsManager & GetDefinition() const =0
static const RegistryPath & DurationKey()
Abstract base class used in importing a file.
double t1() const
Definition: ViewInfo.h:36
double f1() const
Definition: ViewInfo.h:38
double duration() const
Definition: ViewInfo.h:41
bool setTimes(double t0, double t1)
Definition: ViewInfo.cpp:51
double f0() const
Definition: ViewInfo.h:37
double t0() const
Definition: ViewInfo.h:35
static const int UndefinedFrequency
RAII for a database transaction, possibly nested.
std::shared_ptr< WaveTrack > Create()
Creates an unnamed empty WaveTrack with default sample format and default rate.
Definition: WaveTrack.cpp:761
static wxString GetDefaultAudioTrackNamePreference()
Definition: WaveTrack.cpp:743
@ ProgressShowCancel
Definition: BasicUI.h:142
std::unique_ptr< ProgressDialog > MakeProgress(const TranslatableString &title, const TranslatableString &message, unsigned flags=(ProgressShowStop|ProgressShowCancel), const TranslatableString &remainingLabelText={})
Create and display a progress dialog.
Definition: BasicUI.h:292
NUMERIC_FORMATS_API NumericFormatSymbol DefaultSelectionFormat()
NUMERIC_FORMATS_API NumericFormatSymbol TimeAndSampleFormat()
bool GetConfig(const EffectDefinitionInterface &ident, ConfigurationType type, const RegistryPath &group, const RegistryPath &key, Value &var, const Value &defval)
auto finder(TrackId id, int &distance)
static RegisteredToolbarFactory factory
Externalized state of a plug-in.
"finally" as in The C++ Programming Language, 4th ed., p. 358 Useful for defining ad-hoc RAII actions...
Definition: MemoryX.h:172

References CheckWhetherSkipEffect(), TransactionScope::Commit(), CountWaveTracks(), WaveTrackFactory::Create(), CurrentSettingsGroup(), NumericConverterFormats::DefaultSelectionFormat(), NotifyingSelectedRegion::duration(), EffectSettingsExtra::DurationKey(), EffectTypeGenerate, NotifyingSelectedRegion::f0(), NotifyingSelectedRegion::f1(), cloud::factory, anonymous_namespace{PendingTracks.cpp}::finder(), FindProject(), PluginSettings::GetConfig(), WaveTrack::GetDefaultAudioTrackNamePreference(), GetDefaultDuration(), EffectPlugin::GetDefinition(), ComponentInterface::GetName(), ComponentInterface::GetPath(), EffectDefinitionInterface::GetType(), Internal, EffectDefinitionInterface::IsInteractive(), EffectInstanceFactory::MakeInstance(), BasicUI::MakeProgress(), mFactory, mNumTracks, mPresetNames, mProgress, mProjectRate, mT0, mT1, mTracks, mUIFlags, name, NYQUIST_PROMPT_ID, PluginSettings::Private, BasicUI::ProgressShowCancel, QUANTIZED_TIME, NotifyingSelectedRegion::setTimes(), settings(), SetTracks(), NotifyingSelectedRegion::t0(), NotifyingSelectedRegion::t1(), NumericConverterFormats::TimeAndSampleFormat(), SelectedRegion::UndefinedFrequency, updater, valueRestorer(), and XO().

Referenced by Effect::Delegate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FindInstance()

auto EffectBase::FindInstance ( EffectPlugin plugin)

Definition at line 244 of file EffectBase.cpp.

247 auto result = plugin.MakeInstance();
248 if (auto pInstanceEx = std::dynamic_pointer_cast<EffectInstanceEx>(result)
249 ; pInstanceEx && pInstanceEx->Init())
250 return { pInstanceEx };
251 return {};

Referenced by EffectUIHost::InitializeInstance().

Here is the caller graph for this function:

◆ FindProject()

const AudacityProject * EffectBase::FindProject ( ) const

Definition at line 225 of file EffectBase.cpp.

227 if (!inputTracks())
228 return nullptr;
229 return inputTracks()->GetOwner();
const TrackList * inputTracks() const
Definition: EffectBase.h:91
AudacityProject * GetOwner()
Definition: Track.h:1032

References TrackList::GetOwner(), and inputTracks().

Referenced by DoEffect(), Effect::GetSelectionFormat(), EffectEqualization::Init(), NyquistEffect::Init(), Generator::Process(), NyquistEffect::Process(), EffectTwoPassSimpleMono::Process(), EffectTruncSilence::ProcessIndependently(), and PerTrackEffect::ProcessPass().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetDefaultDuration()

double EffectBase::GetDefaultDuration ( )

Definition at line 48 of file EffectBase.cpp.

50 return 30.0;

Referenced by DoEffect().

Here is the caller graph for this function:

◆ inputTracks()

const TrackList * EffectBase::inputTracks ( ) const

◆ IsLinearEffect()

bool EffectBase::IsLinearEffect ( ) const

Definition at line 33 of file EffectBase.h.

33{ return mIsLinearEffect; }
bool mIsLinearEffect
Definition: EffectBase.h:124

Referenced by EffectPreview().

Here is the caller graph for this function:

◆ IsPreviewing()

bool EffectBase::IsPreviewing ( ) const

Definition at line 89 of file EffectBase.h.

89{ return mIsPreview; }
bool mIsPreview
Definition: EffectBase.h:117

Referenced by NyquistEffect::Process(), EffectPaulstretch::ProcessOne(), and PerTrackEffect::ProcessPass().

Here is the caller graph for this function:

◆ PreviewsFullSelection()

bool EffectBase::PreviewsFullSelection ( ) const

Definition at line 34 of file EffectBase.h.

34{ return mPreviewFullSelection; }
bool mPreviewFullSelection
Definition: EffectBase.h:125

Referenced by EffectPreview().

Here is the caller graph for this function:

◆ SetLinearEffectFlag()

void EffectBase::SetLinearEffectFlag ( bool  linearEffectFlag)

◆ SetPreviewFullSelectionFlag()

void EffectBase::SetPreviewFullSelectionFlag ( bool  previewDurationFlag)

Definition at line 220 of file EffectBase.cpp.

222 mPreviewFullSelection = previewDurationFlag;

References mPreviewFullSelection.

Referenced by NyquistEffect::Parse().

Here is the caller graph for this function:

◆ SetTracks()

void EffectBase::SetTracks ( TrackList pTracks)

Definition at line 43 of file EffectBase.cpp.

45 mTracks = pTracks ? pTracks->shared_from_this() : nullptr;

References mTracks.

Referenced by DoEffect(), and EffectManager::PromptUser().

Here is the caller graph for this function:

Friends And Related Function Documentation

◆ Effect

friend class Effect

Definition at line 103 of file EffectBase.h.

Member Data Documentation

◆ mFactory

WaveTrackFactory* EffectBase::mFactory {}

Definition at line 114 of file EffectBase.h.

Referenced by Effect::Delegate(), DoEffect(), and EffectPreview().

◆ mIsLinearEffect

bool EffectBase::mIsLinearEffect { false }

Definition at line 124 of file EffectBase.h.

Referenced by SetLinearEffectFlag().

◆ mIsPreview

bool EffectBase::mIsPreview { false }

Definition at line 117 of file EffectBase.h.

Referenced by EffectPreview().

◆ mNumGroups

int EffectBase::mNumGroups {}

◆ mNumTracks

int EffectBase::mNumTracks {}

◆ mPresetNames

wxArrayString EffectBase::mPresetNames

Definition at line 99 of file EffectBase.h.

Referenced by DoEffect(), and NyquistEffect::Parse().

◆ mPreviewFullSelection

bool EffectBase::mPreviewFullSelection { false }

Definition at line 125 of file EffectBase.h.

Referenced by SetPreviewFullSelectionFlag().

◆ mProgress

BasicUI::ProgressDialog* EffectBase::mProgress {}

◆ mProjectRate

double EffectBase::mProjectRate {}

◆ mT0

double EffectBase::mT0 {}

◆ mT1

double EffectBase::mT1 {}

◆ mTracks

std::shared_ptr<TrackList> EffectBase::mTracks {}

◆ mUIFlags

unsigned EffectBase::mUIFlags { 0 }

Definition at line 100 of file EffectBase.h.

Referenced by Effect::Delegate(), DoEffect(), and Effect::TestUIFlags().

The documentation for this class was generated from the following files: