Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::signal::ReverseBufferT< SampleType > Class Template Reference

A mono streaming reverse-window processor. More...

#include <reverse_buffer.hpp>

Classes

struct  Config

Public Member Functions

bool prepare (std::size_t maximum_window_samples)
bool configure (Config replacement) noexcept
 Publishes the complete transport configuration.
Config config () const noexcept
bool prepared () const noexcept
std::size_t maximum_window_samples () const noexcept
std::size_t retained_bytes () const noexcept
int latency_samples () const noexcept
int startup_latency_samples () const noexcept
int tail_samples () const noexcept
ReverseBufferState state () const noexcept
std::size_t position () const noexcept
void set_bypassed (bool bypassed) noexcept
 Hard transport bypass.
bool bypassed () const noexcept
void discard_history () noexcept
 Discards capture/playback state in constant time without changing the prepared capacity, configuration, or bypass state.
void reset () noexcept
SampleType process_sample (SampleType input) noexcept
void process_block (const SampleType *input, SampleType *output, std::size_t sample_count) noexcept

Static Public Attributes

static constexpr std::size_t kMinimumWindowSamples = 2
static constexpr std::size_t kMaximumWindowSamples = 8u * 1024u * 1024u

Detailed Description

template<typename SampleType = float>
class pulp::signal::ReverseBufferT< SampleType >

A mono streaming reverse-window processor.

One prepared buffer is captured forward while the preceding buffer is read backward. The first reversed window begins after exactly window_samples input frames. This is a reorder effect: individual sample delays span one through 2 * window_samples - 1, even though the declared startup latency is one complete window. Instantiate one processor per independently reversed channel.

Member Function Documentation

◆ bypassed()

template<typename SampleType = float>
bool pulp::signal::ReverseBufferT< SampleType >::bypassed ( ) const
inlinenoexcept

◆ config()

template<typename SampleType = float>
Config pulp::signal::ReverseBufferT< SampleType >::config ( ) const
inlinenoexcept

◆ configure()

template<typename SampleType = float>
bool pulp::signal::ReverseBufferT< SampleType >::configure ( Config replacement)
inlinenodiscardnoexcept

Publishes the complete transport configuration.

Accepted changes discard captured audio and restart priming; rejection preserves all state.

◆ discard_history()

template<typename SampleType = float>
void pulp::signal::ReverseBufferT< SampleType >::discard_history ( )
inlinenoexcept

Discards capture/playback state in constant time without changing the prepared capacity, configuration, or bypass state.

Hosts should call this after a transport seek or any discontinuous source reposition.

◆ latency_samples()

template<typename SampleType = float>
int pulp::signal::ReverseBufferT< SampleType >::latency_samples ( ) const
inlinenoexcept

◆ maximum_window_samples()

template<typename SampleType = float>
std::size_t pulp::signal::ReverseBufferT< SampleType >::maximum_window_samples ( ) const
inlinenoexcept

◆ position()

template<typename SampleType = float>
std::size_t pulp::signal::ReverseBufferT< SampleType >::position ( ) const
inlinenoexcept

◆ prepare()

template<typename SampleType = float>
bool pulp::signal::ReverseBufferT< SampleType >::prepare ( std::size_t maximum_window_samples)
inlinenodiscard

◆ prepared()

template<typename SampleType = float>
bool pulp::signal::ReverseBufferT< SampleType >::prepared ( ) const
inlinenoexcept

◆ process_block()

template<typename SampleType = float>
void pulp::signal::ReverseBufferT< SampleType >::process_block ( const SampleType * input,
SampleType * output,
std::size_t sample_count )
inlinenoexcept

◆ process_sample()

template<typename SampleType = float>
SampleType pulp::signal::ReverseBufferT< SampleType >::process_sample ( SampleType input)
inlinenoexcept

◆ reset()

template<typename SampleType = float>
void pulp::signal::ReverseBufferT< SampleType >::reset ( )
inlinenoexcept

◆ retained_bytes()

template<typename SampleType = float>
std::size_t pulp::signal::ReverseBufferT< SampleType >::retained_bytes ( ) const
inlinenoexcept

◆ set_bypassed()

template<typename SampleType = float>
void pulp::signal::ReverseBufferT< SampleType >::set_bypassed ( bool bypassed)
inlinenoexcept

Hard transport bypass.

Finite input passes through sample-exactly and no audio is captured. Either transition discards history, so re-engaging the effect always starts with a fresh complete priming window.

◆ startup_latency_samples()

template<typename SampleType = float>
int pulp::signal::ReverseBufferT< SampleType >::startup_latency_samples ( ) const
inlinenoexcept

◆ state()

template<typename SampleType = float>
ReverseBufferState pulp::signal::ReverseBufferT< SampleType >::state ( ) const
inlinenoexcept

◆ tail_samples()

template<typename SampleType = float>
int pulp::signal::ReverseBufferT< SampleType >::tail_samples ( ) const
inlinenoexcept

Member Data Documentation

◆ kMaximumWindowSamples

template<typename SampleType = float>
std::size_t pulp::signal::ReverseBufferT< SampleType >::kMaximumWindowSamples = 8u * 1024u * 1024u
staticconstexpr

◆ kMinimumWindowSamples

template<typename SampleType = float>
std::size_t pulp::signal::ReverseBufferT< SampleType >::kMinimumWindowSamples = 2
staticconstexpr

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