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

Fixed-capacity cyclic resynthesis for realtime sample playback. More...

#include <sample_heritage_live_cyclic.hpp>

Public Member Functions

 SampleHeritageLiveCyclicStretch ()=default
 SampleHeritageLiveCyclicStretch (const SampleHeritageLiveCyclicStretch &)=delete
SampleHeritageLiveCyclicStretch & operator= (const SampleHeritageLiveCyclicStretch &)=delete
 SampleHeritageLiveCyclicStretch (SampleHeritageLiveCyclicStretch &&)=delete
SampleHeritageLiveCyclicStretch & operator= (SampleHeritageLiveCyclicStretch &&)=delete
SampleHeritageLiveCyclicStatus prepare (const SampleHeritageLiveCyclicConfig &config) noexcept
void release () noexcept
void reset () noexcept
void reset_with_rng_continuation (SampleHeritageLiveCyclicRngContinuation continuation) noexcept
bool prepared () const noexcept
bool exact_bypass () const noexcept
double source_frames_per_output_frame () const noexcept
std::size_t startup_prebuffer_frames () const noexcept
const SampleHeritageLiveCyclicResources & resources () const noexcept
SampleHeritageLiveCyclicPlan plan (std::size_t output_frames) const noexcept
SampleHeritageLiveCyclicStatus process (BufferView< const float > input, BufferView< float > output) noexcept
SampleHeritageLiveCyclicStatus process (BufferView< const float > input, BufferView< float > output, std::size_t valid_input_frames, bool end_of_source) noexcept
std::size_t last_valid_output_frames () const noexcept
std::uint64_t remaining_output_frames () const noexcept
bool division_permutation (std::uint64_t cycle_index, std::size_t channel, std::span< std::uint32_t > destination) const noexcept
SampleHeritageLiveCyclicRngContinuation capture_next_cycle_rng_continuation () const noexcept

Static Public Member Functions

static SampleHeritageLiveCyclicResources resources_for (const SampleHeritageLiveCyclicConfig &config) noexcept

Static Public Attributes

static constexpr std::size_t kInterpolatorGuardFrames = 2

Detailed Description

Fixed-capacity cyclic resynthesis for realtime sample playback.

The caller supplies exactly plan().input_frames new source frames, in source order, for each output block. The processor consumes 1/factor source frames per output frame over time and retains the bounded neighborhood needed by its cyclic reads. prepare() is the only allocating operation.

Constructor & Destructor Documentation

◆ SampleHeritageLiveCyclicStretch() [1/3]

pulp::audio::SampleHeritageLiveCyclicStretch::SampleHeritageLiveCyclicStretch ( )
default

◆ SampleHeritageLiveCyclicStretch() [2/3]

pulp::audio::SampleHeritageLiveCyclicStretch::SampleHeritageLiveCyclicStretch ( const SampleHeritageLiveCyclicStretch & )
delete

◆ SampleHeritageLiveCyclicStretch() [3/3]

pulp::audio::SampleHeritageLiveCyclicStretch::SampleHeritageLiveCyclicStretch ( SampleHeritageLiveCyclicStretch && )
delete

Member Function Documentation

◆ capture_next_cycle_rng_continuation()

SampleHeritageLiveCyclicRngContinuation pulp::audio::SampleHeritageLiveCyclicStretch::capture_next_cycle_rng_continuation ( ) const
noexcept

◆ division_permutation()

bool pulp::audio::SampleHeritageLiveCyclicStretch::division_permutation ( std::uint64_t cycle_index,
std::size_t channel,
std::span< std::uint32_t > destination ) const
noexcept

◆ exact_bypass()

bool pulp::audio::SampleHeritageLiveCyclicStretch::exact_bypass ( ) const
inlinenoexcept

◆ last_valid_output_frames()

std::size_t pulp::audio::SampleHeritageLiveCyclicStretch::last_valid_output_frames ( ) const
inlinenoexcept

◆ operator=() [1/2]

SampleHeritageLiveCyclicStretch & pulp::audio::SampleHeritageLiveCyclicStretch::operator= ( const SampleHeritageLiveCyclicStretch & )
delete

◆ operator=() [2/2]

SampleHeritageLiveCyclicStretch & pulp::audio::SampleHeritageLiveCyclicStretch::operator= ( SampleHeritageLiveCyclicStretch && )
delete

◆ plan()

SampleHeritageLiveCyclicPlan pulp::audio::SampleHeritageLiveCyclicStretch::plan ( std::size_t output_frames) const
noexcept

◆ prepare()

SampleHeritageLiveCyclicStatus pulp::audio::SampleHeritageLiveCyclicStretch::prepare ( const SampleHeritageLiveCyclicConfig & config)
noexcept

◆ prepared()

bool pulp::audio::SampleHeritageLiveCyclicStretch::prepared ( ) const
inlinenoexcept

◆ process() [1/2]

SampleHeritageLiveCyclicStatus pulp::audio::SampleHeritageLiveCyclicStretch::process ( BufferView< const float > input,
BufferView< float > output )
noexcept

◆ process() [2/2]

SampleHeritageLiveCyclicStatus pulp::audio::SampleHeritageLiveCyclicStretch::process ( BufferView< const float > input,
BufferView< float > output,
std::size_t valid_input_frames,
bool end_of_source )
noexcept

◆ release()

void pulp::audio::SampleHeritageLiveCyclicStretch::release ( )
noexcept

◆ remaining_output_frames()

std::uint64_t pulp::audio::SampleHeritageLiveCyclicStretch::remaining_output_frames ( ) const
inlinenoexcept

◆ reset()

void pulp::audio::SampleHeritageLiveCyclicStretch::reset ( )
noexcept

◆ reset_with_rng_continuation()

void pulp::audio::SampleHeritageLiveCyclicStretch::reset_with_rng_continuation ( SampleHeritageLiveCyclicRngContinuation continuation)
noexcept

◆ resources()

const SampleHeritageLiveCyclicResources & pulp::audio::SampleHeritageLiveCyclicStretch::resources ( ) const
inlinenoexcept

◆ resources_for()

SampleHeritageLiveCyclicResources pulp::audio::SampleHeritageLiveCyclicStretch::resources_for ( const SampleHeritageLiveCyclicConfig & config)
staticnoexcept

◆ source_frames_per_output_frame()

double pulp::audio::SampleHeritageLiveCyclicStretch::source_frames_per_output_frame ( ) const
inlinenoexcept

◆ startup_prebuffer_frames()

std::size_t pulp::audio::SampleHeritageLiveCyclicStretch::startup_prebuffer_frames ( ) const
inlinenoexcept

Member Data Documentation

◆ kInterpolatorGuardFrames

std::size_t pulp::audio::SampleHeritageLiveCyclicStretch::kInterpolatorGuardFrames = 2
staticconstexpr

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