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

A bounded mono de-esser primitive. More...

#include <de_esser.hpp>

Classes

struct  Params

Public Types

enum class  OutputMode { normal , detector_listen }

Public Member Functions

bool prepare (SampleType sample_rate, const Params &params={}) noexcept
 Establish sample rate and coefficients.
bool set_params (const Params &params) noexcept
 Atomically adopt a new valid configuration.
const Params & params () const noexcept
SampleType sample_rate () const noexcept
bool prepared () const noexcept
bool healthy () const noexcept
std::uint64_t fault_count () const noexcept
void set_bypassed (bool bypassed) noexcept
 Bypass is sample-exact while the detector and split continue tracking, so leaving bypass does not resume from stale state.
bool bypassed () const noexcept
void set_output_mode (OutputMode mode) noexcept
OutputMode output_mode () const noexcept
SampleType process (SampleType input) noexcept
void process (const SampleType *input, SampleType *output, std::size_t num_samples) noexcept
void process (SampleType *buffer, std::size_t num_samples) noexcept
SampleType gain_reduction_db () const noexcept
 Positive attenuation magnitude, suitable for direct display.
GainReduction gain_reduction () const noexcept
SampleType detector_level_db () const noexcept
void reset () noexcept
 Clear signal history while retaining configuration, bypass, and output mode.

Detailed Description

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

A bounded mono de-esser primitive.

A band-pass detector measures sibilance independently from the audio split. Above threshold, only the LR4 high band is attenuated, while the low band is retained and recombined. Use one instance per channel; linked-stereo policy belongs to the caller because it requires an explicit channel-link contract.

RT contract: after prepare(), processing, bypass/listen changes, metering, and reset() are fixed-state and allocate no memory. prepare() and set_params() redesign coefficients and reset signal history, so call them at a control-rate boundary rather than inside the sample loop.

Member Enumeration Documentation

◆ OutputMode

template<typename SampleType = float>
enum class pulp::signal::DeEsserT::OutputMode
strong
Enumerator
normal 
detector_listen 

Member Function Documentation

◆ bypassed()

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

◆ detector_level_db()

template<typename SampleType = float>
SampleType pulp::signal::DeEsserT< SampleType >::detector_level_db ( ) const
inlinenoexcept

◆ fault_count()

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

◆ gain_reduction()

template<typename SampleType = float>
GainReduction pulp::signal::DeEsserT< SampleType >::gain_reduction ( ) const
inlinenoexcept

◆ gain_reduction_db()

template<typename SampleType = float>
SampleType pulp::signal::DeEsserT< SampleType >::gain_reduction_db ( ) const
inlinenoexcept

Positive attenuation magnitude, suitable for direct display.

◆ healthy()

template<typename SampleType = float>
bool pulp::signal::DeEsserT< SampleType >::healthy ( ) const
inlinenoexcept

◆ output_mode()

template<typename SampleType = float>
OutputMode pulp::signal::DeEsserT< SampleType >::output_mode ( ) const
inlinenoexcept

◆ params()

template<typename SampleType = float>
const Params & pulp::signal::DeEsserT< SampleType >::params ( ) const
inlinenoexcept

◆ prepare()

template<typename SampleType = float>
bool pulp::signal::DeEsserT< SampleType >::prepare ( SampleType sample_rate,
const Params & params = {} )
inlinenoexcept

Establish sample rate and coefficients.

Invalid configurations are rejected without partially preparing the processor.

◆ prepared()

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

◆ process() [1/3]

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

◆ process() [2/3]

template<typename SampleType = float>
void pulp::signal::DeEsserT< SampleType >::process ( SampleType * buffer,
std::size_t num_samples )
inlinenoexcept

◆ process() [3/3]

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

◆ reset()

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

Clear signal history while retaining configuration, bypass, and output mode.

The next finite sample starts from zero detector history.

◆ sample_rate()

template<typename SampleType = float>
SampleType pulp::signal::DeEsserT< SampleType >::sample_rate ( ) const
inlinenoexcept

◆ set_bypassed()

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

Bypass is sample-exact while the detector and split continue tracking, so leaving bypass does not resume from stale state.

◆ set_output_mode()

template<typename SampleType = float>
void pulp::signal::DeEsserT< SampleType >::set_output_mode ( OutputMode mode)
inlinenoexcept

◆ set_params()

template<typename SampleType = float>
bool pulp::signal::DeEsserT< SampleType >::set_params ( const Params & params)
inlinenoexcept

Atomically adopt a new valid configuration.

The previous configuration and state remain in force when validation fails.


The documentation for this class was generated from the following file:
  • /home/runner/work/pulp/pulp/core/signal/include/pulp/signal/de_esser.hpp