expsega — An exponential segment generator operating at a-rate.


An exponential segment generator operating at a-rate. This unit is almost identical to expseg, but more precise when defining segments with very short durations (i.e., in a percussive attack phase) at audio rate.


ares expsega ia, idur1, ib [, idur2] [, ic] [...]


ia -- starting value. Zero is illegal.

ib, ic, etc. -- value after idur1 seconds, etc. must be non-zero and must agree in sign with ia.

idur1 -- duration in seconds of first segment. A zero or negative value will cause all initialization to be skipped.

idur2, idur3, etc. -- duration in seconds of subsequent segments. A zero or negative value will terminate the initialization process with the preceding point, permitting the last defined line or curve to be continued indefinitely in performance. The default is zero.


This unit generate audio signals whose values can pass through two or more specified points. The sum of dur values may or may not equal the instrument's performance time. A shorter performance will truncate the specified pattern, while a longer one will cause the last defined segment to continue on in the same direction.


Here is an example of the expsega opcode. It uses the file expsega.csd.

Example 285. Example of the expsega opcode.

See the sections Real-time Audio and Command Line Flags for more information on using command line flags.

; Select audio/midi flags here according to platform
; Audio out   Audio in    No messages
-odac             ;;;RT audio out
; For Non-realtime ouput leave only the line below:
; -o expsega.wav -W ;;; for file output any platform

; by Kevin Conder, Menno Knevel 2021

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

instr 1

aenv expsega 0.01, 0.1, 1, 0.1, 0.01    ; Define a short percussive amplitude envelope
a1 oscili aenv, 440
outs a1, a1


i 1 0 1
i 1 1 1
i 1 2 1
i 1 3 3

See also

Linear and Exponential Generators


Author: Gabriel Maldonado

New in Csound 3.57