Audacity 3.2.0
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
VST3Effect Class Referencefinal

Objects of this class connect Audacity with VST3 effects. More...

#include <VST3Effect.h>

Inheritance diagram for VST3Effect:
[legend]
Collaboration diagram for VST3Effect:
[legend]

Public Member Functions

 VST3Effect (std::shared_ptr< VST3::Hosting::Module > module, VST3::Hosting::ClassInfo effectClassInfo)
 
 VST3Effect (const VST3Effect &)=delete
 
 VST3Effect (VST3Effect &&)=delete
 
VST3Effectoperator= (const VST3Effect &)=delete
 
VST3Effectoperator= (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...
 
bool LoadUserPreset (const RegistryPath &name, EffectSettings &settings) const override
 Change settings to a user-named preset. More...
 
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...
 
bool LoadFactoryPreset (int id, EffectSettings &settings) const override
 Change settings to the preset whose name is GetFactoryPresets()[id] More...
 
int ShowClientInterface (wxWindow &parent, wxDialog &dialog, EffectUIValidator *pValidator, bool forceModal) override
 
std::shared_ptr< EffectInstanceMakeInstance () const override
 Make an object maintaining short-term state of an Effect. More...
 
std::unique_ptr< EffectUIValidatorPopulateUI (ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access) override
 Adds controls to a panel that is given as the parent window of S More...
 
bool CloseUI () override
 
bool CanExportPresets () override
 
void ExportPresets (const EffectSettings &settings) const override
 
void ImportPresets (EffectSettings &settings) override
 
bool HasOptions () override
 
void ShowOptions () override
 
EffectSettings MakeSettings () const override
 
bool CopySettingsContents (const EffectSettings &src, EffectSettings &dst, SettingsCopyDirection copyDirection) const override
 Update one settings object from another. More...
 
- Public Member Functions inherited from PerTrackEffect
 ~PerTrackEffect () override
 
- Public Member Functions inherited from Effect
 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...
 
bool LoadUserPreset (const RegistryPath &name, EffectSettings &settings) const override
 Change settings to a user-named preset. More...
 
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...
 
bool LoadFactoryPreset (int id, EffectSettings &settings) const override
 Change settings to the preset whose name is GetFactoryPresets()[id] More...
 
bool LoadFactoryDefaults (EffectSettings &settings) const override
 Change settings back to "factory default". More...
 
virtual const EffectParameterMethodsParameters () const
 
int ShowClientInterface (wxWindow &parent, wxDialog &dialog, EffectUIValidator *pValidator, bool forceModal) override
 
EffectUIClientInterfaceGetEffectUIClientInterface () override
 Returns the EffectUIClientInterface instance for this effect. More...
 
std::unique_ptr< EffectUIValidatorPopulateUI (ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access) override
 Adds controls to a panel that is given as the parent window of S More...
 
bool IsGraphicalUI () override
 
bool ValidateUI (EffectSettings &) override
 
bool CloseUI () override
 
bool CanExportPresets () override
 
void ExportPresets (const EffectSettings &settings) const override
 
void ImportPresets (EffectSettings &settings) override
 
bool HasOptions () override
 
void ShowOptions () override
 
const EffectSettingsManagerGetDefinition () const override
 
virtual NumericFormatSymbol GetSelectionFormat ()
 
int ShowHostInterface (wxWindow &parent, const EffectDialogFactory &factory, std::shared_ptr< EffectInstance > &pInstance, EffectSettingsAccess &access, bool forceModal=false) override
 Usually applies factory to self and given access. More...
 
bool SaveSettingsAsString (const EffectSettings &settings, wxString &parms) const override
 
bool LoadSettingsFromString (const wxString &parms, EffectSettings &settings) const override
 
bool IsBatchProcessing () const override
 
void SetBatchProcessing () override
 
void UnsetBatchProcessing () override
 
bool TransferDataToWindow (const EffectSettings &settings) override
 Update controls for the settings. More...
 
bool TransferDataFromWindow (EffectSettings &settings) override
 Update the given settings from controls. More...
 
unsigned TestUIFlags (unsigned mask)
 
bool Delegate (Effect &delegate, EffectSettings &settings)
 Re-invoke DoEffect on another Effect object that implements the work. More...
 
int MessageBox (const TranslatableString &message, long style=DefaultMessageBoxStyle, const TranslatableString &titleStr={}) const
 
bool EnableApply (bool enable=true)
 
wxWindow * GetUIParent ()
 
- Public Member Functions inherited from EffectBase
 EffectBase ()
 
 ~EffectBase () override
 
- Public Member Functions inherited from EffectUIClientInterface
virtual ~EffectUIClientInterface ()
 
virtual int ShowClientInterface (wxWindow &parent, wxDialog &dialog, EffectUIValidator *pValidator, bool forceModal=false)=0
 
virtual bool IsGraphicalUI ()=0
 
virtual std::unique_ptr< EffectUIValidatorPopulateUI (ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access)=0
 Adds controls to a panel that is given as the parent window of S More...
 
virtual bool CanExportPresets ()=0
 
virtual void ExportPresets (const EffectSettings &settings) const =0
 
virtual void ImportPresets (EffectSettings &settings)=0
 
virtual bool HasOptions ()=0
 
virtual void ShowOptions ()=0
 
virtual bool ValidateUI (EffectSettings &settings)=0
 
virtual bool CloseUI ()=0
 
- Public Member Functions inherited from EffectPlugin
EffectPluginoperator= (EffectPlugin &)=delete
 
virtual ~EffectPlugin ()
 
virtual const EffectSettingsManagerGetDefinition () const =0
 
virtual int ShowHostInterface (wxWindow &parent, const EffectDialogFactory &factory, std::shared_ptr< EffectInstance > &pInstance, EffectSettingsAccess &access, bool forceModal=false)=0
 Usually applies factory to self and given access. More...
 
virtual EffectUIClientInterfaceGetEffectUIClientInterface ()=0
 Returns the EffectUIClientInterface instance for this effect. More...
 
virtual void Preview (EffectSettingsAccess &access, bool dryOnly)=0
 
virtual bool SaveSettingsAsString (const EffectSettings &settings, wxString &parms) const =0
 
virtual bool 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, double projectRate, TrackList *list, WaveTrackFactory *factory, NotifyingSelectedRegion &selectedRegion, unsigned flags, wxWindow *pParent=nullptr, const EffectDialogFactory &dialogFactory={}, const EffectSettingsAccessPtr &pAccess=nullptr)=0
 Unfortunately complicated dual-use function. More...
 
