Variable Curve ADSR Envelope Generator



Variable Curve ADSR Envelope Generator

Attack, Decay, Sustain, Release module with adjustable curves for each section. The initial attack value can be set from 0 - 100% of the gate height and the final decay value can be set from 0 - 1. This allows for various envelope shapes where the initial attack does not have to be the highest value:
as well as envelopes that start high and dip


Input Signal Range Notes
input 0 ~ 1 Envelope Trigger - accepts velocity signal as gate

Output Signal Range Notes
output 0 - gate height at any stage signal is a % of initial gate height


[Knob, Button, Spline, and/or Mapper] Function Notes
time sets the time to reach the end of the current step
level sets the end level for the current step level is a % of the initial gate height
curve set the curvature of the current step curve goes from exponential to logarithmic with linear at 50%


Meter Displays Notes
input light indicates a gate is present at the input

Version History

Revision File Date Notes
1.3 Variable curve ADSR V1.3.audulus (56.7 KB) 05/30/2018 fixed bug in attack curve generator - updated curve graphics-
1.2 superceded 05/02/2018 bug fix
1.1 superceded 05/01/2018 fixed retrigger bug
1.0 superseded 05/01/2018 initial upload to Forum


Revision File Date Notes
1.3 Variable curve ADSR V1.3 demo.audulus (64.4 KB) 05/30/2018 bug fix
1.2 superceded 05/02/2018 bug fix
1.1 superseded 05/01/2018 fixed retrigger bug
1.0 superseded 05/01/2018 initial upload to Forum - ADSR Waveform display

Ways to combat osc clickthump
3 Operator PM Synth
uPop DX Phase Modulation Operator
Clicking envelope when using gates of different heights
Frap Tools Falistri - inspired by graphics by stschoen?
Flipping ADSR Upside Down

I am always in the market for more @stschoen envelopes!
Similarly I am loving the version history and demo tables that people have been using, I must start to adopt this practice.

I do, however think there might be a bug somewhere. The main output seems to start with one of the level and cannot go lower.

As there seems to be another crossfade that goes into the cv input of the final conditional expression that looks perfect. I can’t quite unpack what the last expression is intended to do, but I think it should be a quick fix.

1 Like


@RobertSyrett It’s not a bug it’s a feature! I added the final expression to keep the output from dropping to zero on a retrigger. Looks like it might still need some work. Bear in mind that the final level (decay) sets the idle level for the module.(Like the DX7). If it’s non-zero the module will never reach zero. What were your settings?

1 Like


Oh, I quite like the decay going to not zero :slight_smile:

If you look at the bottom waveform meter in the screenshot above, you will see that there is a corner on the attack, followed by a plateau, and then the curved attack. In short, one of the other stages is misbehaving.

1 Like


Post a screenshot of the module settings if you don’t mind. I’m sure that last expression is the likely culprit

1 Like


here you go!

1 Like





Definitely a bug!



Reworked the retrigger logic. I believe I fixed it and eliminated the need for the extra expression as well.

1 Like