Skip to content

expsega

An exponential segment generator operating at a-rate.

This is the audio-only form of expseg. Both use sample timing at audio rate.

Syntax

ares = expsega(ia, idur1, ib [, idur2] [, ic] [...])
ares expsega ia, idur1, ib [, idur2] [, ic] [...]

Initialization

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.

Performance

The magnitude changes by a constant factor within each segment. All points must be non-zero and have the same sign; negative points are allowed. Segment lengths round to the nearest whole samples.

If the note ends before the segments finish, the curve stops. If the note continues, the final segment keeps the same exponential rate beyond its stated endpoint.

Examples

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

Example of the expsega opcode.
<CsoundSynthesizer>
<CsOptions>
; 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
</CsOptions>
<CsInstruments>

; 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

endin

</CsInstruments>
<CsScore>
i 1 0 1
i 1 1 1
i 1 2 1
i 1 3 3
e
</CsScore>
</CsoundSynthesizer>

See also

Linear and Exponential Generators

Credits

Author: Gabriel Maldonado

New in Csound 3.57