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

Allocation-free paged adapter for LoopPlaybackCursor. More...

#include <sample_stream_loop_voice_reader.hpp>

Public Member Functions

bool prepare (const SampleAssetView &asset, SampleStreamRequesterToken requester, const LoopRegion &region, double playback_rate) noexcept
bool prepare (const SampleAssetView &asset, SampleStreamRequesterToken requester, const LoopRegion &region, double playback_rate, SampleInterpolationPolicy interpolation) noexcept
bool prepare (const SampleAssetView &asset, SampleStreamRequesterToken requester, const LoopRegion &region, double playback_rate, const PreparedSampleInterpolation &interpolation, SampleStarvationEnvelopeConfig starvation=kDefaultSampleStarvationEnvelopeConfig) noexcept
void reset () noexcept
bool set_playback_rate (double playback_rate) noexcept
bool set_playback_rate (const SampleAssetView &asset, double playback_rate) noexcept
bool set_interpolation (const SampleAssetView &asset, const PreparedSampleInterpolation &interpolation) noexcept
const LoopPlaybackCursor & cursor () const noexcept
const PreparedSampleInterpolation & interpolation () const noexcept
bool active () const noexcept
SampleStarvationMode starvation_mode () const noexcept
SampleStarvationEnvelopeStats starvation_stats () const noexcept
void mark_held_starvation (std::uint64_t frames) noexcept
 Records an externally held all-silent block without advancing the cursor.
bool synchronize_cursor (const SampleAssetView &asset, const LoopPlaybackCursor &cursor) noexcept
SampleStreamLoopBlockPlan plan_block (const SampleAssetView &asset, std::uint32_t output_frames, double output_sample_rate, SampleStreamDemandClass demand_class=SampleStreamDemandClass::Sustain) const noexcept
SampleStreamLoopBlockPlan plan_block (const SampleAssetView &asset, std::uint32_t output_frames, double output_sample_rate, SampleStreamConsumptionDeclaration consumption, SampleStreamDemandClass demand_class=SampleStreamDemandClass::Sustain) const noexcept
template<std::size_t InboxCapacity>
SampleStreamVoiceDemandEnqueueResult enqueue_demands (const SampleStreamLoopBlockPlan &plan, SampleStreamCommandInbox< InboxCapacity > &inbox, std::uint32_t start_index=0, std::uint64_t resident_source_frame_offset=0, std::uint32_t end_index=std::numeric_limits< std::uint32_t >::max()) const noexcept
bool commit_planned_timeline (const SampleAssetView &asset, const SampleStreamLoopBlockPlan &plan) noexcept
SampleStreamVoiceBlockResult render_block (const SampleAssetView &asset, const SampleStreamLoopBlockPlan &plan, BufferView< float > destination) noexcept

Detailed Description

Allocation-free paged adapter for LoopPlaybackCursor.

Planning snapshots all pages needed by primary, interpolation, and wrap-crossfade reads; rendering then replays the same cursor state and advances the musical timeline even when a page is missing.

Member Function Documentation

◆ active()

bool pulp::audio::SampleStreamLoopVoiceReader::active ( ) const
inlinenoexcept

◆ commit_planned_timeline()

bool pulp::audio::SampleStreamLoopVoiceReader::commit_planned_timeline ( const SampleAssetView & asset,
const SampleStreamLoopBlockPlan & plan )
inlinenoexcept

◆ cursor()

const LoopPlaybackCursor & pulp::audio::SampleStreamLoopVoiceReader::cursor ( ) const
inlinenoexcept

◆ enqueue_demands()

template<std::size_t InboxCapacity>
SampleStreamVoiceDemandEnqueueResult pulp::audio::SampleStreamLoopVoiceReader::enqueue_demands ( const SampleStreamLoopBlockPlan & plan,
SampleStreamCommandInbox< InboxCapacity > & inbox,
std::uint32_t start_index = 0,
std::uint64_t resident_source_frame_offset = 0,
std::uint32_t end_index = std::numeric_limits<std::uint32_t>::max() ) const
inlinenoexcept

