ComplexSpectralDifference.hpp
1 #pragma once
2 #include <Engine/Node/SimpleApi.hpp>
3 
4 #include <Analysis/GistState.hpp>
5 
6 #include <numeric>
7 namespace Analysis
8 {
9 struct CSD
10 {
12  {
13  static const constexpr auto prettyName = "Complex Spectral Difference";
14  static const constexpr auto objectKey = "CSD";
15  static const constexpr auto category = "Analysis/Onsets";
16  static const constexpr auto author = "ossia score, Gist library";
17  static const constexpr auto kind = Process::ProcessCategory::Analyzer;
18  static const constexpr auto description
19  = "Get the complex spectral difference of a signal";
20  static const constexpr auto tags = std::array<const char*, 0>{};
21  static const uuid_constexpr auto uuid
22  = make_uuid("a542f819-e062-4f52-8c54-7e49a9bad5b8");
23 
24  static const constexpr audio_in audio_ins[]{"in"};
25  static const constexpr value_out value_outs[]{"out", "pulse"};
26  static const constexpr auto controls = tuplet::make_tuple(
27  Control::LogFloatSlider{"Gain", 0., 100., 1.},
28  Control::FloatSlider{"Gate", 0., 1., 0.});
29  };
30 
31  using State = GistState;
32  using control_policy = ossia::safe_nodes::last_tick;
33 
34  static void
35  run(const ossia::audio_port& in, float gain, float gate, ossia::value_port& out,
36  ossia::value_port& pulse, ossia::token_request tk, ossia::exec_state_facade e,
37  State& st)
38  {
39  st.process<&Gist<double>::complexSpectralDifference>(
40  in, gain, gate, out, pulse, tk, e);
41  }
42 };
43 }
Utilities for OSSIA data structures.
Definition: DeviceInterface.hpp:33
Definition: ComplexSpectralDifference.hpp:12
Definition: ComplexSpectralDifference.hpp:10
Definition: GistState.hpp:24
Definition: score-lib-process/Control/Widgets.hpp:77
Definition: SimpleApi.hpp:32