![]() |
Audacity 3.2.0
|
Objects of this class connect Audacity with VST3 effects. More...
#include <VST3Effect.h>
Public Member Functions | |
VST3Effect (std::shared_ptr< VST3::Hosting::Module > module, VST3::Hosting::ClassInfo effectClassInfo) | |
VST3Effect (const VST3Effect &)=delete | |
VST3Effect (VST3Effect &&)=delete | |
VST3Effect & | operator= (const VST3Effect &)=delete |
VST3Effect & | operator= (VST3Effect &)=delete |
~VST3Effect () override | |
PluginPath | GetPath () const override |
ComponentInterfaceSymbol | GetSymbol () const override |
VendorSymbol | GetVendor () const override |
wxString | GetVersion () const override |
TranslatableString | GetDescription () const override |
EffectType | GetType () const override |
Type determines how it behaves. More... | |
EffectFamilySymbol | GetFamily () const override |
Report identifier and user-visible name of the effect protocol. More... | |
bool | IsInteractive () const override |
Whether the effect needs a dialog for entry of settings. More... | |
bool | IsDefault () const override |
Whether the effect sorts "above the line" in the menus. More... | |
RealtimeSince | RealtimeSupport () const override |
Since which version of Audacity has the effect supported realtime? More... | |
bool | SupportsAutomation () const override |
Whether the effect has any automatable controls. More... | |
bool | SaveSettings (const EffectSettings &settings, CommandParameters &parms) const override |
Store settings as keys and values. More... | |
bool | LoadSettings (const CommandParameters &parms, EffectSettings &settings) const override |
Restore settings from keys and values. More... | |
OptionalMessage | LoadUserPreset (const RegistryPath &name, EffectSettings &settings) const override |
bool | SaveUserPreset (const RegistryPath &name, const EffectSettings &settings) const override |
Save settings in the configuration file as a user-named preset. More... | |
RegistryPaths | GetFactoryPresets () const override |
Report names of factory presets. More... | |
OptionalMessage | LoadFactoryPreset (int id, EffectSettings &settings) const override |
int | ShowClientInterface (const EffectPlugin &plugin, wxWindow &parent, wxDialog &dialog, EffectEditor *pEditor, bool forceModal) const override |
std::shared_ptr< EffectInstance > | MakeInstance () const override |
Make an object maintaining short-term state of an Effect. More... | |
std::unique_ptr< EffectEditor > | PopulateUI (const EffectPlugin &plugin, ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access, const EffectOutputs *pOutputs) const override |
Adds controls to a panel that is given as the parent window of S More... | |
bool | CanExportPresets () const override |
Whether the effect supports export of presets to files, and importing too. More... | |
void | ExportPresets (const EffectPlugin &plugin, const EffectSettings &settings) const override |
OptionalMessage | ImportPresets (const EffectPlugin &plugin, EffectSettings &settings) const override |
bool | HasOptions () const override |
void | ShowOptions (const EffectPlugin &plugin) const override |
EffectSettings | MakeSettings () const override |
bool | CopySettingsContents (const EffectSettings &src, EffectSettings &dst) const override |
Update one settings object from another. More... | |
![]() | |
~StatelessPerTrackEffect () override | |
![]() | |
~PerTrackEffect () override | |
![]() | |
Effect () | |
virtual | ~Effect () |
PluginPath | GetPath () const override |
bool | VisitSettings (SettingsVisitor &visitor, EffectSettings &settings) override |
bool | VisitSettings (ConstSettingsVisitor &visitor, const EffectSettings &settings) const override |
ComponentInterfaceSymbol | GetSymbol () const override |
VendorSymbol | GetVendor () const override |
wxString | GetVersion () const override |
TranslatableString | GetDescription () const override |
EffectType | GetType () const override |
Type determines how it behaves. More... | |
EffectFamilySymbol | GetFamily () const override |
Report identifier and user-visible name of the effect protocol. More... | |
bool | IsInteractive () const override |
Whether the effect needs a dialog for entry of settings. More... | |
bool | IsDefault () const override |
Whether the effect sorts "above the line" in the menus. More... | |
RealtimeSince | RealtimeSupport () const override |
Since which version of Audacity has the effect supported realtime? More... | |
bool | SupportsAutomation () const override |
Whether the effect has any automatable controls. More... | |
bool | SaveSettings (const EffectSettings &settings, CommandParameters &parms) const override |
Store settings as keys and values. More... | |
bool | LoadSettings (const CommandParameters &parms, EffectSettings &settings) const override |
Restore settings from keys and values. More... | |
OptionalMessage | LoadUserPreset (const RegistryPath &name, EffectSettings &settings) const override |
bool | SaveUserPreset (const RegistryPath &name, const EffectSettings &settings) const override |
Save settings in the configuration file as a user-named preset. More... | |
RegistryPaths | GetFactoryPresets () const override |
Report names of factory presets. More... | |
OptionalMessage | LoadFactoryPreset (int id, EffectSettings &settings) const override |
OptionalMessage | LoadFactoryDefaults (EffectSettings &settings) const override |
virtual const EffectParameterMethods & | Parameters () const |
bool | CanExportPresets () const override |
Whether the effect supports export of presets to files, and importing too. More... | |
bool | HasOptions () const override |
const EffectSettingsManager & | GetDefinition () const override |
virtual NumericFormatSymbol | GetSelectionFormat () |
bool | SaveSettingsAsString (const EffectSettings &settings, wxString &parms) const override |
OptionalMessage | LoadSettingsFromString (const wxString &parms, EffectSettings &settings) const override |
bool | IsBatchProcessing () const override |
void | SetBatchProcessing () override |
void | UnsetBatchProcessing () override |
unsigned | TestUIFlags (unsigned mask) |
bool | Delegate (Effect &delegate, EffectSettings &settings) |
Re-invoke DoEffect on another Effect object that implements the work. More... | |
![]() | |
EffectBase () | |
~EffectBase () override | |
void | SetTracks (TrackList *pTracks) |
bool | DoEffect (EffectSettings &settings, const InstanceFinder &finder, double projectRate, TrackList *list, WaveTrackFactory *factory, NotifyingSelectedRegion &selectedRegion, unsigned flags, const EffectSettingsAccessPtr &pAccess) override |
![]() | |
EffectPlugin & | operator= (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 EffectSettingsManager & | GetDefinition () const =0 |
virtual void | Preview (EffectSettingsAccess &access, std::function< void()> updateUI, bool dryOnly)=0 |
Calculate temporary tracks of limited length with effect applied and play. More... | |
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 |
![]() | |
virtual | ~EffectInstanceFactory () |
virtual std::shared_ptr< EffectInstance > | MakeInstance () const =0 |
Make an object maintaining short-term state of an Effect. More... | |
![]() | |
virtual | ~EffectSettingsManager () |
virtual bool | VisitSettings (SettingsVisitor &visitor, EffectSettings &settings) |
virtual bool | VisitSettings (ConstSettingsVisitor &visitor, const EffectSettings &settings) const |
virtual std::unique_ptr< EffectOutputs > | MakeOutputs () const |
Produce an object to hold values to send to effect output meters. More... | |
![]() | |
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... | |
![]() | |
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 |
std::unique_ptr< EffectEditor > | PopulateUI (const EffectPlugin &plugin, ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access, const EffectOutputs *pOutputs) const override |
Adds controls to a panel that is given as the parent window of S More... | |
virtual std::unique_ptr< EffectEditor > | MakeEditor (ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access, const EffectOutputs *pOutputs) const =0 |
Called only from PopulateUI, to add controls to effect panel. More... | |
![]() | |
int | ShowClientInterface (const EffectPlugin &plugin, wxWindow &parent, wxDialog &dialog, EffectEditor *pEditor, bool forceModal) const override |
void | ExportPresets (const EffectPlugin &plugin, const EffectSettings &settings) const override |
OptionalMessage | ImportPresets (const EffectPlugin &plugin, EffectSettings &settings) const override |
void | ShowOptions (const EffectPlugin &plugin) const override |
bool | ValidateUI (const EffectPlugin &context, EffectSettings &) const override |
bool | CloseUI () const override |
![]() | |
virtual | ~EffectUIServices () |
virtual int | ShowHostInterface (EffectPlugin &plugin, wxWindow &parent, const EffectDialogFactory &factory, std::shared_ptr< EffectInstance > &pInstance, EffectSettingsAccess &access, bool forceModal=false) |
virtual int | ShowClientInterface (const EffectPlugin &plugin, wxWindow &parent, wxDialog &dialog, EffectEditor *pEditor, bool forceModal=false) const =0 |
virtual std::unique_ptr< EffectEditor > | PopulateUI (const EffectPlugin &plugin, ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access, const EffectOutputs *pOutputs) const =0 |
Adds controls to a panel that is given as the parent window of S More... | |
virtual void | ExportPresets (const EffectPlugin &plugin, const EffectSettings &settings) const =0 |
virtual OptionalMessage | ImportPresets (const EffectPlugin &plugin, EffectSettings &settings) const =0 |
virtual void | ShowOptions (const EffectPlugin &plugin) const =0 |
virtual bool | ValidateUI (const EffectPlugin &context, EffectSettings &settings) const =0 |
virtual bool | CloseUI () const =0 |
Static Public Member Functions | |
static EffectFamilySymbol | GetFamilySymbol () |
![]() | |
static Effect * | FetchParameters (Effect &e, EffectSettings &) |
static void | IncEffectCounter () |
![]() | |
static Identifier | GetSquashedName (const Identifier &ident) |
A utility that strips spaces and CamelCases a name. More... | |
![]() | |
static int | DoMessageBox (const EffectPlugin &plugin, const TranslatableString &message, long style=DefaultMessageBoxStyle, const TranslatableString &titleStr={}) |
Private Member Functions | |
virtual std::unique_ptr< EffectEditor > | MakeEditor (ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access, const EffectOutputs *pOutputs) const final |
Will never be called. More... | |
void | LoadPreset (const wxString &id, EffectSettings &settings) const |
Private Attributes | |
std::shared_ptr< VST3::Hosting::Module > | mModule |
const VST3::Hosting::ClassInfo | mEffectClassInfo |
bool | mRescanFactoryPresets { true } |
RegistryPaths | mFactoryPresetNames |
std::vector< wxString > | mFactoryPresetIDs |
Friends | |
class | VST3PluginValidator |
Additional Inherited Members | |
![]() | |
using | EffectSettingsAccessPtr = std::shared_ptr< EffectSettingsAccess > |
using | InstancePointer = std::shared_ptr< EffectInstanceEx > |
using | InstanceFinder = std::function< std::optional< InstancePointer >(EffectSettings &settings) > |
![]() | |
enum class | RealtimeSince : unsigned { Never , After_3_1 , Always } |
In which versions of Audacity was an effect realtime capable? More... | |
![]() | |
enum | : long { DefaultMessageBoxStyle = wxOK | wxCENTRE } |
![]() | |
TrackList * | mTracks {} |
![]() | |
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>") |
![]() | |
bool | DoPass1 () const |
bool | DoPass2 () const |
bool | Process (EffectInstance &instance, EffectSettings &settings) const |
![]() | |
bool | CheckWhetherSkipEffect (const EffectSettings &settings) const override |
Default implementation returns false. More... | |
double | CalcPreviewInputLength (const EffectSettings &settings, double previewLength) const override |
Default implementation returns previewLength More... | |
bool | TotalProgress (double frac, const TranslatableString &={}) const |
bool | TrackProgress (int whichTrack, double frac, const TranslatableString &={}) const |
bool | TrackGroupProgress (int whichGroup, double frac, const TranslatableString &={}) const |
int | GetNumWaveTracks () const |
int | GetNumWaveGroups () const |
void | GetBounds (const WaveTrack &track, const WaveTrack *pRight, sampleCount *start, sampleCount *len) |
void | CopyInputTracks (bool allSyncLockSelected=false) |
Track * | AddToOutputTracks (const std::shared_ptr< Track > &t) |
![]() | |
virtual std::any | BeginPreview (const EffectSettings &settings) |
Called when Preview() starts, to allow temporary effect state changes. More... | |
void | Preview (EffectSettingsAccess &access, std::function< void()> updateUI, bool dryOnly) final |
Calculate temporary tracks of limited length with effect applied and play. More... | |
virtual bool | CheckWhetherSkipEffect (const EffectSettings &settings) const =0 |
After Init(), tell whether Process() should be skipped. More... | |
virtual double | CalcPreviewInputLength (const EffectSettings &settings, double previewLength) const =0 |
void | SetLinearEffectFlag (bool linearEffectFlag) |
void | SetPreviewFullSelectionFlag (bool previewDurationFlag) |
bool | IsPreviewing () const |
void | IncludeNotSelectedPreviewTracks (bool includeNotSelected) |
void | ReplaceProcessedTracks (const bool bGoodResult) |
const TrackList * | inputTracks () const |
const AudacityProject * | FindProject () const |
![]() | |
sampleCount | mSampleCnt {} |
![]() | |
BasicUI::ProgressDialog * | mProgress {} |
double | mProjectRate {} |
WaveTrackFactory * | mFactory {} |
std::shared_ptr< TrackList > | mOutputTracks |
double | mT0 {} |
double | mT1 {} |
wxArrayString | mPresetNames |
unsigned | mUIFlags { 0 } |
![]() | |
static int | nEffectsDone = 0 |
Objects of this class connect Audacity with VST3 effects.
Definition at line 38 of file VST3Effect.h.
VST3Effect::VST3Effect | ( | std::shared_ptr< VST3::Hosting::Module > | module, |
VST3::Hosting::ClassInfo | effectClassInfo | ||
) |
Definition at line 46 of file VST3Effect.cpp.
|
delete |
|
delete |
|
override |
Definition at line 39 of file VST3Effect.cpp.
References BasicEffectUIServices::CloseUI().
|
overridevirtual |
Whether the effect supports export of presets to files, and importing too.
Implements EffectPlugin.
Definition at line 226 of file VST3Effect.cpp.
|
overridevirtual |
Update one settings object from another.
This may run in a worker thread, and should avoid memory allocations. Therefore do not copy the underlying std::any, but copy the contents of the contained objects.
Assume that src and dst were created and previously modified only by this
Default implementation does nothing and returns true
src | settings to copy from |
dst | settings to copy into |
copyDirection | direction in which copy is performed |
Reimplemented from EffectSettingsManager.
Definition at line 305 of file VST3Effect.cpp.
References VST3Wrapper::CopySettingsContents().
|
overridevirtual |
Reimplemented from BasicEffectUIServices.
Definition at line 231 of file VST3Effect.cpp.
References mEffectClassInfo, mModule, SelectFile(), settings(), wxT(), and XO().
|
overridevirtual |
Implements ComponentInterface.
Definition at line 73 of file VST3Effect.cpp.
References mEffectClassInfo, and XO().
|
overridevirtual |
Report names of factory presets.
Implements EffectSettingsManager.
Definition at line 146 of file VST3Effect.cpp.
References desc, VST3Wrapper::FindFactoryPresets(), mEffectClassInfo, mFactoryPresetIDs, mFactoryPresetNames, mModule, and mRescanFactoryPresets.
|
overridevirtual |
Report identifier and user-visible name of the effect protocol.
Implements EffectDefinitionInterface.
Definition at line 92 of file VST3Effect.cpp.
References GetFamilySymbol().
|
static |
Definition at line 34 of file VST3Effect.cpp.
References XO().
Referenced by GetFamily(), and VST3EffectsModule::GetOptionalFamilySymbol().
|
overridevirtual |
Implements ComponentInterface.
Definition at line 53 of file VST3Effect.cpp.
References VST3Utils::MakePluginPathString(), mEffectClassInfo, and mModule.
|
overridevirtual |
Implements ComponentInterface.
Definition at line 58 of file VST3Effect.cpp.
References mEffectClassInfo.
|
overridevirtual |
Type determines how it behaves.
Implements EffectDefinitionInterface.
Definition at line 79 of file VST3Effect.cpp.
References EffectTypeGenerate, EffectTypeNone, EffectTypeProcess, and mEffectClassInfo.
Referenced by RealtimeSupport().
|
overridevirtual |
Implements ComponentInterface.
Definition at line 63 of file VST3Effect.cpp.
References mEffectClassInfo.
|
overridevirtual |
Implements ComponentInterface.
Definition at line 68 of file VST3Effect.cpp.
References mEffectClassInfo.
|
overridevirtual |
Whether there are preferences applying to the effect's family, for which a UI may be needed to change them
Implements EffectPlugin.
Definition at line 282 of file VST3Effect.cpp.
|
overridevirtual |
Reimplemented from BasicEffectUIServices.
Definition at line 258 of file VST3Effect.cpp.
References LoadPreset(), SelectFile(), settings(), wxT(), and XO().
|
overridevirtual |
Whether the effect sorts "above the line" in the menus.
Implements EffectDefinitionInterface.
Definition at line 102 of file VST3Effect.cpp.
|
overridevirtual |
Whether the effect needs a dialog for entry of settings.
Implements EffectDefinitionInterface.
Definition at line 97 of file VST3Effect.cpp.
|
overridevirtual |
Change settings to the preset whose name is GetFactoryPresets()[id]
Implements EffectSettingsManager.
Definition at line 162 of file VST3Effect.cpp.
References VST3Wrapper::FlushParameters(), VST3Wrapper::InitializeComponents(), VST3Wrapper::LoadPreset(), mEffectClassInfo, mFactoryPresetIDs, mModule, settings(), and VST3Wrapper::StoreSettings().
|
private |
Definition at line 292 of file VST3Effect.cpp.
References mEffectClassInfo, mModule, and settings().
Referenced by ImportPresets().
|
overridevirtual |
Restore settings from keys and values.
Implements EffectSettingsManager.
Definition at line 126 of file VST3Effect.cpp.
References VST3Wrapper::LoadSettings(), and settings().
|
overridevirtual |
Change settings to a user-named preset
Implements EffectSettingsManager.
Definition at line 133 of file VST3Effect.cpp.
References VST3Wrapper::LoadUserPreset(), name, and settings().
|
finalprivatevirtual |
Will never be called.
Will not come here because Effect::PopulateUI is overridden
Implements StatelessEffectUIServices.
Definition at line 217 of file VST3Effect.cpp.
|
overridevirtual |
Make an object maintaining short-term state of an Effect.
One effect may have multiple instances extant simultaneously. Instances have state, may be implemented in foreign code, and are temporary, whereas EffectSettings represents persistent effect state that can be saved and reloaded from files.
settings | may be assumed to have a lifetime enclosing the instance's |
true
(no promises that the result isn't null) Implements EffectInstanceFactory.
Definition at line 196 of file VST3Effect.cpp.
References mEffectClassInfo, and mModule.
|
overridevirtual |
Produce an object holding new, independent settings
Default implementation returns an empty any
Reimplemented from EffectSettingsManager.
Definition at line 300 of file VST3Effect.cpp.
References VST3Wrapper::MakeSettings().
|
delete |
|
delete |
|
overridevirtual |
Adds controls to a panel that is given as the parent window of S
S | interface for adding controls to a panel in a dialog |
instance | guaranteed to have a lifetime containing that of the returned object |
access | guaranteed to have a lifetime containing that of the returned object |
pOutputs | null, or else points to outputs with lifetime containing that of the returned object |
Reimplemented from StatelessEffectUIServices.
Definition at line 201 of file VST3Effect.cpp.
References PluginSettings::GetConfig(), S, PluginSettings::Shared, and wxT().
|
overridevirtual |
Since which version of Audacity has the effect supported realtime?
Implements EffectDefinitionInterface.
Definition at line 107 of file VST3Effect.cpp.
References EffectDefinitionInterface::After_3_1, EffectTypeProcess, GetType(), and EffectDefinitionInterface::Never.
|
overridevirtual |
Store settings as keys and values.
The override may assume parms
is initially empty
Implements EffectSettingsManager.
Definition at line 119 of file VST3Effect.cpp.
References VST3Wrapper::SaveSettings(), and settings().
|
overridevirtual |
Save settings in the configuration file as a user-named preset.
Implements EffectSettingsManager.
Definition at line 139 of file VST3Effect.cpp.
References name, VST3Wrapper::SaveUserPreset(), and settings().
|
overridevirtual |
Reimplemented from BasicEffectUIServices.
Definition at line 176 of file VST3Effect.cpp.
References EffectEditor::IsGraphicalUI().
|
overridevirtual |
Reimplemented from BasicEffectUIServices.
Definition at line 287 of file VST3Effect.cpp.
|
overridevirtual |
Whether the effect has any automatable controls.
Implements EffectDefinitionInterface.
Definition at line 114 of file VST3Effect.cpp.
|
friend |
Definition at line 40 of file VST3Effect.h.
|
private |
Definition at line 45 of file VST3Effect.h.
Referenced by ExportPresets(), GetDescription(), GetFactoryPresets(), GetPath(), GetSymbol(), GetType(), GetVendor(), GetVersion(), LoadFactoryPreset(), LoadPreset(), and MakeInstance().
|
mutableprivate |
Definition at line 50 of file VST3Effect.h.
Referenced by GetFactoryPresets(), and LoadFactoryPreset().
|
mutableprivate |
Definition at line 49 of file VST3Effect.h.
Referenced by GetFactoryPresets().
|
private |
Definition at line 44 of file VST3Effect.h.
Referenced by ExportPresets(), GetFactoryPresets(), GetPath(), LoadFactoryPreset(), LoadPreset(), and MakeInstance().
|
mutableprivate |
Definition at line 48 of file VST3Effect.h.
Referenced by GetFactoryPresets().