2#include <Process/Execution/ProcessComponent.hpp>
3#include <Process/GenericProcessFactory.hpp>
4#include <Process/Process.hpp>
6#include <Control/DefaultEffectItem.hpp>
7#include <Effect/EffectFactory.hpp>
8#include <LV2/Context.hpp>
9#include <Process/Preset.hpp>
11#include <ossia/dataflow/node_process.hpp>
15#include <lilv/lilvmm.hpp>
17#include <score_plugin_lv2_export.h>
27SCORE_PLUGIN_LV2_EXPORT
void clearPluginCache();
32SCORE_PLUGIN_LV2_EXPORT std::optional<Lilv::Plugin>
33find_lv2_plugin(Lilv::World& world, QString path);
36 , LV2::Model,
"fd5243ba-70b5-4164-b44a-ecb0dcdc0494",
"LV2",
"LV2",
37 Process::ProcessCategory::Other,
"Plugins",
"LV2 plug-in",
"ossia score", {}, {}, {},
38 QUrl(
"https://ossia.io/score-docs/processes/audio-plugins.html#common-formats-vst-vst3-lv2-jsfx"),
39 Process::ProcessFlags::ExternalEffect)
40DESCRIPTION_METADATA(, LV2::Model,
"LV2")
46 SCORE_SERIALIZE_FRIENDS
48 PROCESS_METADATA_IMPL(Model)
53 template <
typename Impl>
54 Model(Impl& vis, QObject* parent)
55 : ProcessModel{vis, parent}
60 QString effect() const noexcept
override {
return m_effectPath; }
62 void setEffect(
const QString& s) { m_effectPath = s; }
64 QString prettyName() const noexcept override;
66 bool hasExternalUI() const noexcept;
68 void loadPreset(const
Process::Preset& preset) override;
69 Process::Preset savePreset() const noexcept override;
70 std::vector<
Process::Preset> builtinPresets() const noexcept override;
72 const LilvPlugin* plugin{};
76 std::size_t m_controlInStart{};
77 std::size_t m_controlOutStart{};
78 mutable moodycamel::ReaderWriterQueue<Message> ui_events;
79 mutable moodycamel::ReaderWriterQueue<Message> plugin_events;
80 mutable moodycamel::ReaderWriterQueue<Message>
83 ossia::hash_map<uint32_t, std::pair<Process::ControlInlet*, bool>> control_map;
84 ossia::hash_map<uint32_t, Process::ControlOutlet*> control_out_map;
91 ossia::float_vector fInControls, fOutControls;
94class LV2EffectComponent final
97 W_OBJECT(LV2EffectComponent)
98 COMPONENT_METADATA(
"57f50003-a179-424a-80b1-b9394d73a84a")
101 static constexpr
bool is_unique = true;
103 LV2EffectComponent(LV2::Model& proc, const
Execution::Context& ctx, QObject* parent);
105 void lazy_init() override;
108 writeAtomToUi(uint32_t port_index, uint32_t type, uint32_t size, const
void* body);
109 void writeAtomToUi(uint32_t port_index, LV2_Atom& atom);
113 QTimer* m_grow_timer{};
114 int m_pool_sample_rate{};
115 std::size_t m_pool_pushed{};
116 std::size_t m_pool_max_requested{};
118 void growVoicePoolTick();
125QString EffectProcessFactory_T<LV2::Model>::customConstructionData() const noexcept;
Definition Process/Execution/ProcessComponent.hpp:131
Definition EffectFactory.hpp:14
The Process class.
Definition score-lib-process/Process/Process.hpp:75
The id_base_t class.
Definition Identifier.hpp:59
Components used for the execution of a score.
Definition ProcessComponent.cpp:14
Base classes and tools to implement processes and layers.
Definition JSONVisitor.hpp:1115
Definition Process/Execution/ProcessComponent.hpp:101
Definition Context.hpp:191
Definition Context.hpp:60
Definition TimeValue.hpp:21