One thing that always bothered me about eadsr~ and family was that there was no way not to jump to 0 on the trigger. I modified the code to take out the jump to 0, but then I kept going. These are exponential envelopes where each stage has a settable curvature, the user inputs a number between 0 and 1: 0 is fully exponential (60 db decay time) and 1 is fully linear. if the trigger is negative, the envelope jumps to 0 upon attack, and if positive the attack just takes up where the envelope left off. The arguments are the times for each stage. by default the attack stage curvature is set such that the exponential function going from y = 1 - 1/3rd is mapped to y = 0 - 1. the decay and release stages are fully exponential by default.
each stage can take a list of 2 arguments: time and curvature. curvature of all stages can be set with the message [curves (attack curve) (decay curve) (release curve) (
edit: took out ndirect, modified all envelopes to be more efficient