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

The DAHDSR superset state machine. More...

#include <envelope.hpp>

Public Types

using Stage = EnvelopeStage

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_release_ms (double ms)
void set_attack_curve (float c)
void set_decay_curve (float c)
void set_release_curve (float c)
void set_sustain (SampleType level)
void set_has_sustain (bool on)
void set_gate_driven (bool on)
void set_loop (bool on, int count)
void reset ()
void trigger (SampleType velocity)
void release ()
SampleType next ()
SampleType current () const
Stage stage () const
bool active () const
int loops_completed () const

Static Public Attributes

static constexpr int kMaxLoops = 128

Detailed Description

template<typename SampleType = float>
class pulp::signal::detail::EnvelopeEngine< SampleType >

The DAHDSR superset state machine.

Every public envelope in this header is this engine with some stages disabled and some behavior flags set, so the stage timing, the curve law, retrigger-from-current-level, and looping have exactly one implementation to get right.

RT contract: fixed scalar state; next(), trigger(), release(), and reset() allocate nothing.

Member Typedef Documentation

◆ Stage

template<typename SampleType = float>
using pulp::signal::detail::EnvelopeEngine< SampleType >::Stage = EnvelopeStage

Member Function Documentation

◆ active()

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

◆ current()

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

◆ loops_completed()

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

◆ next()

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

◆ prepare()

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

◆ release()

template<typename SampleType = float>
void pulp::signal::detail::EnvelopeEngine< SampleType >::release ( )
inline

◆ reset()

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

◆ set_attack_curve()

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

◆ set_attack_ms()

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

◆ set_decay_curve()

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

◆ set_decay_ms()

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

◆ set_delay_ms()

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

◆ set_gate_driven()

template<typename SampleType = float>
void pulp::signal::detail::EnvelopeEngine< SampleType >::set_gate_driven ( bool on)
inline

◆ set_has_sustain()

template<typename SampleType = float>
void pulp::signal::detail::EnvelopeEngine< SampleType >::set_has_sustain ( bool on)
inline

◆ set_hold_ms()

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

◆ set_loop()

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

◆ set_release_curve()

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

◆ set_release_ms()

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

◆ set_sustain()

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

◆ stage()

template<typename SampleType = float>
Stage pulp::signal::detail::EnvelopeEngine< SampleType >::stage ( ) const
inline

◆ trigger()

template<typename SampleType = float>
void pulp::signal::detail::EnvelopeEngine< SampleType >::trigger ( SampleType velocity)
inline

Member Data Documentation

◆ kMaxLoops

template<typename SampleType = float>
int pulp::signal::detail::EnvelopeEngine< SampleType >::kMaxLoops = 128
staticconstexpr

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