BuGUI
BUtton Grid User Interface
Loading...
Searching...
No Matches
midi.hpp
1#pragma once
2#include "midi_common.hpp"
3#include "midi_formater.hpp"
4#include <bugui/concepts/device.hpp>
5#include <bugui/concepts/protocol.hpp>
6
7namespace bugui
8{
10template <typename Component>
11class midi { };
12
14template <midi_component Component>
15class midi<Component>
16 : virtual protected midi_common
17{
18 midi_formater<Component> formater{};
19
20protected:
21 void send(std::function
22 <void(midi_formater<Component>&)>&& func)
23 {
24 func(formater);
25
26 if constexpr(has_dual_blink<Component>
28 {
29 if (formater.has_message())
30 {
32 formater.add(std::to_underlying
33 (libremidi::message_type::EOX));
34
35 this->m_output.send_message(formater.get());
36 }
37 }
38 else
39 {
41 formater.add(std::to_underlying
42 (libremidi::message_type::EOX));
43
44 this->m_output.send_message(formater.get());
45 }
46
47 if constexpr(has_dual_blink<Component>)
48 if (formater.has_blink_message())
49 {
51 formater.add_blink(std::to_underlying
52 (libremidi::message_type::EOX));
53
54 this->m_output.send_message(formater.get_blink());
55 }
56
57 if constexpr(has_dual_pulse<Component>)
58 if (formater.has_pulse_message())
59 {
61 formater.add_pulse(std::to_underlying
62 (libremidi::message_type::EOX));
63
64 this->m_output.send_message(formater.get_pulse());
65 }
66
67 formater.clear();
68 };
69
70 void on_message_received
71 (std::function<bool(uint8_t, uint8_t)>&& func)
72 {
74 this->cc_functions.emplace_back
75 (std::forward<std::function
76 <bool(uint8_t, uint8_t)>>(func));
77 else if constexpr (is_on_off_in_component<Component>)
78 this->on_off_functions.emplace_back
79 (std::forward<std::function
80 <bool(uint8_t, uint8_t)>>(func));
81 }
82};
83
84} // namespace bugui
Empty struct for devices that do not support MIDI.
Definition midi.hpp:11
Definition color.hpp:38
Definition midi_message.hpp:76
Definition midi_message.hpp:80
Definition midi_message.hpp:120
Empty enum for devices that do not feature anny blinking or pulsing functionalities.
Definition midi_formater.hpp:109