virtual bool TransferDataToWindow (const EffectSettings &settings)=0
 Update controls for the settings. More...
 
virtual bool TransferDataFromWindow (EffectSettings &settings)=0
 Update the given settings from controls. More...
 
- 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
 
- 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 EffectFamilySymbol GetFamilySymbol ()
 
- Static Public Member Functions inherited from Effect
static EffectFetchParameters (Effect &e, EffectSettings &)
 
static void IncEffectCounter ()
 
- Static Public Member Functions inherited from EffectDefinitionInterface
static Identifier GetSquashedName (const Identifier &ident)
 A utility that strips spaces and CamelCases a name. More...
 

Private Member Functions

bool LoadPreset (const wxString &path, EffectSettings &settings) const
 

Private Attributes

std::shared_ptr< VST3::Hosting::Module > mModule
 
const VST3::Hosting::ClassInfo mEffectClassInfo
 
wxWindow * mParent { nullptr }
 
bool mRescanFactoryPresets { true }
 
RegistryPaths mFactoryPresets
 

Friends

class VST3PluginValidator
 

Additional Inherited Members

- Public Types inherited from Effect
enum  : long { DefaultMessageBoxStyle = wxOK | wxCENTRE }
 
- Public Types inherited from EffectPlugin
using EffectSettingsAccessPtr = std::shared_ptr< EffectSettingsAccess >
 
