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

#include <filter_morph.hpp>

Classes

struct  Endpoint

Public Member Functions

bool configure (SampleType sample_rate, Endpoint first, Endpoint second) noexcept
 Transactionally design both endpoints.
bool set_morph (SampleType amount) noexcept
 Set the linear-amplitude morph position.
SampleType process (SampleType input) noexcept
bool process_block (const SampleType *input, SampleType *output, std::size_t frames) noexcept
bool process_block (SampleType *samples, std::size_t frames) noexcept
void reset () noexcept
Endpoint first_endpoint () const noexcept
Endpoint second_endpoint () const noexcept
SampleType morph () const noexcept
SampleType sample_rate () const noexcept
bool configured () const noexcept
BiquadCoefficientsT< SampleType > first_coefficients () const noexcept
BiquadCoefficientsT< SampleType > second_coefficients () const noexcept
double magnitude (double frequency_hz) const noexcept
 Exact complex parallel sum of the two live sections.
float magnitude_db (double frequency_hz) const noexcept
void response_curve_db (double min_hz, double max_hz, std::span< float > output) const noexcept

Static Public Member Functions

static constexpr int latency_samples () noexcept
static constexpr int tail_samples () noexcept
 Recursive biquads have an asymptotic (formally unbounded) tail.

Static Public Attributes

static constexpr SampleType min_frequency_hz = SampleType{20}
static constexpr SampleType min_q = SampleType{0.1}
static constexpr SampleType max_q = SampleType{20}
static constexpr SampleType max_sample_rate = SampleType{384000}

Member Function Documentation

◆ configure()

template<typename SampleType = float>
bool pulp::signal::FilterMorphT< SampleType >::configure ( SampleType sample_rate,
Endpoint first,
Endpoint second )
inlinenoexcept

Transactionally design both endpoints.

Invalid input leaves the live filters and their state untouched. Call only at a block boundary.

◆ configured()

template<typename SampleType = float>
bool pulp::signal::FilterMorphT< SampleType >::configured ( ) const
inlinenodiscardnoexcept

◆ first_coefficients()

template<typename SampleType = float>
BiquadCoefficientsT< SampleType > pulp::signal::FilterMorphT< SampleType >::first_coefficients ( ) const
inlinenodiscardnoexcept

◆ first_endpoint()

template<typename SampleType = float>
Endpoint pulp::signal::FilterMorphT< SampleType >::first_endpoint ( ) const
inlinenodiscardnoexcept

◆ latency_samples()

template<typename SampleType = float>
constexpr int pulp::signal::FilterMorphT< SampleType >::latency_samples ( )
inlinestaticconstexprnoexcept

◆ magnitude()

template<typename SampleType = float>
double pulp::signal::FilterMorphT< SampleType >::magnitude ( double frequency_hz) const
inlinenodiscardnoexcept

Exact complex parallel sum of the two live sections.

◆ magnitude_db()

template<typename SampleType = float>
float pulp::signal::FilterMorphT< SampleType >::magnitude_db ( double frequency_hz) const
inlinenodiscardnoexcept

◆ morph()

template<typename SampleType = float>
SampleType pulp::signal::FilterMorphT< SampleType >::morph ( ) const
inlinenodiscardnoexcept

◆ process()

template<typename SampleType = float>
SampleType pulp::signal::FilterMorphT< SampleType >::process ( SampleType input)
inlinenoexcept

◆ process_block() [1/2]

template<typename SampleType = float>
bool pulp::signal::FilterMorphT< SampleType >::process_block ( const SampleType * input,
SampleType * output,
std::size_t frames )
inlinenoexcept

◆ process_block() [2/2]

template<typename SampleType = float>
bool pulp::signal::FilterMorphT< SampleType >::process_block ( SampleType * samples,
std::size_t frames )
inlinenoexcept

◆ reset()

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

◆ response_curve_db()

template<typename SampleType = float>
void pulp::signal::FilterMorphT< SampleType >::response_curve_db ( double min_hz,
double max_hz,
std::span< float > output ) const
inlinenoexcept

◆ sample_rate()

template<typename SampleType = float>
SampleType pulp::signal::FilterMorphT< SampleType >::sample_rate ( ) const
inlinenodiscardnoexcept

◆ second_coefficients()

template<typename SampleType = float>
BiquadCoefficientsT< SampleType > pulp::signal::FilterMorphT< SampleType >::second_coefficients ( ) const
inlinenodiscardnoexcept

◆ second_endpoint()

template<typename SampleType = float>
Endpoint pulp::signal::FilterMorphT< SampleType >::second_endpoint ( ) const
inlinenodiscardnoexcept

◆ set_morph()

template<typename SampleType = float>
bool pulp::signal::FilterMorphT< SampleType >::set_morph ( SampleType amount)
inlinenoexcept

Set the linear-amplitude morph position.

A convex output blend avoids hidden midpoint gain and keeps the canonical endpoint normalizations.

◆ tail_samples()

template<typename SampleType = float>
constexpr int pulp::signal::FilterMorphT< SampleType >::tail_samples ( )
inlinestaticconstexprnoexcept

Recursive biquads have an asymptotic (formally unbounded) tail.

Member Data Documentation

◆ max_q

template<typename SampleType = float>
SampleType pulp::signal::FilterMorphT< SampleType >::max_q = SampleType{20}
staticconstexpr

◆ max_sample_rate

template<typename SampleType = float>
SampleType pulp::signal::FilterMorphT< SampleType >::max_sample_rate = SampleType{384000}
staticconstexpr

◆ min_frequency_hz

template<typename SampleType = float>
SampleType pulp::signal::FilterMorphT< SampleType >::min_frequency_hz = SampleType{20}
staticconstexpr

◆ min_q

template<typename SampleType = float>
SampleType pulp::signal::FilterMorphT< SampleType >::min_q = SampleType{0.1}
staticconstexpr

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