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 Process::ProcessFlags::ExternalEffect)
31 DESCRIPTION_METADATA(, vst3::Model, "VST")
35 class CreateVSTControl;
37 struct PortCreationVisitor;
42 SCORE_SERIALIZE_FRIENDS
43 friend class vst3::CreateVSTControl;
46 PROCESS_METADATA_IMPL(
Model)
51 template <
typename Impl>
52 Model(Impl& vis, QObject* parent)
53 : ProcessModel{vis, parent}
60 QString effect()
const noexcept
override;
61 QString prettyName()
const noexcept
override;
62 bool hasExternalUI()
const noexcept;
66 ossia::hash_map<Steinberg::Vst::ParamID, ControlInlet*> controls;
69 void removeControl(Steinberg::Vst::ParamID fxnum);
71 void addControlFromEditor(Steinberg::Vst::ParamID
id);
72 void on_addControl(
const Steinberg::Vst::ParameterInfo& v);
76 void reloadControls();
77 Steinberg::tresult restartComponent(int32_t flags);
82 std::vector<Process::Preset> builtinPresets()
const noexcept
override;
87 void mapAllControls(
int numParams);
88 QByteArray readProcessorState()
const;
89 QByteArray readControllerState()
const;
95 QByteArray m_savedProcessorState;
96 QByteArray m_savedControllerState;
98 ossia::hash_map<Steinberg::Vst::ParamID, int32_t> m_paramToIndex;
110 QString EffectProcessFactory_T<vst3::Model>::customConstructionData() const noexcept;
114 EffectProcessFactory_T<vst3::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: /Vst3/Control.hpp:15
Definition: score-plugin-vst3/Vst3/EffectModel.hpp:40
Base classes and tools to implement processes and layers.
Definition: JSONVisitor.hpp:1324
Definition: Preset.hpp:32
Definition: TimeValue.hpp:21
Definition: Plugin.hpp:37
Definition: score-plugin-vst3/Vst3/EffectModel.cpp:384