Loading...
Searching...
No Matches
Types.hpp
1#pragma once
2#include <Engine/Node/CommonWidgets.hpp>
3
4#include <ossia/detail/pod_vector.hpp>
5#include <ossia/detail/small_vector.hpp>
6#include <ossia/detail/variant.hpp>
7#include <ossia/network/value/value.hpp>
8
9#include <halp/audio.hpp>
10#include <halp/callback.hpp>
11#include <halp/controls.hpp>
12#include <halp/meta.hpp>
13#include <halp/midi.hpp>
14#include <halp/polyfill.hpp>
15#include <halp/static_string.hpp>
16#include <libremidi/message.hpp>
17
18namespace Nodes
19{
20static constexpr auto multichannel_max_count = 8;
21using multichannel_output_vector = ossia::small_pod_vector<float, multichannel_max_count>;
22using multichannel_output_type = ossia::variant<float, multichannel_output_vector>;
23using midi_out = halp::midi_out_bus<"out", libremidi::message>;
24using value_output_callback = halp::basic_callback<void(ossia::value)>;
25using value_out = halp::callback<"out", ossia::value>;
26template <halp::static_string Str>
27using midi_spinbox = halp::spinbox_i32<Str, halp::irange{0, 127, 64}>;
28template <halp::static_string Str>
29using midi_channel = halp::spinbox_i32<Str, halp::irange{1, 16, 1}>;
30template <halp::static_string Str>
31using midi_slider = halp::hslider_i32<Str, halp::irange{0, 127, 64}>;
32template <halp::static_string Str>
33using default_slider = halp::hslider_f32<Str>;
34template <halp::static_string Str, int neg_oct, int pos_oct>
35using octave_slider
36 = halp::hslider_i32<Str, halp::irange{12 * neg_oct, 12 * pos_oct, 0}>;
37
38template <halp::static_string lit, typename T, bool event = true>
40{
41 halp_meta(is_event, event)
42 static clang_buggy_consteval auto name() { return std::string_view{lit.value}; }
43
44 T* value{};
45};
46
47template <halp::static_string lit, auto* array, int init_idx>
49{
50 static clang_buggy_consteval auto name() { return std::string_view{lit.value}; }
51 enum widget
52 {
53 combobox
54 };
55 struct range
56 {
57 decltype(Control::Widgets::notes) values = Control::Widgets::notes;
58 float init = 1. / 4.;
59 };
60 float value = 1. / 4.;
61};
62
63template <halp::static_string lit>
65
66template <halp::static_string lit>
68template <halp::static_string lit>
71}
Definition Types.hpp:56
Definition Types.hpp:49
Definition Types.hpp:40