◆ interpolation()

const PreparedSampleInterpolation & pulp::audio::SampleStreamLoopVoiceReader::interpolation ( ) const
inlinenoexcept

◆ mark_held_starvation()

void pulp::audio::SampleStreamLoopVoiceReader::mark_held_starvation ( std::uint64_t frames)
inlinenoexcept

Records an externally held all-silent block without advancing the cursor.

Recovery is click-gated by the reader's prepared envelope when valid pages become available again.

◆ plan_block() [1/2]

SampleStreamLoopBlockPlan pulp::audio::SampleStreamLoopVoiceReader::plan_block ( const SampleAssetView & asset,
std::uint32_t output_frames,
double output_sample_rate,
SampleStreamConsumptionDeclaration consumption,
SampleStreamDemandClass demand_class = SampleStreamDemandClass::Sustain ) const
inlinenoexcept

◆ plan_block() [2/2]

SampleStreamLoopBlockPlan pulp::audio::SampleStreamLoopVoiceReader::plan_block ( const SampleAssetView & asset,
std::uint32_t output_frames,
double output_sample_rate,
SampleStreamDemandClass demand_class = SampleStreamDemandClass::Sustain ) const
inlinenoexcept

◆ prepare() [1/3]

bool pulp::audio::SampleStreamLoopVoiceReader::prepare ( const SampleAssetView & asset,
SampleStreamRequesterToken requester,
const LoopRegion & region,
double playback_rate )
inlinenoexcept

◆ prepare() [2/3]

bool pulp::audio::SampleStreamLoopVoiceReader::prepare ( const SampleAssetView & asset,
SampleStreamRequesterToken requester,
const LoopRegion & region,
double playback_rate,
const PreparedSampleInterpolation & interpolation,
SampleStarvationEnvelopeConfig starvation = kDefaultSampleStarvationEnvelopeConfig )
inlinenoexcept

◆ prepare() [3/3]

bool pulp::audio::SampleStreamLoopVoiceReader::prepare ( const SampleAssetView & asset,
SampleStreamRequesterToken requester,
const LoopRegion & region,
double playback_rate,
SampleInterpolationPolicy interpolation )
inlinenoexcept

◆ render_block()

SampleStreamVoiceBlockResult pulp::audio::SampleStreamLoopVoiceReader::render_block ( const SampleAssetView & asset,
const SampleStreamLoopBlockPlan & plan,
BufferView< float > destination )
inlinenoexcept

◆ reset()

void pulp::audio::SampleStreamLoopVoiceReader::reset ( )
inlinenoexcept

◆ set_interpolation()

bool pulp::audio::SampleStreamLoopVoiceReader::set_interpolation ( const SampleAssetView & asset,
const PreparedSampleInterpolation & interpolation )
inlinenoexcept

◆ set_playback_rate() [1/2]

bool pulp::audio::SampleStreamLoopVoiceReader::set_playback_rate ( const SampleAssetView & asset,
double playback_rate )
inlinenoexcept

◆ set_playback_rate() [2/2]

bool pulp::audio::SampleStreamLoopVoiceReader::set_playback_rate ( double playback_rate)
inlinenoexcept

◆ starvation_mode()

SampleStarvationMode pulp::audio::SampleStreamLoopVoiceReader::starvation_mode ( ) const
inlinenoexcept

◆ starvation_stats()

SampleStarvationEnvelopeStats pulp::audio::SampleStreamLoopVoiceReader::starvation_stats ( ) const
inlinenoexcept

◆ synchronize_cursor()

bool pulp::audio::SampleStreamLoopVoiceReader::synchronize_cursor ( const SampleAssetView & asset,
const LoopPlaybackCursor & cursor )
inlinenoexcept

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