I'm curious about the range of values accepted.
For [envgen~], this is what I'm doing. The step variable is from 0 to 1 and reflects the vertical distance. The "delta" is the difference, if it's positive, then it's an ascending ramp, descending otherwise. I also have a "gain" parameter, which comes from the gate input. A gate of "1" means a maximum gain of "1", "0.5" would be "0.5" and so on. Negative gates are allowed, and the function gets inverted.
I do allow negative exponentials, but what I do is that I invert/mirror the function.
Well, here's what I do then.
if(x->x_power >= 0){ // positive exponential
if((x->x_delta > 0) == (x->x_gain > 0))
step = pow(step, x->x_power);
else
step = 1-pow(1-step, x->x_power);
}
Because of this, an ascending curve with the same exponential parameter of a descending curve will "look" the same, but mirrored.
As for negative exponentials, it's the opposite.
else{ // negative exponential
if((x->x_delta > 0) == (x->x_gain > 0))
step = 1-pow(1-step, -x->x_power);
else
step = pow(step, -x->x_power);
}
Hope this makes sense.
Check out the help file of [envgen~] (beta 22 is already available via deken) and you can see what kinds of curves you can generate with it.
I believe there should be no problem with fractional exponents (square roots),
no problem at all
but I wonder about the case of negative exponents (inverse of the exponent) since small fractions would map to large numbers well over 1, so I assume those wouldn't be allowed.
since the input values are always from 0 to 1, a small fraction will just make it jump to "1", but not exceed it.
Also, since both [else/envgen~] and [else/adsr~] are capable of multiple envelope "segments", could each segment have a separate parameter or would there be one parameter applied to all segments?
you can have a different exponential parameter for each segment in [envgen~]
the [adsr~] object, so far, is only linear, but I'm hoping to offer a hardcoded exponential setting for it, but not sure yet which one, hence my mail to the list :) - I figure if you wanna tailor your own special adsr~, you can go for [envgen~].
cheers