- Public Types inherited from EffectDefinitionInterface
enum class  RealtimeSince : unsigned { Never , Since_3_2 , 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>")
 
- Protected Member Functions inherited from PerTrackEffect
bool DoPass1 () const
 
bool DoPass2 () const
 
bool Process (EffectInstance &instance, EffectSettings &settings) const
 
- Protected Member Functions inherited from Effect
bool EnablePreview (bool enable=true)
 
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...
 
virtual std::unique_ptr< EffectUIValidatorPopulateOrExchange (ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access)
 Add controls to effect panel; always succeeds. 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)
 
std::shared_ptr< AddedAnalysisTrackAddAnalysisTrack (const wxString &name=wxString())
 
ModifiedAnalysisTrack ModifyAnalysisTrack (const LabelTrack *pOrigTrack, const wxString &name=wxString())
 
TrackAddToOutputTracks (const std::shared_ptr< Track > &t)
 
- Protected Member Functions inherited from EffectBase
void Preview (EffectSettingsAccess &access, bool dryOnly) override
 
bool DoEffect (EffectSettings &settings, double projectRate, TrackList *list, WaveTrackFactory *factory, NotifyingSelectedRegion &selectedRegion, unsigned flags, wxWindow *pParent, const EffectDialogFactory &dialogFactory, const EffectSettingsAccessPtr &pAccess) override
 Unfortunately complicated dual-use function. 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 TrackListinputTracks () const
 
const AudacityProjectFindProject () const
 
- Protected Attributes inherited from PerTrackEffect
sampleCount mSampleCnt {}
 
- Protected Attributes inherited from Effect
wxWeakRef< wxDialog > mHostUIDialog
 This smart pointer tracks the lifetime of the dialog. More...
 
wxWindow * mUIParent {}
 
- Protected Attributes inherited from EffectBase
BasicUI::ProgressDialogmProgress {}
 
double mProjectRate {}
 
WaveTrackFactorymFactory {}
 
std::shared_ptr< TrackListmOutputTracks
 
double mT0 {}
 
double mT1 {}
 
wxArrayString mPresetNames
 
unsigned mUIFlags { 0 }
 
- Static Protected Attributes inherited from EffectBase
static int nEffectsDone = 0
 

Detailed Description

Objects of this class connect Audacity with VST3 effects.

Definition at line 38 of file VST3Effect.h.

Constructor & Destructor Documentation

◆ VST3Effect() [1/3]

VST3Effect::VST3Effect ( std::shared_ptr< VST3::Hosting::Module >  module,
VST3::Hosting::ClassInfo  effectClassInfo 
)

Definition at line 107 of file VST3Effect.cpp.

110 : mModule(std::move(module)), mEffectClassInfo(std::move(effectClassInfo))
111{
112}
const VST3::Hosting::ClassInfo mEffectClassInfo
Definition: VST3Effect.h:45
std::shared_ptr< VST3::Hosting::Module > mModule
Definition: VST3Effect.h:44

◆ VST3Effect() [2/3]

VST3Effect::VST3Effect ( const VST3Effect )
delete

◆ VST3Effect() [3/3]

VST3Effect::VST3Effect ( VST3Effect &&  )
delete

◆ ~VST3Effect()

VST3Effect::~VST3Effect ( )
override

Definition at line 100 of file VST3Effect.cpp.

101{
102 using namespace Steinberg;
103
104 CloseUI();
105}
bool CloseUI() override
Definition: VST3Effect.cpp:274

References CloseUI().

Here is the call graph for this function:

Member Function Documentation

◆ CanExportPresets()

bool VST3Effect::CanExportPresets ( )
overridevirtual

Reimplemented from Effect.

Definition at line 280 of file VST3Effect.cpp.

281{
282 return true;
283}

◆ CloseUI()

bool VST3Effect::CloseUI ( )
overridevirtual

Reimplemented from Effect.

Definition at line 274 of file VST3Effect.cpp.

275{
276 mParent = nullptr;
277 return true;
278}
wxWindow * mParent
Definition: VST3Effect.h:47

