TempoProcess.hpp
1 #pragma once
2 #include <Process/ProcessMetadata.hpp>
3 
4 #include <Curve/Process/CurveProcessModel.hpp>
5 
6 namespace Scenario
7 {
8 class TempoProcess;
9 }
10 
11 PROCESS_METADATA(
12  , Scenario::TempoProcess, "14bcc6d2-cb34-4bc6-8c70-e512f11d1ceb", "Tempo", "Tempo",
13  Process::ProcessCategory::Automation, "Automations",
14  "Tempo curve - only one per interval", "ossia score",
15  (QStringList{"Curve", "Automation"}), {}, {},
16  Process::ProcessFlags::SupportsTemporal)
17 
18 namespace Scenario
19 {
20 class TempoProcess final : public Curve::CurveProcessModel
21 {
22  SCORE_SERIALIZE_FRIENDS
23  PROCESS_METADATA_IMPL(Scenario::TempoProcess)
24 
25  W_OBJECT(TempoProcess)
26 
27 public:
28  static constexpr double min = 20.;
29  static constexpr double max = 500.;
30 
31  std::unique_ptr<Process::Inlet> tempo_inlet;
32  std::unique_ptr<Process::Inlet> speed_inlet;
33  std::unique_ptr<Process::Inlet> position_inlet;
34 
35  TempoProcess(
36  const TimeVal& duration, const Id<Process::ProcessModel>& id, QObject* parent);
37  ~TempoProcess() override;
38  void init();
39 
40  template <typename Impl>
41  TempoProcess(Impl& vis, QObject* parent)
42  : CurveProcessModel{vis, parent}
43  {
44  vis.writeTo(*this);
45  init();
46  }
47 
48  QString prettyName() const noexcept override;
49  QString prettyValue(double x, double y) const noexcept override;
50 
51 private:
53  void setDurationAndScale(const TimeVal& newDuration) noexcept override;
54  void setDurationAndGrow(const TimeVal& newDuration) noexcept override;
55  void setDurationAndShrink(const TimeVal& newDuration) noexcept override;
56 
57  void setCurve_impl() override;
58 };
59 }
Definition: CurveProcessModel.hpp:11
The id_base_t class.
Definition: Identifier.hpp:57
Main plug-in of score.
Definition: score-plugin-dataflow/Dataflow/PortItem.hpp:14
Definition: TimeValue.hpp:21