24 .osc_address_pattern = pattern.empty() ? std::nullopt : std::optional(pattern)
44 std::optional<uint8_t> cc_number,
52 .midi_message_type = 0xB0,
53 .midi_cc_number = cc_number
65 .midi_message_type = 0x90
77 .midi_message_type = 0x80
89 .midi_message_type = 0xE0
117 if (index >= arguments.size())
119 return std::visit([](
const auto& v) -> std::optional<float> {
120 using T = std::decay_t<
decltype(v)>;
121 if constexpr (std::is_same_v<T, float>)
123 if constexpr (std::is_same_v<T, int32_t>)
124 return static_cast<float>(v);
132 if (index >= arguments.size())
134 return std::visit([](
const auto& v) -> std::optional<int32_t> {
135 using T = std::decay_t<
decltype(v)>;
136 if constexpr (std::is_same_v<T, int32_t>)
138 if constexpr (std::is_same_v<T, float>)
139 return static_cast<int32_t
>(v);
147 if (index >= arguments.size())
149 return std::visit([](
const auto& v) -> std::optional<std::string> {
150 using T = std::decay_t<
decltype(v)>;
151 if constexpr (std::is_same_v<T, std::string>)
160 if (index >= arguments.size())
162 return std::visit([](
const auto& v) -> std::optional<std::vector<uint8_t>> {
163 using T = std::decay_t<
decltype(v)>;
164 if constexpr (std::is_same_v<T, std::vector<uint8_t>>)
197 .osc_address_pattern = pattern.empty() ? std::nullopt : std::optional(pattern)
206 .timestamp_ns =
static_cast<uint64_t
>(
207 std::chrono::steady_clock::now().time_since_epoch().count()),
217 .data = std::move(v),
218 .timestamp_ns =
static_cast<uint64_t
>(
219 std::chrono::steady_clock::now().time_since_epoch().count()),
229 .data = std::move(v),
230 .timestamp_ns =
static_cast<uint64_t
>(
231 std::chrono::steady_clock::now().time_since_epoch().count()),
242 .timestamp_ns =
static_cast<uint64_t
>(
243 std::chrono::steady_clock::now().time_since_epoch().count()),
254 .timestamp_ns =
static_cast<uint64_t
>(
255 std::chrono::steady_clock::now().time_since_epoch().count()),
265 return std::get<double>(
data);
272 return &std::get<std::vector<double>>(
data);
279 return &std::get<std::vector<uint8_t>>(
data);
286 return &std::get<MIDIMessage>(
data);
293 return &std::get<OSCMessage>(
data);
InputType
Input backend type enumeration.
@ OSC
Open Sound Control (network)
@ HID
Generic HID devices (game controllers, custom hardware)
@ MIDI
MIDI controllers and instruments.
@ SERIAL
Serial port communication (Arduino, etc.)