Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::playback::CompensatedReadPlan Struct Reference

How a compensated read window resolves against an enabled loop. More...

#include <event_compensation.hpp>

Public Attributes

std::array< CompensatedReadSegment, 2 > segments {}
std::uint8_t segment_count = 0
bool wraps_inside_range = false
 True when the loop point falls INSIDE this window.

Detailed Description

How a compensated read window resolves against an enabled loop.

Reading ahead near a loop end wants the content from AFTER the wrap. An event at document position loop_end + n never sounds in this pass, while the one at loop_start + n is exactly what is heard when the window's frames reach the device a shift later. The window is therefore folded back around the loop point rather than read past it, which splits it into at most two runs — at most, because the transport refuses a loop shorter than one maximum block, so a window spans the loop point once and never twice.

Member Data Documentation

◆ segment_count

std::uint8_t pulp::playback::CompensatedReadPlan::segment_count = 0

◆ segments

std::array<CompensatedReadSegment, 2> pulp::playback::CompensatedReadPlan::segments {}

◆ wraps_inside_range

bool pulp::playback::CompensatedReadPlan::wraps_inside_range = false

True when the loop point falls INSIDE this window.

The event stream wraps there, ahead of the transport's own wrap, so whatever the earlier pass left sounding is released at segments[1].range_offset and the transport's later discontinuity must not release it a second time.


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