2#include <Process/GenericProcessFactory.hpp>
3#include <Process/Process.hpp>
4#include <Process/ProcessMetadata.hpp>
6#include <Control/DefaultEffectItem.hpp>
7#include <Effect/EffectFactory.hpp>
10#include <score/serialization/JSONVisitor.hpp>
12#include <ossia/detail/hash_map.hpp>
14#include <QSocketNotifier>
27 , Clap::Model,
"10e8d26d-1d82-4bfc-a9fb-d85ffdf04e5f",
"CLAP",
"CLAP",
28 Process::ProcessCategory::Other,
"Plugins",
"CLever Audio Plug-in",
"ossia score",
31 "https://ossia.io/score-docs/processes/"
32 "audio-plugins.html#common-formats-vst-vst3-lv2-jsfx"),
33 Process::ProcessFlags::ExternalEffect)
34DESCRIPTION_METADATA(, Clap::Model,
"Clap")
43 PluginHandle(
const PluginHandle&) =
delete;
44 PluginHandle(PluginHandle&&) =
delete;
45 PluginHandle& operator=(
const PluginHandle&) =
delete;
46 PluginHandle& operator=(PluginHandle&&) =
delete;
49 void load(Model& context, QByteArray path, QByteArray
id);
51 const clap_plugin_entry_t* entry{};
52 const clap_plugin_factory_t* factory{};
53 const clap_plugin_t* plugin{};
54 const clap_plugin_descriptor_t* desc{};
59 const clap_plugin_params_t* ext_params{};
60 const clap_plugin_timer_support_t* ext_timer_support{};
68 SCORE_SERIALIZE_FRIENDS
71 MODEL_METADATA_IMPL(Model)
74 const TimeVal& duration,
const QString& pluginPath,
84 QString prettyShortName() const noexcept
override
88 QString category() const noexcept
override
94 bool hasExternalUI() const noexcept;
95 PluginHandle* handle() const noexcept {
return m_plugin.get(); }
99 const QString& pluginId() const noexcept {
return m_pluginId; }
100 bool supports64() const noexcept {
return m_supports64; }
101 bool executing() const noexcept {
return m_executing; }
103 const std::vector<clap_param_info_t>& parameterInputs() const noexcept
105 return m_parameters_ins;
107 const std::vector<clap_param_info_t>& parameterOutputs() const noexcept
109 return m_parameters_outs;
111 const std::vector<clap_note_port_info_t>& midiInputs() const noexcept
115 const std::vector<clap_note_port_info_t>& midiOutputs() const noexcept
119 const std::vector<clap_audio_port_info_t>& audioInputs() const noexcept
123 const std::vector<clap_audio_port_info_t>& audioOutputs() const noexcept
131 std::vector<
Process::Preset> builtinPresets() const noexcept override;
133 void restartPlugin() W_SIGNAL(restartPlugin);
134 Clap::Window* window{};
135 std::vector<std::pair<clap_id, QTimer*>> timers;
139 std::unique_ptr<QSocketNotifier> read;
140 std::unique_ptr<QSocketNotifier> write;
141 std::unique_ptr<QSocketNotifier> error;
143 ossia::hash_map<int, std::unique_ptr<FdNotifiers>> fd_notifiers;
147 void createControls(
bool loading);
148 void setupControlInlet(
149 const clap_plugin_params_t&,
const clap_param_info_t& info,
int index,
151 void setupControlOutlet(
152 const clap_plugin_params_t&,
const clap_param_info_t& info,
int index,
155 QString m_pluginPath;
158 std::unique_ptr<PluginHandle> m_plugin;
159 QByteArray m_loadedState;
161 std::vector<clap_param_info_t> m_parameters_ins;
162 std::vector<clap_param_info_t> m_parameters_outs;
163 std::vector<clap_audio_port_info_t> m_audio_ins;
164 std::vector<clap_audio_port_info_t> m_audio_outs;
165 std::vector<clap_note_port_info_t> m_midi_ins;
166 std::vector<clap_note_port_info_t> m_midi_outs;
176QString EffectProcessFactory_T<Clap::Model>::customConstructionData() const noexcept;
180EffectProcessFactory_T<Clap::Model>::descriptor(QString d) const noexcept;
Definition DataStreamVisitor.hpp:202
Definition JSONVisitor.hpp:423
Definition DefaultEffectItem.hpp:26
Definition EffectFactory.hpp:67
Definition EffectFactory.hpp:14
The Process class.
Definition score-lib-process/Process/Process.hpp:61
The id_base_t class.
Definition Identifier.hpp:59
Base classes and tools to implement processes and layers.
Definition JSONVisitor.hpp:1115
ProcessFlags
Various settings for processes.
Definition ProcessFlags.hpp:17
Definition TimeValue.hpp:21