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

Separates attack and sustain by comparing exact-timing peak envelopes. More...

#include <transient_designer.hpp>

Public Member Functions

void prepare (SampleType sample_rate)
void set_attack_db (SampleType db) noexcept
void set_sustain_db (SampleType db) noexcept
void set_fast_attack_ms (SampleType ms)
void set_fast_release_ms (SampleType ms)
void set_slow_attack_ms (SampleType ms)
void set_slow_release_ms (SampleType ms)
SampleType process (SampleType input) noexcept
void process (const SampleType *input, SampleType *output, int num_samples) noexcept
void reset () noexcept
SampleType attack_db () const noexcept
SampleType sustain_db () const noexcept
SampleType fast_attack_ms () const noexcept
SampleType fast_release_ms () const noexcept
SampleType slow_attack_ms () const noexcept
SampleType slow_release_ms () const noexcept
SampleType contrast () const noexcept
SampleType gain_db () const noexcept

Static Public Member Functions

static constexpr int latency_samples () noexcept

Static Public Attributes

static constexpr SampleType kMinShapeDb = SampleType{-24}
static constexpr SampleType kMaxShapeDb = SampleType{24}

Detailed Description

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

Separates attack and sustain by comparing exact-timing peak envelopes.

A positive fast-minus-slow contrast identifies an onset. A negative contrast identifies the body after a level falls. attack_db and sustain_db scale those two regions independently; positive values enhance and negative values attenuate. Both controls at zero are exactly transparent.

This is a zero-lookahead, zero-latency primitive. It owns fixed scalar state and process(), block processing, reset(), and accessors allocate no memory. Call prepare() and the setters from control code, not concurrently with the audio callback.

Member Function Documentation

◆ attack_db()

template<typename SampleType = float>
SampleType pulp::signal::TransientDesignerT< SampleType >::attack_db ( ) const
inlinenoexcept

◆ contrast()

template<typename SampleType = float>
SampleType pulp::signal::TransientDesignerT< SampleType >::contrast ( ) const
inlinenoexcept

◆ fast_attack_ms()

template<typename SampleType = float>
SampleType pulp::signal::TransientDesignerT< SampleType >::fast_attack_ms ( ) const
inlinenoexcept

◆ fast_release_ms()

template<typename SampleType = float>
SampleType pulp::signal::TransientDesignerT< SampleType >::fast_release_ms ( ) const
inlinenoexcept

◆ gain_db()

template<typename SampleType = float>
SampleType pulp::signal::TransientDesignerT< SampleType >::gain_db ( ) const
inlinenoexcept

◆ latency_samples()

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

◆ prepare()

template<typename SampleType = float>
void pulp::signal::TransientDesignerT< SampleType >::prepare ( SampleType sample_rate)
inline

◆ process() [1/2]

template<typename SampleType = float>
void pulp::signal::TransientDesignerT< SampleType >::process ( const SampleType * input,
SampleType * output,
int num_samples )
inlinenoexcept

◆ process() [2/2]

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

◆ reset()

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

◆ set_attack_db()

template<typename SampleType = float>
void pulp::signal::TransientDesignerT< SampleType >::set_attack_db ( SampleType db)
inlinenoexcept

◆ set_fast_attack_ms()

template<typename SampleType = float>
void pulp::signal::TransientDesignerT< SampleType >::set_fast_attack_ms ( SampleType ms)
inline

◆ set_fast_release_ms()

template<typename SampleType = float>
void pulp::signal::TransientDesignerT< SampleType >::set_fast_release_ms ( SampleType ms)
inline

◆ set_slow_attack_ms()

template<typename SampleType = float>
void pulp::signal::TransientDesignerT< SampleType >::set_slow_attack_ms ( SampleType ms)
inline

◆ set_slow_release_ms()

template<typename SampleType = float>
void pulp::signal::TransientDesignerT< SampleType >::set_slow_release_ms ( SampleType ms)
inline

◆ set_sustain_db()

template<typename SampleType = float>
void pulp::signal::TransientDesignerT< SampleType >::set_sustain_db ( SampleType db)
inlinenoexcept

◆ slow_attack_ms()

template<typename SampleType = float>
SampleType pulp::signal::TransientDesignerT< SampleType >::slow_attack_ms ( ) const
inlinenoexcept

◆ slow_release_ms()

template<typename SampleType = float>
SampleType pulp::signal::TransientDesignerT< SampleType >::slow_release_ms ( ) const
inlinenoexcept

◆ sustain_db()

template<typename SampleType = float>
SampleType pulp::signal::TransientDesignerT< SampleType >::sustain_db ( ) const
inlinenoexcept

Member Data Documentation

◆ kMaxShapeDb

template<typename SampleType = float>
SampleType pulp::signal::TransientDesignerT< SampleType >::kMaxShapeDb = SampleType{24}
staticconstexpr

◆ kMinShapeDb

template<typename SampleType = float>
SampleType pulp::signal::TransientDesignerT< SampleType >::kMinShapeDb = SampleType{-24}
staticconstexpr

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