Flipping ADSR Upside Down


I remember there was a way you could flip (invert) an adsr envelope from the old forum. Forget how to do it. Something to do with a negative expression. Any help? Cheers.


1-x where x = envelope :slight_smile:


Awesome. Thanks!


There’s another way to do it with a specific attenuverter that will allow you to get both positive and negative portions. It’s called the Positive Domain Attenuverter. It might not be what you’re looking for, but it allows you to have both regular and inverted versions.


I’ll look into that as well. What I’m after is an exponential release but I want the curve to start fat. I multiplied the output from an adsr on itself. That got me a sharp start. Now I’m looking for a way to flip the curve so I get a sharp end.


Positive Domain Attenuverter Demo.audulus (23.3 KB)


Oh perhaps you want @stschoen’s Variable Curve ADSR Envelope Generator


Yeah, that variable curve is what I want to achieve. I’m trying to wrap my head around on how it works. I can’t seem to use it where I need it yet. So I’m trying to build my own from the ground up so I understand everything. I may be in over my head though. ADSR’s seem complex.


The problem is you can’t apply the same expression to the output of the entire envelope. You have to use different expressions for each period of the curve.

@stschoen can explain it better, but he essentially is making an envelope from scratch using timers. Each section has its own timer and its own curve.


K. I’ll start pulling those patches apart and studying them. I might post a patch of where I’m stuck later if I can’t make sense of things. Thanks again!


Now that I think about it, I suppose I’m trying to invert the curve “horizontally” and upside down.


Ok, I got the Variable Curve ADSR Envelope Generator to work for me. It seemed to want a wider gate signal. Sweeeeeeeeet!


Are you trying to create an “s” shaped curve? There are a number of functions that will produce an “s” shape. Audulus has smoothstep() which produces an s curve smoothstep
I’m not sure which way you want the curve to go.


So that is what I was trying to say. I wanted a convex curve.


But I played around with your Variable Curve ADSR Envelope Generator in another patch and figured out how to use it properly. So, I don’t really have to do this flipping thing anymore. It would be sweet if you could simply make the curve though…


That’s why I built the variable curve unit. I wanted to be able to go from exponential to linear to logarithmic (convex) for each segment. The first segment is attack, second is decay and third is release. The release starts at whatever level the curve is at when the gate goes low, so with short gates if you have a non-zero attack the output may not rise very far before it goes into release. As @biminiroad said, you can’t really apply the same curve to the whole ADSR envelope. This unit also has the advantage of being able to run “upside down” where it starts high, goes low and then high again.


Thanks for making it. Probably would have taken me years to figure it all out.


I still use the variable ADSR quite a bit along with the PEG you made not too long ago.


You might like this little utility that does basically that to any 0-1 signal you run through it.
Curve Utility.audulus (10.9 KB)