Type : envellope generation References : Posted by Andy Mucho

Notes : This function runs from:
startlevel at Time=0
midlevel at Time/2
endlevel at Time
At moments of extreme change over small time, the function can generate out
of range (of the 3 input level) numbers, but isn't really a problem in
actual use with real numbers, and sensible/real times..

Code : time = 32
startlevel = 0
midlevel = 100
endlevel = 120
k = startlevel + endlevel - (midlevel * 2)
r = startlevel
s = (endlevel - startlevel - (2 * k)) / time
t = (2 * k) / (time * time)
bigr = r
bigs = s + t
bigt = 2 * t

for(int i=0;i

Comments

Added on : 13/01/04 by thecourier[ AT ]infinito[ DOT ]it Comment : I have try this and it works fine, but what hell is bigs?????

bye bye

float time = (float)pRect.Width(); //time in sampleframes
float startlevel = (float)pRect.Height(); //max h vedi ma 1.0
float midlevel = 500.f;
float endlevel = 0.f;

Added on : 08/10/06 by texmex[ AT ]iki[ DOT ]fi Comment : the method uses a technique called forward differencing, which is based on the fact that a successive values of an polynomial function can be calculated using only additions instead of evaluating the whole polynomial which would require huge amount of multiplications.

Actually the method presented here uses only a quadratic curve, not cubic. The number of the variables in the adder is N+1, where N is the order of the polynomial to be generated. In this example we have only three, thus second order function. For linear we would have two variables: the current value and the constant adder.

The trickiest part is to set up the adder variables...

Check out forward difference in mathworld for more info.

Add your own comment
Comments are displayed in fixed width, no HTML code allowed!

Site created and maintained by
Bram
Graphic design by line.out | Server sponsered by fxpansion