Loading...
Searching...
No Matches
PdProcess.hpp
1#pragma once
2#include <Process/Process.hpp>
3#include <Process/Script/ScriptProcess.hpp>
4#include <Process/TimeValue.hpp>
5
6#include <Pd/PdInstance.hpp>
7#include <Pd/PdMetadata.hpp>
8
9#include <score/model/Identifier.hpp>
10#include <score/selection/Selection.hpp>
11#include <score/serialization/VisitorInterface.hpp>
12
13#include <ossia/network/dataspace/dataspace.hpp>
14#include <ossia/network/domain/domain.hpp>
15namespace Pd
16{
17
18const QString& locatePdBinary() noexcept;
19
21{
22 struct Control
23 {
24 QString name; // Pretty name
25 QString remote; // Name used for send/receive
26 QString type;
27 QString widget;
28 QString unit;
29 ossia::value defaultv;
30 ossia::domain domain;
31 std::optional<ossia::val_type> deduced_type;
32 };
33 std::vector<Control> receives, sends;
34};
35
37{
38 SCORE_SERIALIZE_FRIENDS
39 PROCESS_METADATA_IMPL(Pd::ProcessModel)
40 W_OBJECT(ProcessModel)
41
42public:
44 explicit ProcessModel(
45 const TimeVal& duration, const QString& pdpatch,
46 const Id<Process::ProcessModel>& id, QObject* parent);
47
48 template <typename Impl>
49 explicit ProcessModel(Impl& vis, QObject* parent)
50 : Process::ProcessModel{vis, parent}
51 {
52 init();
53 vis.writeTo(*this);
54 }
55
56 bool hasExternalUI() const noexcept;
57
58 [[nodiscard]] Process::ScriptChangeResult setScript(const QString& script);
59 const QString& script() const;
60
61 ~ProcessModel() override;
62
63 const PatchSpec& patchSpec() const noexcept { return m_spec; }
64 int audioInputs() const;
65 int audioOutputs() const;
66 bool midiInput() const;
67 bool midiOutput() const;
68
69 void setAudioInputs(int audioInputs);
70 void setAudioOutputs(int audioOutputs);
71 void setMidiInput(bool midiInput);
72 void setMidiOutput(bool midiOutput);
73
74 void scriptChanged(QString v) W_SIGNAL(scriptChanged, v);
75 void programChanged() W_SIGNAL(programChanged);
76 void audioInputsChanged(int v) W_SIGNAL(audioInputsChanged, v);
77 void audioOutputsChanged(int v) W_SIGNAL(audioOutputsChanged, v);
78 void midiInputChanged(bool v) W_SIGNAL(midiInputChanged, v);
79 void midiOutputChanged(bool v) W_SIGNAL(midiOutputChanged, v);
80
81 W_PROPERTY(
82 int, audioInputs READ audioInputs WRITE setAudioInputs NOTIFY audioInputsChanged)
83 W_PROPERTY(
84 int,
85 audioOutputs READ audioOutputs WRITE setAudioOutputs NOTIFY audioOutputsChanged)
86 W_PROPERTY(bool, midiInput READ midiInput WRITE setMidiInput NOTIFY midiInputChanged)
87 W_PROPERTY(
88 bool, midiOutput READ midiOutput WRITE setMidiOutput NOTIFY midiOutputChanged)
89
90 PROPERTY(QString, script READ script WRITE setScript NOTIFY scriptChanged)
91 std::shared_ptr<Instance> m_instance;
92
93private:
94 QString effect() const noexcept override;
95 void loadPreset(const Process::Preset& preset) override;
96 Process::Preset savePreset() const noexcept override;
97 void init();
98 QString m_script;
99 PatchSpec m_spec;
100 int m_audioInputs{0};
101 int m_audioOutputs{0};
102 bool m_midiInput{};
103 bool m_midiOutput{};
104};
105}
Definition PdProcess.hpp:37
The Process class.
Definition score-lib-process/Process/Process.hpp:61
The id_base_t class.
Definition Identifier.hpp:59
Definition PdProcess.hpp:23
Definition PdProcess.hpp:21
Definition Preset.hpp:32
Definition ScriptProcess.hpp:14
Definition TimeValue.hpp:21