2 #include <Process/Dataflow/PortFactory.hpp>
3 #include <Process/GenericProcessFactory.hpp>
4 #include <Process/Process.hpp>
6 #include <Control/DefaultEffectItem.hpp>
7 #include <Effect/EffectFactory.hpp>
8 #include <Vst/Loader.hpp>
10 #include <score/tools/std/Invoke.hpp>
12 #include <ossia/detail/hash_map.hpp>
21 , vst::Model,
"BE8E6BD3-75F2-4102-8895-8A4EB4EA545A",
"VST",
"VST",
22 Process::ProcessCategory::Other,
"Plugins",
"VST plug-in",
23 "VST is a trademark of Steinberg Media Technologies GmbH", {}, {}, {},
24 Process::ProcessFlags::ExternalEffect)
26 DESCRIPTION_METADATA(, vst::Model, "")
29 #define VST_FIRST_CONTROL_INDEX(synth) ((synth) ? 2 : 1)
36 AEffectWrapper(AEffect* f) noexcept
41 auto getParameter(int32_t index)
const noexcept {
return fx->getParameter(fx, index); }
42 auto setParameter(int32_t index,
float p)
const noexcept
44 return fx->setParameter(fx, index, p);
48 int32_t opcode, int32_t index = 0, intptr_t value = 0,
void* ptr =
nullptr,
49 float opt = 0.0f) const noexcept
51 return fx->dispatcher(fx, opcode, index, value, ptr, opt);
62 SCORE_SERIALIZE_FRIENDS
66 MODEL_METADATA_IMPL(Model)
71 template <
typename Impl>
72 Model(Impl& vis, QObject* parent)
73 : ProcessModel{vis, parent}
74 , m_registration{*this}
80 QString prettyShortName() const noexcept
override
84 QString category() const noexcept
override
90 void setCreatingControls(
bool ok) override;
93 QString effect() const noexcept override;
94 QString prettyName() const noexcept override;
95 bool hasExternalUI() const noexcept;
97 std::shared_ptr<AEffectWrapper> fx{};
99 ossia::hash_map<int, ControlInlet*> controls;
102 void removeControl(
int fxnum);
105 void on_addControl(
int idx,
float v);
106 W_SLOT(on_addControl);
108 void on_controlChangedFromScore(
int num,
float newval);
110 void reloadControls();
111 void reloadPrograms();
114 int32_t opcode, int32_t index = 0, intptr_t value = 0,
void* ptr =
nullptr,
117 return fx->dispatch(opcode, index, value, ptr, opt);
119 std::atomic_bool needIdle{};
124 std::vector<
Process::Preset> builtinPresets() const noexcept override;
126 QString getString(AEffectOpcodes op,
int param);
134 std::
string m_backup_chunk;
135 ossia::float_vector m_backup_float_data;
136 std::vector<std::pair<std::
string,
int>> m_programs;
137 int32_t m_effectId{};
138 bool m_createControls{};
140 struct vst_context_handler
143 explicit vst_context_handler(Model&
self);
144 ~vst_context_handler();
149 AEffect* getPluginInstance(int32_t
id);
150 intptr_t vst_host_callback(
151 AEffect* effect, int32_t opcode, int32_t index, intptr_t value,
void* ptr,
158 QString EffectProcessFactory_T<vst::Model>::customConstructionData() const noexcept;
162 EffectProcessFactory_T<vst::Model>::descriptor(QString d) const noexcept;
Definition: QmlObjects.hpp:109
Definition: EffectFactory.hpp:14
Definition: score-lib-process/Process/Dataflow/Port.hpp:102
The Process class.
Definition: score-lib-process/Process/Process.hpp:61
The id_base_t class.
Definition: Identifier.hpp:57
Definition: Vst/Control.hpp:15
Definition: plugins/score-plugin-vst/Vst/commands.hpp:41
Base classes and tools to implement processes and layers.
Definition: JSONVisitor.hpp:1324
ProcessFlags
Various settings for processes.
Definition: ProcessFlags.hpp:17
Definition: Preset.hpp:32
Definition: TimeValue.hpp:21