A break-point envelope controller.
An 'envelope controller can be created using the following Lisp syntax:
(make-controller 'envelope dimension
(list (list time1 value value ... )
(list time2 value value ... )
... ) )
The 'envelope controller takes the following arguments:
The number of values given for each associated time will depend on the dimension of the controller.
The envelope controller follows a predetermined course from value to value in a given amount of time. Values which fall between those which are specified in the list are interpolated. Thus if we specify that at time zero, the value output by the controller will be one, and at time one, the value will be zero, the value at time .5 will be .5 and the value at time .4 will be .6, etc. Note that time1, time2, time3, etc. are in absolute synthesis time and not relative time. If, for example, one wants to set a breakpoint every second for five seconds, the times are 0 1 2 3 4 5, and not 1 1 1 1 1.
Here is an example showing a typical ADSR envelope over 2 seconds of time (its graph is shown at the top of this page):
(make-controller 'envelope 1
'( (0 0.0)
(0.2 1.0)
(0.4 0.7)
(1.2 0.7)
(2 0) ) )
Naturally, in Modalys, the envelope controller is used not for amplitude envelopes but to control other types of dynamically changing parameters, such as the position of a hammer, or the location of an access on an object.
There are no special options for this controller.