5#ifndef SBL_PROTOCOL_MIDI_TYPES_HPP_
6#define SBL_PROTOCOL_MIDI_TYPES_HPP_
64 return static_cast<int16_t
>((
static_cast<uint16_t
>(
data2) << 7) |
data1) - 8192;
69 return (
static_cast<uint16_t
>(
data2) << 7) |
data1;
81 out[0] = 0x90 | (
channel & 0x0F);
82 out[1] =
data1 & 0x7F;
83 out[2] =
data2 & 0x7F;
86 out[0] = 0x80 | (
channel & 0x0F);
87 out[1] =
data1 & 0x7F;
88 out[2] =
data2 & 0x7F;
91 out[0] = 0xB0 | (
channel & 0x0F);
92 out[1] =
data1 & 0x7F;
93 out[2] =
data2 & 0x7F;
96 out[0] = 0xE0 | (
channel & 0x0F);
97 out[1] =
data1 & 0x7F;
98 out[2] =
data2 & 0x7F;
101 out[0] = 0xA0 | (
channel & 0x0F);
102 out[1] =
data1 & 0x7F;
103 out[2] =
data2 & 0x7F;
108 out[0] = 0xC0 | (
channel & 0x0F);
109 out[1] =
data1 & 0x7F;
112 out[0] = 0xD0 | (
channel & 0x0F);
113 out[1] =
data1 & 0x7F;
127 out[1] =
data1 & 0x7F;
128 out[2] =
data2 & 0x7F;
132 out[1] =
data1 & 0x7F;
149 switch (status & 0xF0) {
MIDI parser, encoder, SMF and sequencer.
uint8_t expected_data_bytes(uint8_t status)
Number of data bytes expected for a channel message status byte.
void(*)(const MidiEvent &event) MidiCallback
Callback type for parsed MIDI events.
uint8_t cc_value() const
CC value (alias for data2)
int16_t pitch_bend_value() const
14-bit pitch bend value, centered at 8192
uint8_t cc_number() const
CC number (alias for data1)
uint8_t data2
Velocity, CC value, etc.
uint16_t pitch_bend_raw() const
Raw 14-bit pitch bend (0-16383)
uint8_t note() const
Note number (alias for data1)
uint8_t channel
0-15 for channel messages, 0 for system
uint8_t to_bytes(uint8_t *out) const
Encode this event as raw MIDI bytes.
uint8_t data1
Note number, CC number, program, etc.
uint8_t velocity() const
Velocity (alias for data2)