I’m looking for a way to modify an incoming OSC or MIDI value, and what I want is to have the options found in an envelope like those used in music; attack, decay, sustain and release.
My inital thought was to use the smooth envelope modifier, but I can’t get it to behave the way I want.
Is there a way to do this inside Notch? I’m currently looking at the expression modifier, but I’m not sure what to put in to get an ADSR function out of it.
var attackTime = 0.2;
var decayTime = 0.3;
var sustainLevel = 0.5;
var releaseTime = 0.4;
var attack = t < attackTime ? t / attackTime : 1.0;
var decay = t < (attackTime + decayTime) ? 1.0 - (1.0 - sustainLevel) * ((t - attackTime) / decayTime) : sustainLevel;
var release = t < (attackTime + decayTime + releaseTime) ? decay - (decay * (t - (attackTime + decayTime)) / releaseTime) : 0.0;
var result = attack * decay * release;
However, the expression modifier is hashed out in red. Any thoughts on how to move forward? I don’t know much about javascript, but maybe @ryan.barth, @jack-hale or @bent does?
The expression node does not use Javascript so the code you got from ChatGPT won’t work. It uses a simple math expression parser for single line expressions such as those described in the manual page here: Expression | Notch Manual 0.9.23
PS: please don’t tag individual team members when posting on the forum, because (as you can see), it’s not those whom you think can answer who actually has a good answer (plus, it’s just generally bad form