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

Delay-Attack-Hold-Decay-Sustain-Release with per-stage curves and velocity. More...

#include <envelope.hpp>

Public Member Functions

void prepare (double sample_rate)
void set_delay_ms (double ms)
void set_attack_ms (double ms)
void set_hold_ms (double ms)
void set_decay_ms (double ms)
void set_sustain (SampleType level)
void set_release_ms (double ms)
void set_attack_curve (float c)
void set_decay_curve (float c)
void set_release_curve (float c)
void set_curve (double c)
void set_loop (bool on, int count=0)
void note_on (SampleType velocity=SampleType{1})
void note_off ()
void gate_on ()
void gate_off ()
void reset ()
SampleType next ()
SampleType current () const
SampleType value () const
bool active () const
int loops_completed () const
EnvelopeStage stage () const

Detailed Description

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

Delay-Attack-Hold-Decay-Sustain-Release with per-stage curves and velocity.

USE: the superset for layered and orchestral patches. The delay staggers layers — a swell pad arriving under a pluck is one parameter, not a second voice. The hold shapes the pre-decay plateau. The per-stage curves are what let a synthesized contour match a sampled instrument's. When in doubt about which mod source a matrix slot should carry, this is it.

Velocity scales the peak, so the decay floor (sustain * velocity) tracks it too — a soft note is quieter throughout, not just at its attack.

In looping mode the sustain stage is skipped: an envelope that stops to wait for a note-off cannot also be a cycling source.

Member Function Documentation

◆ active()

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

◆ current()

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

◆ gate_off()

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

◆ gate_on()

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

◆ loops_completed()

template<typename SampleType = float>
int pulp::signal::DahdsrT< SampleType >::loops_completed ( ) const
inline

◆ next()

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

◆ note_off()

template<typename SampleType = float>
void pulp::signal::DahdsrT< SampleType >::note_off ( )
inline

◆ note_on()

template<typename SampleType = float>
void pulp::signal::DahdsrT< SampleType >::note_on ( SampleType velocity = SampleType{1})
inline

◆ prepare()

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

◆ reset()

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

◆ set_attack_curve()

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

◆ set_attack_ms()

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

◆ set_curve()

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

◆ set_decay_curve()

template<typename SampleType = float>
void pulp::signal::DahdsrT< SampleType >::set_decay_curve ( float c)
inline

◆ set_decay_ms()

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

◆ set_delay_ms()

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

◆ set_hold_ms()

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

◆ set_loop()

template<typename SampleType = float>
void pulp::signal::DahdsrT< SampleType >::set_loop ( bool on,
int count = 0 )
inline

◆ set_release_curve()

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

◆ set_release_ms()

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

◆ set_sustain()

template<typename SampleType = float>
void pulp::signal::DahdsrT< SampleType >::set_sustain ( SampleType level)
inline

◆ stage()

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

◆ value()

template<typename SampleType = float>
SampleType pulp::signal::DahdsrT< 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