Audacity 3.2.0
LV2Effect.h
Go to the documentation of this file.
1/**********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 LV2Effect.h
6
7 Audacity(R) is copyright (c) 1999-2013 Audacity Team.
8 License: GPL v2 or later. See License.txt.
9
10*********************************************************************/
11
12#ifndef __AUDACITY_LV2_EFFECT__
13#define __AUDACITY_LV2_EFFECT__
14
15#if USE_LV2
16
17class wxArrayString;
18
19#include "LV2FeaturesList.h"
20#include "LV2Ports.h"
21#include "ShuttleGui.h"
22#include "SampleFormat.h"
23#include "../StatelessPerTrackEffect.h"
24
25// We use deprecated LV2 interfaces to remain compatible with older
26// plug-ins, so disable warnings
27LV2_DISABLE_DEPRECATION_WARNINGS
28
29#define LV2EFFECTS_VERSION wxT("1.0.0.0")
30/* i18n-hint: abbreviates
31 "Linux Audio Developer's Simple Plugin API (LADSPA) version 2" */
32#define LV2EFFECTS_FAMILY XO("LV2")
33
34class LV2Editor;
35
37{
38
39 friend class LV2PluginValidator;
40
41public:
42 LV2Effect(const LilvPlugin &plug);
43 virtual ~LV2Effect();
44
45 // ComponentInterface implementation
46
47 PluginPath GetPath() const override;
48 ComponentInterfaceSymbol GetSymbol() const override;
49 VendorSymbol GetVendor() const override;
50 wxString GetVersion() const override;
51 TranslatableString GetDescription() const override;
52
53 // EffectDefinitionInterface implementation
54
55 EffectType GetType() const override;
56 EffectFamilySymbol GetFamily() const override;
57 bool IsInteractive() const override;
58 bool IsDefault() const override;
59 RealtimeSince RealtimeSupport() const override;
60 bool SupportsAutomation() const override;
61
62 bool SaveSettings(
63 const EffectSettings &settings, CommandParameters & parms) const override;
64 bool LoadSettings(
65 const CommandParameters & parms, EffectSettings &settings) const override;
66
68 const RegistryPath & name, EffectSettings &settings) const override;
69 bool SaveUserPreset(
70 const RegistryPath & name, const EffectSettings &settings) const override;
71
72 RegistryPaths GetFactoryPresets() const override;
74 const override;
75
76 int ShowClientInterface(const EffectPlugin &plugin, wxWindow &parent,
77 wxDialog &dialog, EffectEditor *pEditor, bool forceModal)
78 const override;
79
80 bool InitializePlugin();
81
82 std::shared_ptr<EffectInstance> MakeInstance() const override;
83 std::unique_ptr<EffectEditor> PopulateUI(const EffectPlugin &plugin,
85 const EffectOutputs *pOutputs) const override;
86 bool CloseUI() const override;
87
88 bool CanExportPresets() const override;
89 void ExportPresets(
90 const EffectPlugin &plugin, const EffectSettings &settings)
91 const override;
93 const EffectPlugin &plugin, EffectSettings &settings) const override;
94
95 bool HasOptions() const override;
96 void ShowOptions(const EffectPlugin &plugin) const override;
97
98 // LV2Effect implementation
99
100private:
102 virtual std::unique_ptr<EffectEditor> MakeEditor(
103 ShuttleGui & S, EffectInstance &instance, EffectSettingsAccess &access,
104 const EffectOutputs *pOutputs) const final;
105
106 EffectSettings MakeSettings() const override;
108 const EffectSettings &src, EffectSettings &dst) const override;
109
110 std::unique_ptr<EffectOutputs> MakeOutputs() const override;
111
113 const RegistryPath & group, EffectSettings &settings) const;
114 bool SaveParameters(
115 const RegistryPath & group, const EffectSettings &settings) const;
116
117private:
118 const LilvPlugin &mPlug;
120
122
124 bool mWantsStateInterface{ false };
125
126 size_t mFramePos{};
127
130
131 double mLength{};
132
133 // Mutable cache fields computed once on demand
134 mutable bool mFactoryPresetsLoaded{ false };
136 mutable wxArrayString mFactoryPresetUris;
137};
138
139#endif
140#endif
const TranslatableString name
Definition: Distortion.cpp:76
EffectType
std::optional< std::unique_ptr< EffectSettingsAccess::Message > > OptionalMessage
wxString RegistryPath
Definition: Identifier.h:218
wxString PluginPath
type alias for identifying a Plugin supplied by a module, each module defining its own interpretation...
Definition: Identifier.h:214
std::vector< RegistryPath > RegistryPaths
Definition: Identifier.h:219
#define S(N)
Definition: ToChars.cpp:64
static Settings & settings()
Definition: TrackInfo.cpp:87
CommandParameters, derived from wxFileConfig, is essentially doing the same things as the SettingsVis...
ComponentInterfaceSymbol pairs a persistent string identifier used internally with an optional,...
RealtimeSince
In which versions of Audacity was an effect realtime capable?
Performs effect computation.
Hold values to send to effect output meters.
Factory of instances of an effect.
Definition: EffectPlugin.h:36
virtual ~LV2Effect()
Definition: LV2Effect.cpp:58
VendorSymbol GetVendor() const override
Definition: LV2Effect.cpp:76
bool mFactoryPresetsLoaded
Definition: LV2Effect.h:134
bool CopySettingsContents(const EffectSettings &src, EffectSettings &dst) const override
Update one settings object from another.
Definition: LV2Effect.cpp:194
PluginPath GetPath() const override
Definition: LV2Effect.cpp:66
RegistryPaths GetFactoryPresets() const override
Report names of factory presets.
Definition: LV2Effect.cpp:392
bool SupportsAutomation() const override
Whether the effect has any automatable controls.
Definition: LV2Effect.cpp:145
OptionalMessage LoadUserPreset(const RegistryPath &name, EffectSettings &settings) const override
Definition: LV2Effect.cpp:380
RealtimeSince RealtimeSupport() const override
Since which version of Audacity has the effect supported realtime?
Definition: LV2Effect.cpp:137
EffectFamilySymbol GetFamily() const override
Report identifier and user-visible name of the effect protocol.
Definition: LV2Effect.cpp:122
void ExportPresets(const EffectPlugin &plugin, const EffectSettings &settings) const override
Definition: LV2Effect.cpp:453
bool SaveParameters(const RegistryPath &group, const EffectSettings &settings) const
Definition: LV2Effect.cpp:493
bool InitializePlugin()
Definition: LV2Effect.cpp:150
virtual std::unique_ptr< EffectEditor > MakeEditor(ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access, const EffectOutputs *pOutputs) const final
Will never be called.
Definition: LV2Effect.cpp:360
RegistryPaths mFactoryPresetNames
Definition: LV2Effect.h:135
EffectSettings MakeSettings() const override
Definition: LV2Effect.cpp:181
bool mWantsStateInterface
Definition: LV2Effect.h:124
bool SaveSettings(const EffectSettings &settings, CommandParameters &parms) const override
Store settings as keys and values.
Definition: LV2Effect.cpp:268
LV2Effect(const LilvPlugin &plug)
Definition: LV2Effect.cpp:54
std::unique_ptr< EffectOutputs > MakeOutputs() const override
Produce an object to hold values to send to effect output meters.
Definition: LV2Effect.cpp:232
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
Definition: LV2Effect.cpp:315
FloatBuffers mCVInBuffers
Definition: LV2Effect.h:128
EffectType GetType() const override
Type determines how it behaves.
Definition: LV2Effect.cpp:102
int ShowClientInterface(const EffectPlugin &plugin, wxWindow &parent, wxDialog &dialog, EffectEditor *pEditor, bool forceModal) const override
Definition: LV2Effect.cpp:249
wxString GetVersion() const override
Definition: LV2Effect.cpp:88
void ShowOptions(const EffectPlugin &plugin) const override
Definition: LV2Effect.cpp:469
size_t mFramePos
Definition: LV2Effect.h:126
bool CanExportPresets() const override
Whether the effect supports export of presets to files, and importing too.
Definition: LV2Effect.cpp:448
OptionalMessage LoadParameters(const RegistryPath &group, EffectSettings &settings) const
Definition: LV2Effect.cpp:478
wxArrayString mFactoryPresetUris
Definition: LV2Effect.h:136
bool mWantsOptionsInterface
Definition: LV2Effect.h:123
const LV2Ports mPorts
Definition: LV2Effect.h:121
ComponentInterfaceSymbol GetSymbol() const override
Definition: LV2Effect.cpp:71
bool LoadSettings(const CommandParameters &parms, EffectSettings &settings) const override
Restore settings from keys and values.
Definition: LV2Effect.cpp:282
std::shared_ptr< EffectInstance > MakeInstance() const override
Make an object maintaining short-term state of an Effect.
Definition: LV2Effect.cpp:241
bool IsInteractive() const override
Whether the effect needs a dialog for entry of settings.
Definition: LV2Effect.cpp:127
const LV2FeaturesList mFeatures
Definition: LV2Effect.h:119
OptionalMessage ImportPresets(const EffectPlugin &plugin, EffectSettings &settings) const override
Definition: LV2Effect.cpp:458
OptionalMessage LoadFactoryPreset(int id, EffectSettings &settings) const override
Definition: LV2Effect.cpp:423
TranslatableString GetDescription() const override
Definition: LV2Effect.cpp:93
bool SaveUserPreset(const RegistryPath &name, const EffectSettings &settings) const override
Save settings in the configuration file as a user-named preset.
Definition: LV2Effect.cpp:386
bool HasOptions() const override
Definition: LV2Effect.cpp:464
double mLength
Definition: LV2Effect.h:131
bool CloseUI() const override
Definition: LV2Effect.cpp:369
bool IsDefault() const override
Whether the effect sorts "above the line" in the menus.
Definition: LV2Effect.cpp:132
const LilvPlugin & mPlug
Definition: LV2Effect.h:118
FloatBuffers mCVOutBuffers
Definition: LV2Effect.h:129
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
Definition: ShuttleGui.h:625
Simply the union of PerTrackEffect and StatelessEffectUIServices.
Holds a msgid for the translation catalog; may also bind format arguments.
Externalized state of a plug-in.