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

A fixed number of equal-length spectra in one contiguous, 64-byte-aligned block, each starting on a 64-byte boundary. More...

#include <convolver_messages.hpp>

Public Types

using value_type = std::complex<SampleType>

Public Member Functions

 ConvolverSpectrumArenaT ()=default
 ConvolverSpectrumArenaT (std::size_t count, std::size_t bins)
 ConvolverSpectrumArenaT (const ConvolverSpectrumArenaT &)=delete
ConvolverSpectrumArenaT & operator= (const ConvolverSpectrumArenaT &)=delete
 ConvolverSpectrumArenaT (ConvolverSpectrumArenaT &&) noexcept=default
ConvolverSpectrumArenaT & operator= (ConvolverSpectrumArenaT &&) noexcept=default
void assign (std::size_t count, std::size_t bins)
 Allocate count zeroed spectra of bins values each.
std::size_t size () const noexcept
bool empty () const noexcept
std::size_t bins () const noexcept
std::size_t stride () const noexcept
std::size_t footprint_bytes () const noexcept
 Bytes this arena holds, including its alignment slack.
std::span< value_type > operator[] (std::size_t i) noexcept
std::span< const value_type > operator[] (std::size_t i) const noexcept
void fill_zero () noexcept
 Zero every spectrum. Allocation-free.

Static Public Member Functions

static constexpr std::size_t stride_for (std::size_t bins) noexcept
 Distance between consecutive spectra in value_types: bins rounded up to a whole number of 64-byte lines.

Detailed Description

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

A fixed number of equal-length spectra in one contiguous, 64-byte-aligned block, each starting on a 64-byte boundary.

The partitioned convolver keeps its IR partition spectra and its input history in these. One block per set keeps the per-block multiply-accumulate walking a compact address range: separately allocated spectra, or spectra padded to the full FFT width, spread the same data over twice the memory, which costs most when several convolvers run side by side.

operator[] returns a span of bins() values. Allocation happens only in the sizing constructor and assign(); everything else is allocation-free.

Member Typedef Documentation

◆ value_type

template<typename SampleType = float>
using pulp::signal::ConvolverSpectrumArenaT< SampleType >::value_type = std::complex<SampleType>

Constructor & Destructor Documentation

◆ ConvolverSpectrumArenaT() [1/4]

template<typename SampleType = float>
pulp::signal::ConvolverSpectrumArenaT< SampleType >::ConvolverSpectrumArenaT ( )
default

◆ ConvolverSpectrumArenaT() [2/4]

template<typename SampleType = float>
pulp::signal::ConvolverSpectrumArenaT< SampleType >::ConvolverSpectrumArenaT ( std::size_t count,
std::size_t bins )
inline

◆ ConvolverSpectrumArenaT() [3/4]

template<typename SampleType = float>
pulp::signal::ConvolverSpectrumArenaT< SampleType >::ConvolverSpectrumArenaT ( const ConvolverSpectrumArenaT< SampleType > & )
delete

◆ ConvolverSpectrumArenaT() [4/4]

template<typename SampleType = float>
pulp::signal::ConvolverSpectrumArenaT< SampleType >::ConvolverSpectrumArenaT ( ConvolverSpectrumArenaT< SampleType > && )
defaultnoexcept

Member Function Documentation

◆ assign()

template<typename SampleType = float>
void pulp::signal::ConvolverSpectrumArenaT< SampleType >::assign ( std::size_t count,
std::size_t bins )
inline

Allocate count zeroed spectra of bins values each.

◆ bins()

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

◆ empty()

template<typename SampleType = float>
bool pulp::signal::ConvolverSpectrumArenaT< SampleType >::empty ( ) const
inlinenoexcept

◆ fill_zero()

template<typename SampleType = float>
void pulp::signal::ConvolverSpectrumArenaT< SampleType >::fill_zero ( )
inlinenoexcept

Zero every spectrum. Allocation-free.

◆ footprint_bytes()

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

Bytes this arena holds, including its alignment slack.

◆ operator=() [1/2]

template<typename SampleType = float>
ConvolverSpectrumArenaT & pulp::signal::ConvolverSpectrumArenaT< SampleType >::operator= ( const ConvolverSpectrumArenaT< SampleType > & )
delete

◆ operator=() [2/2]

template<typename SampleType = float>
ConvolverSpectrumArenaT & pulp::signal::ConvolverSpectrumArenaT< SampleType >::operator= ( ConvolverSpectrumArenaT< SampleType > && )
defaultnoexcept

◆ operator[]() [1/2]

template<typename SampleType = float>
std::span< const value_type > pulp::signal::ConvolverSpectrumArenaT< SampleType >::operator[] ( std::size_t i) const
inlinenoexcept

◆ operator[]() [2/2]

template<typename SampleType = float>
std::span< value_type > pulp::signal::ConvolverSpectrumArenaT< SampleType >::operator[] ( std::size_t i)
inlinenoexcept

◆ size()

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

◆ stride()

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

◆ stride_for()

template<typename SampleType = float>
constexpr std::size_t pulp::signal::ConvolverSpectrumArenaT< SampleType >::stride_for ( std::size_t bins)
inlinestaticconstexprnoexcept

Distance between consecutive spectra in value_types: bins rounded up to a whole number of 64-byte lines.


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