References mParent.

Referenced by ~VST3Effect().

Here is the caller graph for this function:

◆ CopySettingsContents()

bool VST3Effect::CopySettingsContents ( const EffectSettings src,
EffectSettings dst,
SettingsCopyDirection  copyDirection 
) const
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

Parameters
srcsettings to copy from
dstsettings to copy into
copyDirectiondirection in which copy is performed
Returns
success

Reimplemented from EffectSettingsManager.

Definition at line 406 of file VST3Effect.cpp.

407{
408 VST3Wrapper::CopySettingsContents(src, dst, copyDirection);
409 return true;
410}
static void CopySettingsContents(const EffectSettings &src, EffectSettings &dst, SettingsCopyDirection copyDirection)

References VST3Wrapper::CopySettingsContents().

Here is the call graph for this function:

◆ ExportPresets()

void VST3Effect::ExportPresets ( const EffectSettings settings) const
overridevirtual

Reimplemented from Effect.

Definition at line 285 of file VST3Effect.cpp.

286{
287 using namespace Steinberg;
288
289 auto path = SelectFile(FileNames::Operation::Presets,
290 XO("Save VST3 Preset As:"),
291 wxEmptyString,
292 wxEmptyString,
293 wxT(".vstpreset"),
294 {
295 { XO("VST3 preset file"), { wxT("vstpreset") }, true }
296 },
297 wxFD_SAVE | wxFD_OVERWRITE_PROMPT | wxRESIZE_BORDER,
298 NULL);
299
300 if (path.empty())
301 return;
302
303 auto dialogPlacement = wxWidgetsWindowPlacement { mParent };
304
305 auto fileStream = owned(Vst::FileStream::open(path.c_str(), "wb"));
306 if(!fileStream)
307 {
309 //i18n-hint: VST3 preset export error
310 XO("Cannot open file"),
312 .Caption(XO("Error"))
313 .Parent(&dialogPlacement)
314 );
315 return;
316 }
317
318 auto wrapper = std::make_unique<VST3Wrapper>(*mModule, mEffectClassInfo.ID());
319 auto dummy = EffectSettings { settings };
320 wrapper->FetchSettings(dummy);
321
322 if (!wrapper->SavePreset(fileStream))
323 {
325 XO("Failed to save VST3 preset to file"),
327 .Caption(XO("Error"))
328 .Parent(&dialogPlacement)
329 );
330 }
331}
wxT("CloseDown"))
#define XO(s)
Definition: Internat.h:31
FilePath SelectFile(FileNames::Operation op, const TranslatableString &message, const FilePath &default_path, const FilePath &default_filename, const FileExtension &default_extension, const FileTypes &fileTypes, int flags, wxWindow *parent)
Definition: SelectFile.cpp:17
static Settings & settings()
Definition: TrackInfo.cpp:87
MessageBoxResult ShowMessageBox(const TranslatableString &message, MessageBoxOptions options={})
Show a modal message box with either Ok or Yes and No, and optionally Cancel.
Definition: BasicUI.h:269
Externalized state of a plug-in.
Window placement information for wxWidgetsBasicUI can be constructed from a wxWindow pointer.

References mEffectClassInfo, mModule, mParent, SelectFile(), settings(), BasicUI::ShowMessageBox(), wxT(), and XO.

Here is the call graph for this function:

◆ GetDescription()

TranslatableString VST3Effect::GetDescription ( ) const
overridevirtual

Reimplemented from Effect.

Definition at line 134 of file VST3Effect.cpp.

135{
136 //i18n-hint VST3 effect description string
137 return XO("SubCategories: %s").Format( mEffectClassInfo.subCategoriesString() );
138}

References mEffectClassInfo, and XO.

◆ GetFactoryPresets()

RegistryPaths VST3Effect::GetFactoryPresets ( ) const
overridevirtual

Report names of factory presets.

Reimplemented from Effect.

Definition at line 208 of file VST3Effect.cpp.

