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 <Vst3/Plugin.hpp>
10 #include <score/tools/std/Invoke.hpp>
12 #include <ossia/detail/hash_map.hpp>
16 #include <public.sdk/source/vst/utility/uid.h>
17 #define VST_DEFAULT_PARAM_NUMBER_CUTOFF 10
25 ,
vst3::Model,
"4cc30435-3237-4e94-a79e-1c2bd6b724a1",
"VST 3",
"VST 3",
26 Process::ProcessCategory::Other,
"Plugins",
"VST 3 plug-in",
27 "VST is a trademark of Steinberg Media Technologies GmbH", {}, {}, {},
28 QUrl(
"https://ossia.io/score-docs/processes/audio-plugins.html#common-formats-vst-vst3-lv2-jsfx"),
29 Process::ProcessFlags::ExternalEffect)
32 DESCRIPTION_METADATA(, vst3::Model, "VST")
36 class CreateVSTControl;
38 struct PortCreationVisitor;
43 SCORE_SERIALIZE_FRIENDS
44 friend class vst3::CreateVSTControl;
47 PROCESS_METADATA_IMPL(
Model)
52 template <
typename Impl>
53 Model(Impl& vis, QObject* parent)
54 : ProcessModel{vis, parent}
61 QString effect()
const noexcept
override;
62 QString prettyName()
const noexcept
override;
63 bool hasExternalUI()
const noexcept;
67 ossia::hash_map<Steinberg::Vst::ParamID, ControlInlet*> controls;
70 void removeControl(Steinberg::Vst::ParamID fxnum);
72 void addControlFromEditor(Steinberg::Vst::ParamID
id);
73 void on_addControl(
const Steinberg::Vst::ParameterInfo& v);
77 void reloadControls();
78 Steinberg::tresult restartComponent(int32_t flags);
83 std::vector<Process::Preset> builtinPresets()
const noexcept
override;
88 void mapAllControls(
int numParams);
89 QByteArray readProcessorState()
const;
90 QByteArray readControllerState()
const;
96 QByteArray m_savedProcessorState;
97 QByteArray m_savedControllerState;
99 ossia::hash_map<Steinberg::Vst::ParamID, int32_t> m_paramToIndex;
111 QString EffectProcessFactory_T<vst3::Model>::customConstructionData() const noexcept;
115 EffectProcessFactory_T<vst3::Model>::descriptor(QString d) const noexcept;
Definition: QmlObjects.hpp:114
Definition: EffectFactory.hpp:14
The Process class.
Definition: score-lib-process/Process/Process.hpp:61
The id_base_t class.
Definition: Identifier.hpp:57
Definition: /Vst3/Control.hpp:15
Definition: score-plugin-vst3/Vst3/EffectModel.hpp:41
Base classes and tools to implement processes and layers.
Definition: JSONVisitor.hpp:1324
Definition: Preset.hpp:32
Definition: TimeValue.hpp:21
Definition: Plugin.hpp:43
Definition: score-plugin-vst3/Vst3/EffectModel.cpp:390