20#include <choc/audio/choc_MIDI.h>
47 const auto status =
static_cast<uint8_t
>(0x90 | (
channel & 0x0F));
48 const auto note_byte =
static_cast<uint8_t
>(
note & 0x7F);
49 const auto velocity_byte =
static_cast<uint8_t
>(
velocity & 0x7F);
50 return {choc::midi::ShortMessage(status, note_byte, velocity_byte), 0, 0.0};
55 const auto status =
static_cast<uint8_t
>(0x80 | (
channel & 0x0F));
56 const auto note_byte =
static_cast<uint8_t
>(
note & 0x7F);
57 const auto velocity_byte =
static_cast<uint8_t
>(
velocity & 0x7F);
58 return {choc::midi::ShortMessage(status, note_byte, velocity_byte), 0, 0.0};
65 const auto status =
static_cast<uint8_t
>(0xB0 | (
channel & 0x0F));
66 const auto controller_byte =
static_cast<uint8_t
>(controller & 0x7F);
67 const auto value_byte =
static_cast<uint8_t
>(value & 0x7F);
68 return {choc::midi::ShortMessage(status, controller_byte, value_byte), 0, 0.0};
75 return {choc::midi::ShortMessage(
76 static_cast<uint8_t
>(0xE0 | (
channel & 0x0F)),
77 static_cast<uint8_t
>(value & 0x7F),
78 static_cast<uint8_t
>((value >> 7) & 0x7F)), 0, 0.0};
88 const auto status =
static_cast<uint8_t
>(0xA0 | (
channel & 0x0F));
89 const auto note_byte =
static_cast<uint8_t
>(
note & 0x7F);
90 const auto pressure_byte =
static_cast<uint8_t
>(pressure & 0x7F);
91 return {choc::midi::ShortMessage(status, note_byte, pressure_byte), 0, 0.0};
96 const auto status =
static_cast<uint8_t
>(0xC0 | (
channel & 0x0F));
97 const auto program_byte =
static_cast<uint8_t
>(program & 0x7F);
98 return {choc::midi::ShortMessage(status, program_byte, 0), 0, 0.0};
Definition custom_node_events.hpp:26
Timestamped MIDI event combining a choc::midi::ShortMessage with timing info.
Definition message.hpp:32
uint8_t cc_value() const
Definition message.hpp:115
uint8_t note() const
Definition message.hpp:112
bool is_pitch_bend() const
Definition message.hpp:104
static MidiEvent cc(uint8_t channel, uint8_t controller, uint8_t value)
Create a Control Change event.
Definition message.hpp:64
bool is_program_change() const
Definition message.hpp:105
uint8_t cc_number() const
Definition message.hpp:114
static MidiEvent program_change(uint8_t channel, uint8_t program)
Create a Program Change event.
Definition message.hpp:95
const uint8_t * data() const
Raw MIDI byte data (for format adapters that need direct byte access).
Definition message.hpp:38
static MidiEvent poly_pressure(uint8_t channel, uint8_t note, uint8_t pressure)
Create a Polyphonic Key Pressure (poly aftertouch) event.
Definition message.hpp:87
bool is_cc() const
Definition message.hpp:103
bool is_note_on() const
Definition message.hpp:101
uint32_t size() const
Number of bytes in the MIDI message (1-3).
Definition message.hpp:40
uint8_t channel() const
MIDI channel (0-15).
Definition message.hpp:111
choc::midi::ShortMessage message
Definition message.hpp:33
double timestamp
Absolute time in seconds (for device I/O).
Definition message.hpp:35
static MidiEvent note_on(uint8_t channel, uint8_t note, uint8_t velocity)
Create a Note On event.
Definition message.hpp:46
static MidiEvent note_off(uint8_t channel, uint8_t note, uint8_t velocity=0)
Create a Note Off event.
Definition message.hpp:54
int32_t sample_offset
Sample position within the current buffer block.
Definition message.hpp:34
bool is_poly_pressure() const
Definition message.hpp:106
uint8_t velocity() const
Definition message.hpp:113
bool is_note_off() const
Definition message.hpp:102
static MidiEvent pitch_bend(uint8_t channel, uint16_t value)
Create a Pitch Bend event.
Definition message.hpp:73