209{
211 return mFactoryPresets;
212
213 wxArrayString paths;
214 wxDir::GetAllFiles(GetFactoryPresetsPath(mEffectClassInfo), &paths);
215
216 RegistryPaths result;
217 for(auto& path : paths)
218 {
219 wxFileName filename(path);
220 result.push_back(filename.GetName());
221 }
222 mFactoryPresets = std::move(result);
223 mRescanFactoryPresets = false;
224
225 return mFactoryPresets;
226}
std::vector< RegistryPath > RegistryPaths
Definition: Identifier.h:219
bool mRescanFactoryPresets
Definition: VST3Effect.h:50
RegistryPaths mFactoryPresets
Definition: VST3Effect.h:51
wxString GetFactoryPresetsPath(const VST3::Hosting::ClassInfo &effectClassInfo)
Definition: VST3Effect.cpp:85

References anonymous_namespace{VST3Effect.cpp}::GetFactoryPresetsPath(), mEffectClassInfo, mFactoryPresets, and mRescanFactoryPresets.

Here is the call graph for this function:

◆ GetFamily()

EffectFamilySymbol VST3Effect::GetFamily ( ) const
overridevirtual

Report identifier and user-visible name of the effect protocol.

Reimplemented from Effect.

Definition at line 153 of file VST3Effect.cpp.

154{
156}
static EffectFamilySymbol GetFamilySymbol()
Definition: VST3Effect.cpp:95

References GetFamilySymbol().

Here is the call graph for this function:

◆ GetFamilySymbol()

EffectFamilySymbol VST3Effect::GetFamilySymbol ( )
static

Definition at line 95 of file VST3Effect.cpp.

96{
97 return XO("VST3");
98}

References XO.

Referenced by GetFamily(), and VST3EffectsModule::GetOptionalFamilySymbol().

Here is the caller graph for this function:

◆ GetPath()

PluginPath VST3Effect::GetPath ( ) const
overridevirtual

Reimplemented from Effect.

Definition at line 114 of file VST3Effect.cpp.

115{
116 return VST3Utils::MakePluginPathString( { mModule->getPath() }, mEffectClassInfo.ID().toString());
117}
static wxString MakePluginPathString(const wxString &modulePath, const std::string &effectUIDString)
Definition: VST3Utils.cpp:24

References VST3Utils::MakePluginPathString(), mEffectClassInfo, and mModule.

Here is the call graph for this function:

◆ GetSymbol()

ComponentInterfaceSymbol VST3Effect::GetSymbol ( ) const
overridevirtual

Reimplemented from Effect.

Definition at line 119 of file VST3Effect.cpp.

120{
121 return wxString { mEffectClassInfo.name() };
122}

References mEffectClassInfo.

◆ GetType()

EffectType VST3Effect::GetType ( ) const
overridevirtual

Type determines how it behaves.

Reimplemented from Effect.

Definition at line 140 of file VST3Effect.cpp.

141{
142 using namespace Steinberg::Vst::PlugType;
143 if(mEffectClassInfo.subCategoriesString() == kFxGenerator)
144 return EffectTypeGenerate;
145 const auto& cats = mEffectClassInfo.subCategories();
146
147 if(std::find(cats.begin(), cats.end(), kFx) != cats.end())
148 return EffectTypeProcess;
149
150 return EffectTypeNone;
151}
@ EffectTypeGenerate
@ EffectTypeNone
@ EffectTypeProcess

References EffectTypeGenerate, EffectTypeNone, EffectTypeProcess, and mEffectClassInfo.

Referenced by RealtimeSupport().

Here is the caller graph for this function:

◆ GetVendor()

VendorSymbol VST3Effect::GetVendor ( ) const
overridevirtual

Reimplemented from Effect.

Definition at line 124 of file VST3Effect.cpp.

125{
126 return wxString { mEffectClassInfo.vendor() };
127}

References mEffectClassInfo.

◆ GetVersion()

wxString VST3Effect::GetVersion ( ) const
overridevirtual

