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
62
63 ~ProcessModel() override;
64
65 const PatchSpec& patchSpec() const noexcept { return m_spec; }
66 int audioInputs() const;
67 int audioOutputs() const;
68 bool midiInput() const;
69 bool midiOutput() const;
70
71 void setAudioInputs(int audioInputs);
72 void setAudioOutputs(int audioOutputs);
73 void setMidiInput(bool midiInput);
74 void setMidiOutput(bool midiOutput);
75
76 void scriptChanged(QString v) W_SIGNAL(scriptChanged, v);
77 void programChanged() W_SIGNAL(programChanged);
78 void audioInputsChanged(int v) W_SIGNAL(audioInputsChanged, v);
79 void audioOutputsChanged(int v) W_SIGNAL(audioOutputsChanged, v);
80 void midiInputChanged(bool v) W_SIGNAL(midiInputChanged, v);
81 void midiOutputChanged(bool v) W_SIGNAL(midiOutputChanged, v);
82
83 W_PROPERTY(
84 int, audioInputs READ audioInputs WRITE setAudioInputs NOTIFY audioInputsChanged)
85 W_PROPERTY(
86 int,
87 audioOutputs READ audioOutputs WRITE setAudioOutputs NOTIFY audioOutputsChanged)
88 W_PROPERTY(bool, midiInput READ midiInput WRITE setMidiInput NOTIFY midiInputChanged)
89 W_PROPERTY(
90 bool, midiOutput READ midiOutput WRITE setMidiOutput NOTIFY midiOutputChanged)
91
92 PROPERTY(QString, script READ script WRITE setScript NOTIFY scriptChanged)
93 std::shared_ptr<Instance> m_instance;
94
95private:
96 QString effect() const noexcept override;
97 void loadPreset(const Process::Preset& preset) override;
98 Process::Preset savePreset() const noexcept override;
99 void init();
100 QString m_script;
101 PatchSpec m_spec;
102 int m_audioInputs{0};
103 int m_audioOutputs{0};
104 bool m_midiInput{};
105 bool m_midiOutput{};
106};
107}
Definition PdProcess.hpp:37
void mapExternalFiles(Process::ExternalFileMap &map) override
Definition PdProcess.cpp:954
Collects — and in the same pass rewrites — the files a document references.
Definition ExternalFiles.hpp:80
The Process class.
Definition score-lib-process/Process/Process.hpp:75
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