Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::midi::UmpBuffer Class Reference

A time-ordered list of UMP events for one audio block. More...

#include <ump_buffer.hpp>

Public Member Functions

 UmpBuffer ()
 UmpBuffer (const UmpBuffer &other)
UmpBuffer & operator= (const UmpBuffer &other)
 UmpBuffer (UmpBuffer &&) noexcept=default
UmpBuffer & operator= (UmpBuffer &&) noexcept=default
bool add (const UmpEvent &e)
bool add (UmpEvent &&e)
bool add (const UmpPacket &p, int32_t sample_offset=0)
void clear ()
bool empty () const
std::size_t size () const
std::size_t capacity () const
std::uint32_t dropped_event_count () const
void reserve (std::size_t capacity)
void set_realtime_capacity_limit (bool enabled=true)
bool realtime_capacity_limited () const
void sort ()
 Sort by sample offset, preserving arrival order for equal offsets.
auto begin ()
auto end ()
auto begin () const
auto end () const
const UmpEvent & operator[] (std::size_t i) const

Detailed Description

A time-ordered list of UMP events for one audio block.

Ownership and lifetime mirror MidiBuffer/MpeBuffer: the format adapter owns the buffer, fills it before process(), passes a pointer to the processor, and clears it afterwards. Not thread-safe.

Realtime contract: reserve() storage and enable set_realtime_capacity_limit(true) before using add() on the audio thread. With the limit enabled, add() drops and counts overflow instead of growing the backing vector. Without that preparation, append operations may allocate and belong on a non-realtime path.

Constructor & Destructor Documentation

◆ UmpBuffer() [1/3]

pulp::midi::UmpBuffer::UmpBuffer ( )
inline

◆ UmpBuffer() [2/3]

pulp::midi::UmpBuffer::UmpBuffer ( const UmpBuffer & other)
inline

◆ UmpBuffer() [3/3]

pulp::midi::UmpBuffer::UmpBuffer ( UmpBuffer && )
defaultnoexcept

Member Function Documentation

◆ add() [1/3]

bool pulp::midi::UmpBuffer::add ( const UmpEvent & e)
inline

◆ add() [2/3]

bool pulp::midi::UmpBuffer::add ( const UmpPacket & p,
int32_t sample_offset = 0 )
inline

◆ add() [3/3]

bool pulp::midi::UmpBuffer::add ( UmpEvent && e)
inline

◆ begin() [1/2]

auto pulp::midi::UmpBuffer::begin ( )
inline

◆ begin() [2/2]

auto pulp::midi::UmpBuffer::begin ( ) const
inline

◆ capacity()

std::size_t pulp::midi::UmpBuffer::capacity ( ) const
inline

◆ clear()

void pulp::midi::UmpBuffer::clear ( )
inline

◆ dropped_event_count()

std::uint32_t pulp::midi::UmpBuffer::dropped_event_count ( ) const
inline

◆ empty()

bool pulp::midi::UmpBuffer::empty ( ) const
inline

◆ end() [1/2]

auto pulp::midi::UmpBuffer::end ( )
inline

◆ end() [2/2]

auto pulp::midi::UmpBuffer::end ( ) const
inline

◆ operator=() [1/2]

UmpBuffer & pulp::midi::UmpBuffer::operator= ( const UmpBuffer & other)
inline

◆ operator=() [2/2]

UmpBuffer & pulp::midi::UmpBuffer::operator= ( UmpBuffer && )
defaultnoexcept

◆ operator[]()

const UmpEvent & pulp::midi::UmpBuffer::operator[] ( std::size_t i) const
inline

◆ realtime_capacity_limited()

bool pulp::midi::UmpBuffer::realtime_capacity_limited ( ) const
inline

◆ reserve()

void pulp::midi::UmpBuffer::reserve ( std::size_t capacity)
inline

◆ set_realtime_capacity_limit()

void pulp::midi::UmpBuffer::set_realtime_capacity_limit ( bool enabled = true)
inline

◆ size()

std::size_t pulp::midi::UmpBuffer::size ( ) const
inline

◆ sort()

void pulp::midi::UmpBuffer::sort ( )
inline

Sort by sample offset, preserving arrival order for equal offsets.

Scratch storage is prepared by reserve(); sorting a prepared buffer does not allocate. As with add(), unreserved growth is non-realtime.


The documentation for this class was generated from the following file:
  • /home/runner/work/pulp/pulp/core/midi/include/pulp/midi/ump_buffer.hpp