34 bool send_cc(uint8_t channel, uint8_t cc, uint8_t value) {
37 bool send_note_on(uint8_t channel, uint8_t note, uint8_t velocity) {
47 while (
auto event = queue_.try_pop()) {
48 event->sample_offset = 0;
54 template <
typename Fn>
56 while (
auto event = queue_.try_pop())
61 static constexpr std::size_t kCapacity = 256;
Collection of timestamped MIDI events within a single audio buffer period.
Definition buffer.hpp:31
bool add(const MidiEvent &event)
Append a MIDI event to the buffer.
Definition buffer.hpp:98
Definition midi_control_bus.hpp:27
void drain(Fn &&sink)
Audio thread: drain into an arbitrary sink void(const MidiEvent&).
Definition midi_control_bus.hpp:55
bool send_cc(uint8_t channel, uint8_t cc, uint8_t value)
Convenience senders (UI thread).
Definition midi_control_bus.hpp:34
bool send(const MidiEvent &event)
UI thread: queue a MIDI event for the audio thread to emit.
Definition midi_control_bus.hpp:31
bool send_note_on(uint8_t channel, uint8_t note, uint8_t velocity)
Definition midi_control_bus.hpp:37
bool send_note_off(uint8_t channel, uint8_t note)
Definition midi_control_bus.hpp:40
void drain_into(MidiBuffer &out)
Audio thread: drain every queued event into out (sample offset 0).
Definition midi_control_bus.hpp:46
Definition spsc_queue.hpp:23
Definition custom_node_events.hpp:26
Timestamped MIDI event combining a choc::midi::ShortMessage with timing info.
Definition message.hpp:32
static MidiEvent cc(uint8_t channel, uint8_t controller, uint8_t value)
Create a Control Change event.
Definition message.hpp:64
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