ofxPDSP
pdsp::ADSR Class Reference

Attack-Decay-Sustain-Release envelope. More...

#include <ADSR.h>

Inheritance diagram for pdsp::ADSR:
pdsp::Unit pdsp::Preparable pdsp::Patchable

Public Member Functions

Patchableset (float attackTimeMs, float decayTimeMs, float sustainLevel, float releaseTimeMs, float velocity=1.0f)
 sets the default envelope values and returns the unit ready to be pached in a chain. More...
 
void setAttackCurve (float hardness)
 sets the curve of the attack stage the envelope, from a smoother linear in dB curve to an harder analog-like curve. By default is 0.0f ( linear in dB attack ). More...
 
void setReleaseCurve (float hardness)
 sets the curve of the decay and release stages of the envelope, from a smoother linear in dB curve to an harder analog-like curve. By default is 1.0f ( analog-like releases ). More...
 
void setCurve (float hardness)
 sets the curve of the envelope, from a smoother linear in dB curve to an harder analog-like curve. More...
 
void enableDBTriggering (float dBmin, float dBmax=0.0f)
 enable an alternate mode for the trigger dynamics, trigger will output linear value that are the equivalent of dBmin at 0.0f and dBmax at 1.0f More...
 
void disableDBTriggering ()
 disable the alternate mode for the trigger dynamics.
 
Patchablein_trig ()
 Sets "trig" as selected input and returns this Unit ready to be patched. This is the default input. This input is the trigger input of the envelope, you should patch an out_trig() to this input.
 
Patchablein_attack ()
 Sets "attack" as selected input and returns this Unit ready to be patched. This input sets the attack time in milliseconds. The value is taken from this input once every trigger. Init time is 0 milliseconds.
 
Patchablein_decay ()
 Sets "decay" as selected input and returns this Unit ready to be patched. This input sets the decay time in milliseconds. The value is taken from this input once every trigger. Init time is 150 milliseconds.
 
Patchablein_sustain ()
 Sets "sustain" as selected input and returns this Unit ready to be patched. This input sets the sustain value of the envelope. Init value is 0.5f.
 
Patchablein_release ()
 Sets "release" as selected input and returns this Unit ready to be patched. This input sets the release time in milliseconds. The value is taken from this input once every trigger. Init time is 150 milliseconds.
 
Patchablein_velocity ()
 Sets "velocity" as selected input and returns this Unit ready to be patched. This input rapresent the influcence of trigger values on the envelope out. It ranges from 0.0f to 1.0f, at 0.0 the envelope output level is indipendent from the input trigger values. Init value is 1.0f.
 
Patchableout_signal ()
 Sets "signal" as selected output and returns this Unit ready to be patched. This is the default output. This is the envelope output.
 
Patchableout_bias ()
 Sets "bias" as selected output and returns this Unit ready to be patched. This is the negation of the actual sustain level, so if you add this to the envelope output you have an envelope that sustains always at 0.0f .
 
float meter_output () const
 returns the first value of the last processed output buffer. This method is thread-safe.
 
int meter_triggers () const
 returns number of received triggers since the start of the program, as int. Can overflow. This method is thread-safe.
 
- Public Member Functions inherited from pdsp::Unit
 Unit (const Unit &other)
 
Unitoperator= (const Unit &other)
 
 Unit (Unit &&other)
 
Unitoperator= (Unit &&other)
 
virtual void setOversampleLevel (int newOversampleLevel)
 sets the unit oversample level More...
 
int getOversampleLevel () const
 returns the Unit oversample level
 
- Public Member Functions inherited from pdsp::Patchable
void resetInputToDefault ()
 resets the selected input to the default.
 
void resetOutputToDefault ()
 resets the selected output to the default.
 
Patchablein (const char *tag)
 sets the selected input to the one tagged with "tag", if tag is a valid string, and returns this Patchable ready to be patched. More...
 
Patchableout (const char *tag)
 sets the selected output to the one tagged with "tag", if tag is a valid string, and returns this Patchable ready to be patched. More...
 
void disconnectIn ()
 disconnects all the outputs connected to the selected input, then resets the selected input to the default.
 
void disconnectOut ()
 disconnects all the inputs connected to the selected output, then resets the selected output to the default.
 
