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

#include <spectral_cross_synthesis.hpp>

Public Types

using PrepareConfig = SpectralCrossSynthesisPrepareConfigT<SampleType>
using Config = SpectralCrossSynthesisConfigT<SampleType>

Public Member Functions

bool prepare (PrepareConfig config)
 Allocate the analyzer, envelope history, and all frame scratch off the audio thread.
bool set_config (const Config &config) noexcept
 Replace every runtime control transactionally.
Config config () const noexcept
bool prepared () const noexcept
int channels () const noexcept
int fft_size () const noexcept
int num_bins () const noexcept
int lifter_order () const noexcept
std::uint64_t retained_bytes () const noexcept
void reset () noexcept
 Clear temporal envelope history while preserving prepared capacity and both configs.
bool process (const std::complex< SampleType > *const *carrier, const std::complex< SampleType > *const *modulator, std::complex< SampleType > *const *output, int channels, int num_bins) noexcept
 Cross-synthesize one coherent frame group.

Static Public Member Functions

static bool supports_configuration (const PrepareConfig &config) noexcept
static constexpr int added_latency_samples () noexcept
 Analysis/synthesis buffering belongs to the surrounding frame engine; retained envelope history does not emit signal by itself.
static constexpr int added_tail_samples () noexcept

Static Public Attributes

static constexpr int maximum_channels = 64
static constexpr int maximum_true_envelope_iterations = 32
static constexpr int maximum_smoothing_frames = 4096
static constexpr SampleType maximum_transfer_db = SampleType{120}

Member Typedef Documentation

◆ Config

template<typename SampleType = float>
using pulp::signal::SpectralCrossSynthesisT< SampleType >::Config = SpectralCrossSynthesisConfigT<SampleType>

◆ PrepareConfig

template<typename SampleType = float>
using pulp::signal::SpectralCrossSynthesisT< SampleType >::PrepareConfig = SpectralCrossSynthesisPrepareConfigT<SampleType>

Member Function Documentation

◆ added_latency_samples()

template<typename SampleType = float>
constexpr int pulp::signal::SpectralCrossSynthesisT< SampleType >::added_latency_samples ( )
inlinestaticconstexprnoexcept

Analysis/synthesis buffering belongs to the surrounding frame engine; retained envelope history does not emit signal by itself.

◆ added_tail_samples()

template<typename SampleType = float>
constexpr int pulp::signal::SpectralCrossSynthesisT< SampleType >::added_tail_samples ( )
inlinestaticconstexprnoexcept

◆ channels()

template<typename SampleType = float>
int pulp::signal::SpectralCrossSynthesisT< SampleType >::channels ( ) const
inlinenoexcept

◆ config()

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

◆ fft_size()

template<typename SampleType = float>
int pulp::signal::SpectralCrossSynthesisT< SampleType >::fft_size ( ) const
inlinenoexcept

◆ lifter_order()

template<typename SampleType = float>
int pulp::signal::SpectralCrossSynthesisT< SampleType >::lifter_order ( ) const
inlinenoexcept

◆ num_bins()

template<typename SampleType = float>
int pulp::signal::SpectralCrossSynthesisT< SampleType >::num_bins ( ) const
inlinenoexcept

◆ prepare()

template<typename SampleType = float>
bool pulp::signal::SpectralCrossSynthesisT< SampleType >::prepare ( PrepareConfig config)
inline

Allocate the analyzer, envelope history, and all frame scratch off the audio thread.

Rejection leaves an already prepared instance unchanged.

◆ prepared()

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

◆ process()

template<typename SampleType = float>
bool pulp::signal::SpectralCrossSynthesisT< SampleType >::process ( const std::complex< SampleType > *const * carrier,
const std::complex< SampleType > *const * modulator,
std::complex< SampleType > *const * output,
int channels,
int num_bins )
inlinenoexcept

Cross-synthesize one coherent frame group.

Output may alias corresponding carrier or modulator channel storage. Invalid geometry is rejected before output/history mutation. Non-finite bins enter envelope analysis at the configured floor; a non-finite carrier bin itself becomes silence.

◆ reset()

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

Clear temporal envelope history while preserving prepared capacity and both configs.

The next accepted frame initializes history from itself.

◆ retained_bytes()

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

◆ set_config()

template<typename SampleType = float>
bool pulp::signal::SpectralCrossSynthesisT< SampleType >::set_config ( const Config & config)
inlinenoexcept

Replace every runtime control transactionally.

Rejection retains the previous config and history coefficient.

◆ supports_configuration()

template<typename SampleType = float>
bool pulp::signal::SpectralCrossSynthesisT< SampleType >::supports_configuration ( const PrepareConfig & config)
inlinestaticnoexcept

Member Data Documentation

◆ maximum_channels

template<typename SampleType = float>
int pulp::signal::SpectralCrossSynthesisT< SampleType >::maximum_channels = 64
staticconstexpr

◆ maximum_smoothing_frames

template<typename SampleType = float>
int pulp::signal::SpectralCrossSynthesisT< SampleType >::maximum_smoothing_frames = 4096
staticconstexpr

◆ maximum_transfer_db

template<typename SampleType = float>
SampleType pulp::signal::SpectralCrossSynthesisT< SampleType >::maximum_transfer_db = SampleType{120}
staticconstexpr

◆ maximum_true_envelope_iterations

template<typename SampleType = float>
int pulp::signal::SpectralCrossSynthesisT< SampleType >::maximum_true_envelope_iterations = 32
staticconstexpr

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