Reimplemented from Effect.

Definition at line 129 of file VST3Effect.cpp.

130{
131 return mEffectClassInfo.version();
132}

References mEffectClassInfo.

◆ HasOptions()

bool VST3Effect::HasOptions ( )
overridevirtual

Reimplemented from Effect.

Definition at line 354 of file VST3Effect.cpp.

355{
356 return true;
357}

◆ ImportPresets()

void VST3Effect::ImportPresets ( EffectSettings settings)
overridevirtual

Reimplemented from Effect.

Definition at line 333 of file VST3Effect.cpp.

334{
335 using namespace Steinberg;
336
337 auto path = SelectFile(FileNames::Operation::Presets,
338 XO("Load VST3 preset:"),
339 wxEmptyString,
340 wxEmptyString,
341 wxT(".vstpreset"),
342 {
343 { XO("VST3 preset file"), { wxT("vstpreset") }, true }
344 },
345 wxFD_OPEN | wxRESIZE_BORDER,
346 nullptr
347 );
348 if(path.empty())
349 return;
350
351 LoadPreset(path, settings);
352}
bool LoadPreset(const wxString &path, EffectSettings &settings) const
Definition: VST3Effect.cpp:365

References LoadPreset(), SelectFile(), settings(), wxT(), and XO.

Here is the call graph for this function:

◆ IsDefault()

bool VST3Effect::IsDefault ( ) const
overridevirtual

Whether the effect sorts "above the line" in the menus.

Reimplemented from Effect.

Definition at line 163 of file VST3Effect.cpp.

164{
165 return false;
166}

◆ IsInteractive()

bool VST3Effect::IsInteractive ( ) const
overridevirtual

Whether the effect needs a dialog for entry of settings.

Reimplemented from Effect.

Definition at line 158 of file VST3Effect.cpp.

159{
160 return true;
161}

◆ LoadFactoryPreset()

bool VST3Effect::LoadFactoryPreset ( int  id,
EffectSettings settings 
) const
overridevirtual

Change settings to the preset whose name is GetFactoryPresets()[id]

Reimplemented from Effect.

Definition at line 228 of file VST3Effect.cpp.

229{
230 if(id >= 0 && id < mFactoryPresets.size())
231 {
232 auto filename = wxFileName(GetFactoryPresetsPath(mEffectClassInfo), mFactoryPresets[id] + ".vstpreset");
233 return LoadPreset(filename.GetFullPath(), settings);
234 }
235 return true;
236}

References anonymous_namespace{VST3Effect.cpp}::GetFactoryPresetsPath(), LoadPreset(), mEffectClassInfo, mFactoryPresets, and settings().

Here is the call graph for this function:

◆ LoadPreset()

bool VST3Effect::LoadPreset ( const wxString &  path,
EffectSettings settings 
) const
private

Definition at line 365 of file VST3Effect.cpp.

366{
367 using namespace Steinberg;
368
369 auto dialogPlacement = wxWidgetsWindowPlacement { mParent };
370
371 auto fileStream = owned(Vst::FileStream::open(path.c_str(), "rb"));
372 if(!fileStream)
373 {
375 XO("Cannot open VST3 preset file %s").Format(path),
377 .Caption(XO("Error"))
378 .Parent(&dialogPlacement)
379 );
380 return false;
381 }
382
383 auto wrapper = std::make_unique<VST3Wrapper>(*mModule, mEffectClassInfo.ID());
384
385 if (!wrapper->LoadPreset(fileStream))
386 {
388 XO("Unable to apply VST3 preset file %s").Format(path),
390 .Caption(XO("Error"))
391 .Parent(&dialogPlacement)
392 );
393 return false;
394 }
395
396 wrapper->StoreSettings(settings);
397
398 return true;
399}
Abstract base class used in importing a file.

References mEffectClassInfo, mModule, mParent, settings(), BasicUI::ShowMessageBox(), and XO.

Referenced by ImportPresets(), and LoadFactoryPreset().

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

◆ LoadSettings()

