Variable Curve ADSR Envelope Generator

vADSR

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:
curves
as well as envelopes that start high and dip
inverted.


I/O

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

Controls

[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%

Displays

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

Demos

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
4 Likes

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.

2 Likes

@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?

2 Likes

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.

2 Likes

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

2 Likes

here you go!

2 Likes

Thanks

3 Likes

Definitely a bug!

3 Likes

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

2 Likes