Loading...
Searching...
No Matches

Detailed Description

Whole system-exclusive messages for a plug-in host to hand a plug-in.

A MIDI port carries a system-exclusive message as the SysEx7 packets it is made of. A VST, VST3 or CLAP plug-in takes it as one event that points at the whole F0 ... F7 message, and may read it until its process call returns. feed() joins the packets of one input port (one stream per port, which keeps a message whose packets span two ticks) and copies each whole message into storage the node owns: nothing is allocated on the audio thread. The host calls clear() once per process call, before it makes the events of the next one.

Between two clear(), up to capacity bytes of messages are held, each of up to max_message bytes, F0 and F7 included. A message past either limit is not delivered and dropped() counts it.

Public Types

using stream = libremidi::ump_to_midi1_stream< max_message >
 

Public Member Functions

std::span< const uint8_t > feed (stream &s, const libremidi::ump &packet) noexcept
 
void clear () noexcept
 
std::size_t dropped () const noexcept
 

Static Public Member Functions

static bool isSysex (const libremidi::ump &packet) noexcept
 

Static Public Attributes

static constexpr std::size_t max_message = 4096
 
static constexpr std::size_t capacity = 16384
 

Member Function Documentation

◆ feed()

std::span< const uint8_t > Process::MidiSysexArena::feed ( stream &  s,
const libremidi::ump &  packet 
)
inlinenoexcept

The whole message packet ends, held until clear(). Empty when it ends none, or when it is not a SysEx7 packet.


The documentation for this class was generated from the following file: