transegr
Constructs a user-definable envelope with extended release segment.
Like transeg, with a final segment that starts at note-off.
Syntax
Initialization
ia -- starting value.
ib, ic, etc. -- target value of each segment.
idur -- duration in seconds of the first segment. A zero or negative value skips initialization and preserves a running envelope, including its release.
idur2,... idurx etc. -- duration in seconds of each later segment. The last segment is the release. A zero or negative duration makes a later segment jump to its target.
itype, itype2, etc. -- curve shape. Zero gives a straight line. For a nonzero value, the curve is:
Here, t runs from 0 to 1 over the segment.
Performance
If itype > 0, there is a slowly rising (concave) or slowly decaying (convex) curve, while if itype < 0, the curve is fast rising (convex) or fast decaying (concave). See also GEN16.
At audio rate, durations round to the nearest sample. At control rate, durations truncate to whole control periods. A duration that becomes zero after rounding or truncation makes the segment jump to its target.
The envelope runs through all segments except the last, then holds the value before the release. With only one segment, it holds ia until note-off.
Note-off starts the final segment from the envelope's current value, even if an earlier segment is still running. This happens at the end of a timed note, on a MIDI note-off, on a negative p1 note event, or when turnoff2 requests a release.
transegr extends the note long enough to output the release endpoint. A zero-length release still outputs its target. If another opcode keeps the note alive longer, transegr holds its endpoint without stretching the release.
Examples
Here is an example of the transegr opcode. It uses the file transegr.csd.
See also
Linear and Exponential Generators
Credits
Author: John ffitch
january 2010
New in Csound version 5.12