13 :
virtual public component<Device, Controller>
19 explicit midi_in(Controller* ctrlr)
20 : m_input{{.on_message{[
this, ctrlr]
21 (
const libremidi::message& message)
25#define case_msg_type(C) \
27 if constexpr(has_buttons<Device>) \
28 if constexpr (is_##C<typename Device::buttons>) \
30 this->btn_prsr.button_presser::set_midi(message.bytes[2]); \
31 if (buttons_t::on_button_received(ctrlr, message.bytes[1])) \
35 if constexpr (has_grid<Device>) \
36 if constexpr (is_##C<typename Device::grid>) \
38 this->prsr.button_presser::set_midi(message.bytes[2]); \
39 if (grid_t::on_grid_received(ctrlr, message.bytes[1])) \
46 using enum libremidi::message_type;
48 switch (message.get_message_type())
59 .ignore_sysex =
false,
60 .ignore_timing =
false,
61 .ignore_sensing =
false,
66 ~midi_in()
override { m_input.close_port(); }
68 libremidi::midi_in m_input;
Inherits from all type of hardware components like grid, buttons... Provides the hardware type with t...
Definition component.hpp:14