Skip to content

expsegba

An exponential segment generator operating at a-rate with absolute times.

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

Syntax

ares = expsegba(ia, itim1, ib [, itim2] [, ic] [...])
ares expsegba ia, itim1, ib [, itim2] [, ic] [...]

Initialization

ia -- starting value. Zero is illegal.

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

itim1 -- time in seconds at the end of the first segment. A zero or negative value skips initialization, preserving the current curve during reinitialization.

itim2, itim3, etc. -- times in seconds at the ends of later segments. Times must not decrease.

Performance

Each time gives an endpoint's position in seconds from the start of the envelope. Each time rounds to the nearest sample. The magnitude changes by a constant factor between points. All points must be non-zero and have the same sign; negative points are allowed.

If several points round to the same update, the output jumps to the last value at that update. If the note continues past the final time, the final segment keeps the same exponential rate. When the final two points share an update, the output holds the final value.

Examples

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

Example of the expsegba opcode.
<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out   Audio in    No messages
-odac           -iadc     -d     ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o expsega.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

; Initialize the global variables.
sr = 44100
ksmps = 10
nchnls = 1
0dbfs = 1

; Instrument #1.
instr 1
  ; Define a short percussive amplitude envelope that
  ; rises from near silence to 60% of full scale.
  aenv expsegba 0.00000031, 0.1, 0.6, 0.2, 0.00000031

  a1 oscil aenv, 440, 1
  out a1
endin


</CsInstruments>
<CsScore>

; Table #1, a sine wave.
f 1 0 16384 10 1

; Play Instrument #1 for one second.
i 1 0 1
; Play Instrument #1 for one second.
i 1 1 1
; Play Instrument #1 for one second.
i 1 2 1
; Play Instrument #1 for one second.
i 1 3 1
e


</CsScore>
</CsoundSynthesizer>

See also

Linear and Exponential Generators

Credits

Author: John ffitch

June 2011

New in Csound 5.14