39using SysexSink = std::function<void(
const uint8_t* data, std::size_t size)>;
54 void feed(
const uint8_t* data, std::size_t size);
61 static int expected_data_bytes(uint8_t status);
62 void emit_short(uint8_t status, uint8_t d1, uint8_t d2);
64 uint8_t running_status_ = 0;
65 uint8_t current_system_common_ = 0;
66 uint8_t data_[2] = {0, 0};
68 int data_expected_ = 0;
69 bool in_sysex_ =
false;
70 std::vector<uint8_t> sysex_buf_;
void on_sysex(SysexSink sink)
Definition running_status.hpp:46
void on_short_message(ShortMessageSink sink)
Definition running_status.hpp:45
void reset()
Reset the parser — clears running status + any in-flight sysex.
void feed(const uint8_t *data, std::size_t size)
Feed a byte stream.
void reserve_sysex(std::size_t worst_case_body_bytes)
Prepare internal SysEx body storage for realtime use.
RunningStatusParser()=default
Definition custom_node_events.hpp:26
std::function< void(const MidiEvent &)> ShortMessageSink
Callback invoked for each complete short message.
Definition running_status.hpp:38
std::function< void(const uint8_t *data, std::size_t size)> SysexSink
Definition running_status.hpp:39
Timestamped MIDI event combining a choc::midi::ShortMessage with timing info.
Definition message.hpp:32