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

Attack-Release, gate-driven. More...

#include <envelope.hpp>

Public Member Functions

void prepare (double sample_rate)
void set_attack_ms (double ms)
void set_release_ms (double ms)
void set_attack_curve (float c)
void set_release_curve (float c)
void set_curve (double c)
 Round-2 compatibility curve: 0 is linear and 1 is the strongest capacitor-like attack/release pair.
void gate (bool on)
 Gate edges drive the envelope; repeated calls with the same state are no-ops, so this can be called every sample from a gate signal.
void gate_on ()
 Convenience spelling with exactly the same level-before-advance sample ordering as gate(true).
void gate_off ()
void reset ()
SampleType next ()
SampleType current () const
SampleType value () const
bool active () const
EnvelopeStage stage () const

Detailed Description

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

Attack-Release, gate-driven.

Attack while the gate is high, sustain at 1, release when it falls.

USE: the sustained-gate workhorse — pad and drone VCAs, gate-CV amplitude, and sidechain duck-and-recover shapes (invert it through an AttenuverterT). When a sound has no decay stage, this is the right primitive; an ADSR with sustain pinned to 1 is the same shape with three more parameters to explain and get wrong.

Member Function Documentation

◆ active()

template<typename SampleType = float>
bool pulp::signal::ArT< SampleType >::active ( ) const
inline

◆ current()

template<typename SampleType = float>
SampleType pulp::signal::ArT< SampleType >::current ( ) const
inline

◆ gate()

template<typename SampleType = float>
void pulp::signal::ArT< SampleType >::gate ( bool on)
inline

Gate edges drive the envelope; repeated calls with the same state are no-ops, so this can be called every sample from a gate signal.

◆ gate_off()

template<typename SampleType = float>
void pulp::signal::ArT< SampleType >::gate_off ( )
inline

◆ gate_on()

template<typename SampleType = float>
void pulp::signal::ArT< SampleType >::gate_on ( )
inline

Convenience spelling with exactly the same level-before-advance sample ordering as gate(true).

◆ next()

template<typename SampleType = float>
SampleType pulp::signal::ArT< SampleType >::next ( )
inline

◆ prepare()

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

◆ reset()

template<typename SampleType = float>
void pulp::signal::ArT< SampleType >::reset ( )
inline

◆ set_attack_curve()

template<typename SampleType = float>
void pulp::signal::ArT< SampleType >::set_attack_curve ( float c)
inline

◆ set_attack_ms()

template<typename SampleType = float>
void pulp::signal::ArT< SampleType >::set_attack_ms ( double ms)
inline

◆ set_curve()

template<typename SampleType = float>
void pulp::signal::ArT< SampleType >::set_curve ( double c)
inline

Round-2 compatibility curve: 0 is linear and 1 is the strongest capacitor-like attack/release pair.

The shared engine's signed curves use opposite signs for rising and falling segments.

◆ set_release_curve()

template<typename SampleType = float>
void pulp::signal::ArT< SampleType >::set_release_curve ( float c)
inline

◆ set_release_ms()

template<typename SampleType = float>
void pulp::signal::ArT< SampleType >::set_release_ms ( double ms)
inline

◆ stage()

template<typename SampleType = float>
EnvelopeStage pulp::signal::ArT< SampleType >::stage ( ) const
inline

◆ value()

template<typename SampleType = float>
SampleType pulp::signal::ArT< SampleType >::value ( ) const
inline

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