2 #include <Process/Execution/ProcessComponent.hpp>
3 #include <Process/GenericProcessFactory.hpp>
4 #include <Process/Inspector/ProcessInspectorWidgetDelegate.hpp>
5 #include <Process/Inspector/ProcessInspectorWidgetDelegateFactory.hpp>
6 #include <Process/Process.hpp>
7 #include <Process/Script/ScriptEditor.hpp>
8 #include <Process/Script/ScriptProcess.hpp>
10 #include <Control/DefaultEffectItem.hpp>
11 #include <Effect/EffectFactory.hpp>
13 #include <ossia/dataflow/node_process.hpp>
20 #include <faust/dsp/poly-llvm-dsp.h>
23 class FaustEffectModel;
26 namespace ossia::nodes
28 struct custom_dsp_poly_factory;
29 class custom_dsp_poly_effect;
33 , Faust::FaustEffectModel,
"5354c61a-1649-4f59-b952-5c2f1b79c1bd",
"Faust",
"Faust",
34 Process::ProcessCategory::Script,
"Plugins",
35 "Faust process. Refer to https://faust.grame.fr",
"GRAME and the Faust team",
36 {
"Script"}, {}, {}, QUrl(
"https://ossia.io/score-docs/processes/faust.html"), Process::ProcessFlags::ExternalEffect)
37 DESCRIPTION_METADATA(, Faust::FaustEffectModel,
"Faust")
43 friend class FaustUpdateUI;
44 W_OBJECT(FaustEffectModel)
45 SCORE_SERIALIZE_FRIENDS
46 PROCESS_METADATA_IMPL(FaustEffectModel)
49 static constexpr
bool hasExternalUI() noexcept {
return true; }
56 template <
typename Impl>
57 FaustEffectModel(Impl& vis, QObject* parent)
58 :
Process::ProcessModel{vis, parent}
64 QString prettyName() const noexcept override;
66 bool validate(const QString& txt) const noexcept;
67 const QString& script()
const {
return m_script; }
75 std::shared_ptr<llvm_dsp_factory> faust_factory{};
76 std::shared_ptr<llvm_dsp> faust_object{};
78 std::shared_ptr<ossia::nodes::custom_dsp_poly_factory> faust_poly_factory{};
79 std::shared_ptr<ossia::nodes::custom_dsp_poly_effect> faust_poly_object{};
81 void scriptChanged(
const QString& str) W_SIGNAL(scriptChanged, str);
82 void programChanged() W_SIGNAL(programChanged);
84 void errorMessage(
int line, const QString& e) W_SIGNAL(errorMessage, line, e);
86 PROPERTY(QString, script READ script WRITE setScript NOTIFY scriptChanged)
88 QString effect() const noexcept override;
89 void loadPreset(const
Process::Preset& preset) override;
90 Process::Preset savePreset() const noexcept override;
93 [[nodiscard]]
Process::ScriptChangeResult reload();
97 QString m_declareName;
105 EffectProcessFactory_T<Faust::FaustEffectModel>::customConstructionData() const noexcept;
109 EffectProcessFactory_T<Faust::FaustEffectModel>::descriptor(QString d) const noexcept;
116 static constexpr
const char* language =
"Faust";
123 FaustEffectModel, FaustEffectModel::p_script,
LanguageSpec>>;
132 COMPONENT_METADATA(
"eb4f83af-5ddc-4f2f-9426-6f8a599a1e96")
135 static constexpr
bool is_unique =
true;
145 template <
typename Node_T>
146 void setupExecutionControls(
const Node_T&,
int firstControlIndex);
147 template <
typename Node_T>
148 void setupExecutionControlOutlets(
const Node_T&,
int firstControlIndex);
150 std::vector<QMetaObject::Connection> m_controlConnections;
Definition: score-plugin-faust/Faust/EffectModel.hpp:130
Definition: Process/Execution/ProcessComponent.hpp:119
Definition: DefaultEffectItem.hpp:26
Definition: EffectFactory.hpp:66
Definition: EffectFactory.hpp:14
The Process class.
Definition: score-lib-process/Process/Process.hpp:61
Definition: ScriptEditor.hpp:42
The id_base_t class.
Definition: Identifier.hpp:57
Components used for the execution of a score.
Definition: ProcessComponent.cpp:12
Base classes and tools to implement processes and layers.
Definition: JSONVisitor.hpp:1324
Definition: ExecutionContext.hpp:76
Definition: Process/Execution/ProcessComponent.hpp:89
Definition: ExecutionTransaction.hpp:18
Definition: score-plugin-faust/Faust/EffectModel.hpp:115
Definition: PortForward.hpp:23
Definition: PortForward.hpp:27
Definition: ScriptProcess.hpp:14
Definition: TimeValue.hpp:21