Skip to content

Envelope Controller

Description

A break-point envelope controller.

(make-controller 'envelope ... )

Lisp Syntax and Default Values

An 'envelope controller can be created using the following Lisp syntax:

(make-controller 'envelope dimension
         (list    (list time1 value value ... )
                  (list time2 value value ... )
                  ... ) )

Parameters

The 'envelope controller takes the following arguments:

  • dimension: number of values controlled by the envelope.
  • time1, time2, etc...: the absolute times of the breakpoints.
  • value: the value(s) output by the controller at the given time.

The number of values given for each associated time will depend on the dimension of the controller.

Discussion

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.