bool VST3Effect::LoadSettings ( const CommandParameters parms,
EffectSettings settings 
) const
overridevirtual

Restore settings from keys and values.

Returns
true on success

Reimplemented from Effect.

Definition at line 187 of file VST3Effect.cpp.

189{
191 return true;
192}
static void LoadSettings(const CommandParameters &parms, EffectSettings &settings)

References VST3Wrapper::LoadSettings(), and settings().

Here is the call graph for this function:

◆ LoadUserPreset()

bool VST3Effect::LoadUserPreset ( const RegistryPath name,
EffectSettings settings 
) const
overridevirtual

Change settings to a user-named preset.

Reimplemented from Effect.

Definition at line 194 of file VST3Effect.cpp.

196{
198 return true;
199}
const TranslatableString name
Definition: Distortion.cpp:82
static void LoadUserPreset(const EffectDefinitionInterface &effect, const RegistryPath &name, EffectSettings &settings)

References VST3Wrapper::LoadUserPreset(), name, and settings().

Here is the call graph for this function:

◆ MakeInstance()

std::shared_ptr< EffectInstance > VST3Effect::MakeInstance ( ) const
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.

Parameters
settingsmay be assumed to have a lifetime enclosing the instance's
Postcondition
true (no promises that the result isn't null)

Implements EffectInstanceFactory.

Definition at line 254 of file VST3Effect.cpp.

255{
256 return std::make_shared<VST3Instance>(*this, *mModule, mEffectClassInfo.ID());
257}

References mEffectClassInfo, and mModule.

◆ MakeSettings()

EffectSettings VST3Effect::MakeSettings ( ) const
overridevirtual

Produce an object holding new, independent settings

Default implementation returns an empty any

Reimplemented from EffectSettingsManager.

Definition at line 401 of file VST3Effect.cpp.

402{
404}
static EffectSettings MakeSettings()

References VST3Wrapper::MakeSettings().

Here is the call graph for this function:

◆ operator=() [1/2]

VST3Effect & VST3Effect::operator= ( const VST3Effect )
delete

◆ operator=() [2/2]

VST3Effect & VST3Effect::operator= ( VST3Effect )
delete

◆ PopulateUI()

std::unique_ptr< EffectUIValidator > VST3Effect::PopulateUI ( ShuttleGui S,
EffectInstance instance,
EffectSettingsAccess access 
)
overridevirtual

Adds controls to a panel that is given as the parent window of S

Parameters
Sinterface for adding controls to a panel in a dialog
instanceguaranteed to have a lifetime containing that of the returned object
accessguaranteed to have a lifetime containing that of the returned object
Returns
null for failure; else an object invoked to retrieve values of UI controls; it might also hold some state needed to implement event handlers of the controls; it will exist only while the dialog continues to exist

Reimplemented from Effect.

Definition at line 259 of file VST3Effect.cpp.

261{
262 bool useGUI { true };
263 GetConfig(*this, PluginSettings::Shared, wxT("Options"),
264 wxT("UseGUI"),
265 useGUI,
266 useGUI);
267
268 const auto vst3instance = dynamic_cast<VST3Instance*>(&instance);
269 mParent = S.GetParent();
270
271 return std::make_unique<VST3UIValidator>(mParent, vst3instance->GetWrapper(), *this, access, useGUI);
272}
#define S(N)
Definition: ToChars.cpp:64
bool GetConfig(const EffectDefinitionInterface &ident, ConfigurationType type, const RegistryPath &group, const RegistryPath &key, Value &var, const Value &defval)

References PluginSettings::GetConfig(), mParent, S, PluginSettings::Shared, and wxT().

Here is the call graph for this function:

◆ RealtimeSupport()

auto VST3Effect::RealtimeSupport ( ) const
overridevirtual

Since which version of Audacity has the effect supported realtime?

Reimplemented from Effect.

Definition at line 168 of file VST3Effect.cpp.

169{
170 return GetType() == EffectTypeProcess
173}
EffectType GetType() const override
Type determines how it behaves.
Definition: VST3Effect.cpp:140

References EffectTypeProcess, GetType(), EffectDefinitionInterface::Never, and EffectDefinitionInterface::Since_3_2.

Here is the call graph for this function:

◆ SaveSettings()

bool VST3Effect::SaveSettings ( const EffectSettings settings,
CommandParameters parms 
) const
overridevirtual

Store settings as keys and values.

The override may assume parms is initially empty

Returns
true on success

Reimplemented from Effect.

Definition at line 180 of file VST3Effect.cpp.

182{
184 return true;
185}
static void SaveSettings(const EffectSettings &settings, CommandParameters &parms)

References VST3Wrapper::SaveSettings(), and settings().

Here is the call graph for this function:

◆ SaveUserPreset()

bool VST3Effect::SaveUserPreset ( const RegistryPath name,
const EffectSettings settings 
) const
overridevirtual

Save settings in the configuration file as a user-named preset.

Reimplemented from Effect.

Definition at line 201 of file VST3Effect.cpp.

203{
205 return true;
206}
static void SaveUserPreset(const EffectDefinitionInterface &effect, const RegistryPath &name, const EffectSettings &settings)

References name, VST3Wrapper::SaveUserPreset(), and settings().

Here is the call graph for this function:

◆ ShowClientInterface()

int VST3Effect::ShowClientInterface ( wxWindow &  parent,
wxDialog &  dialog,
EffectUIValidator pValidator,
bool  forceModal 
)
overridevirtual
Returns
0 if destructive effect processing should not proceed (and there may be a non-modal dialog still opened); otherwise, modal dialog return code

Reimplemented from Effect.

Definition at line 238 of file VST3Effect.cpp.

240{
241 if(!IsGraphicalUI())
242 {
243 //Restrict resize of the "plain" dialog
244 dialog.SetMaxSize(dialog.GetSize());
245 dialog.SetMinSize(dialog.GetSize());
246 }
247 if(forceModal)
248 return dialog.ShowModal();
249
250 dialog.Show();
251 return 0;
252}
bool IsGraphicalUI() override
Definition: Effect.cpp:302

References Effect::IsGraphicalUI().

Here is the call graph for this function:

◆ ShowOptions()

void VST3Effect::ShowOptions ( )
overridevirtual

Reimplemented from Effect.

Definition at line 359 of file VST3Effect.cpp.

360{
361 VST3OptionsDialog dlg(mParent, *this);
362 dlg.ShowModal();
363}

References mParent.

◆ SupportsAutomation()

bool VST3Effect::SupportsAutomation ( ) const
overridevirtual

Whether the effect has any automatable controls.

Reimplemented from Effect.

Definition at line 175 of file VST3Effect.cpp.

176{
177 return true;
178}

Friends And Related Function Documentation

◆ VST3PluginValidator

friend class VST3PluginValidator
friend

Definition at line 40 of file VST3Effect.h.

Member Data Documentation

◆ mEffectClassInfo

const VST3::Hosting::ClassInfo VST3Effect::mEffectClassInfo
private

◆ mFactoryPresets

RegistryPaths VST3Effect::mFactoryPresets
mutableprivate

Definition at line 51 of file VST3Effect.h.

Referenced by GetFactoryPresets(), and LoadFactoryPreset().

◆ mModule

std::shared_ptr<VST3::Hosting::Module> VST3Effect::mModule
private

Definition at line 44 of file VST3Effect.h.

Referenced by ExportPresets(), GetPath(), LoadPreset(), and MakeInstance().

◆ mParent

wxWindow* VST3Effect::mParent { nullptr }
private

Definition at line 47 of file VST3Effect.h.

Referenced by CloseUI(), ExportPresets(), LoadPreset(), PopulateUI(), and ShowOptions().

◆ mRescanFactoryPresets

bool VST3Effect::mRescanFactoryPresets { true }
mutableprivate

Definition at line 50 of file VST3Effect.h.

Referenced by GetFactoryPresets().


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