ClassicalBeat.hpp
1 #pragma once
2 #include <Engine/Node/SimpleApi.hpp>
3 namespace Nodes
4 {
5 namespace ClassicalBeat
6 {
7 struct Node
8 {
10  {
11  static const constexpr auto prettyName = "Beat Metronome";
12  static const constexpr auto objectKey = "ImpulseMetronome";
13  static const constexpr auto category = "Control/Generators";
14  static const constexpr auto author = "ossia score";
15  static const constexpr auto kind = Process::ProcessCategory::Generator;
16  static const constexpr auto description
17  = "A simple metronome - outputs a bang on the current tick";
18  static const constexpr auto tags = std::array<const char*, 0>{};
19  static const uuid_constexpr auto uuid
20  = make_uuid("1c185139-04f9-492f-8b4a-000dd4428990");
21 
22  static const constexpr value_out value_outs[]{"out"};
23  };
24 
25  using control_policy = ossia::safe_nodes::last_tick;
26  static void
27  run(ossia::value_port& res, ossia::token_request tk, ossia::exec_state_facade st)
28  {
29  using namespace ossia;
30  if(tk.forward())
31  {
32  tk.metronome(
33  st.modelToSamples(),
34  [&](int64_t start_sample) { res.write_value(ossia::impulse{}, start_sample); },
35  [&](int64_t start_sample) {
36  res.write_value(ossia::impulse{}, start_sample);
37  });
38  }
39  }
40 };
41 }
42 }
Definition: SimpleApi.hpp:32
Definition: ClassicalBeat.hpp:10
Definition: ClassicalBeat.hpp:8