30 uint32_t device_id { 0 };
56 static InputBinding midi(uint32_t device_id = 0, std::optional<uint8_t> channel = {});
62 static InputBinding osc(
const std::string& pattern =
"");
82 static InputBinding hid_by_vid_pid(uint16_t vid, uint16_t pid);
95 std::optional<uint8_t> cc_number = {},
96 std::optional<uint8_t> channel = {},
97 uint32_t device_id = 0);
104 static InputBinding midi_note_on(
105 std::optional<uint8_t> channel = {},
106 uint32_t device_id = 0);
113 static InputBinding midi_note_off(
114 std::optional<uint8_t> channel = {},
115 uint32_t device_id = 0);
122 static InputBinding midi_pitch_bend(
123 std::optional<uint8_t> channel = {},
124 uint32_t device_id = 0);
133 InputBinding& with_midi_channel(uint8_t channel);
138 InputBinding& with_midi_cc(uint8_t cc);
143 InputBinding& with_osc_pattern(
const std::string& pattern);
166 uint16_t vendor_id {};
167 uint16_t product_id {};
173 uint8_t port_number {};
181 uint32_t baud_rate {};
196 [[nodiscard]]
InputBinding to_binding_midi(std::optional<uint8_t> channel)
const;
197 [[nodiscard]]
InputBinding to_binding_osc(
const std::string& pattern)
const;
225 [[nodiscard]] uint8_t
channel()
const {
return status & 0x0F; }
226 [[nodiscard]] uint8_t
type()
const {
return status & 0xF0; }
232 using OSCArg = std::variant<int32_t, float, std::string, std::vector<uint8_t>>;
246 std::vector<uint8_t>,
256 [[nodiscard]]
double as_scalar()
const {
return std::get<double>(data); }
257 [[nodiscard]]
const std::vector<double>&
as_vector()
const {
return std::get<std::vector<double>>(data); }
258 [[nodiscard]]
const std::vector<uint8_t>&
as_bytes()
const {
return std::get<std::vector<uint8_t>>(data); }
268 static InputValue make_midi(uint8_t status, uint8_t d1, uint8_t d2, uint32_t dev_id);
270 static InputValue make_osc(std::string addr, std::vector<OSCArg> args, uint32_t dev_id);
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.)