void disconnectAll ()
 disconnects all the inputs and outputs to their connected outputs and inputs. Also resets the selected input and output to the default.
 
InputNodegetSelectedInput ()
 returns the selected input, you can patch a Patchable or OutputNode to it with the >> operator.
 
OutputNodegetSelectedOutput ()
 returns the selected output, you can patch it to another Patchable or InputNode with the >> operator.
 
std::vector< std::string > getInputsList ()
 returns a vector of the valid input tags
 
std::vector< std::string > getOutputsList ()
 returns a vector of the valid input tags
 

Additional Inherited Members

- Static Public Member Functions inherited from pdsp::Preparable
static double getGlobalSampleRate ()
 
- Protected Member Functions inherited from pdsp::Unit
void prepareToPlay (int expectedBufferSize, double sampleRate) override
 you have to use this method only in the constructor, inside if(dynamicConstruction){ } More...
 
const float * processInput (InputNode &node, int &stateNow)
 process the given input, gives you a pointer to the processed buffer as result and its state More...
 
float processAndGetSingleValue (InputNode &input, int pos)
 process the given input, gives you a pointer to the processed buffer as result and its state More...
 
float * getOutputBufferToFill (OutputNode &node)
 gets a pointer to the output buffer for rendering audio to it, and sets the OutputNode state to AudioRate More...
 
void setControlRateOutput (OutputNode &node, float scalarValue)
 sets the OutputNode buffer to "Changed" and its first value to scalarValue More...
 
void setOutputToZero (OutputNode &node)
 sets the OutputNode buffer to "Changed" and its first value to 0.0f More...
 
void updateOutputNodes ()
 call this method in the Unit constructor after adding all the Outputs, this is mandatory for the inner working of the patching framework.
 
- Protected Member Functions inherited from pdsp::Patchable
void addOutput (const char *tag, OutputNode &output)
 method to add outputs when constructing a Unit More...
 
void addInput (const char *tag, InputNode &input)
 method to add inputs when constructing a Unit More...
 
void addModuleOutput (const char *tag, Patchable &unit)
 method to add outputs when constructing a module More...
 
void addModuleInput (const char *tag, Patchable &unit)
 method to add outputs when constructing a module More...
 

Detailed Description

Attack-Decay-Sustain-Release envelope.

This is a standard ADSR envelope. This envelope takes a trigger output as input and produces an envelope based on the set times. It takes trigger on, off and legato values.

Member Function Documentation

◆ enableDBTriggering()

void pdsp::ADSR::enableDBTriggering ( float  dBmin,
float  dBmax = 0.0f 
)

enable an alternate mode for the trigger dynamics, trigger will output linear value that are the equivalent of dBmin at 0.0f and dBmax at 1.0f

Parameters
[in]dBminminimum dB output
[in]dBmaxmaximum dB output, 0 dB if not given

◆ set()

pdsp::Patchable & pdsp::ADSR::set ( float  attackTimeMs,
float  decayTimeMs,
float  sustainLevel,
float  releaseTimeMs,
float  velocity = 1.0f 
)

sets the default envelope values and returns the unit ready to be pached in a chain.

Parameters
[in]attackTimeMsattack time
[in]decayTimeMsdecay time
[in]sustainLevelsustain level
[in]releaseTimeMsrelease time
[in]velocitysensitivity to trigger values

◆ setAttackCurve()

void pdsp::ADSR::setAttackCurve ( float  hardness)

sets the curve of the attack stage the envelope, from a smoother linear in dB curve to an harder analog-like curve. By default is 0.0f ( linear in dB attack ).

Parameters
[in]hardnesshow much analog-like the analog curve is, value is clampet to the 0.0<–>1.0f range,

◆ setCurve()

void pdsp::ADSR::setCurve ( float  hardness)

sets the curve of the envelope, from a smoother linear in dB curve to an harder analog-like curve.

Parameters
[in]hardnesshow much analog-like the analog curve is, value is clampet to the 0.0<–>1.0f range,

◆ setReleaseCurve()

void pdsp::ADSR::setReleaseCurve ( float  hardness)

sets the curve of the decay and release stages of the envelope, from a smoother linear in dB curve to an harder analog-like curve. By default is 1.0f ( analog-like releases ).

Parameters
[in]hardnesshow much analog-like the analog curve is, value is clampet to the 0.0<–>1.0f range,

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