Skip to content

elseif

Defines another "if...then" condition when a "if...then" condition is false.

Syntax

elseif xa R xb then

where label is in the same instrument block and is not an expression, and where R is one of the Relational operators (<, =, <=, ==, !=) (and = for convenience, see also under Conditional Values).

Performance

elseif is used inside of a block of code between the "if...then" and endif opcodes. When a "if...then" condition is false, it defines another "if...then" condition to be met. Any number of elseif statements are allowed.

Examples

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

Example of the elseif opcode.
<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac     ;;;realtime audio out
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o elseif.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

instr 1

ipch = cpspch(p4)
ienv = p5


if (ienv == 0) then     
        ;ADSR
        kenv adsr 0.05, 0.05, .95, .05
elseif (ienv == 1) then 
        ;Linear Triangular Envelope
        kenv linseg 0, p3 * .5, 1, p3 * .5, 0
elseif (ienv == 2) then 
        ;Ramp Up
        kenv    linseg 0, p3 - .01, 1, .01, 0
endif

aout    vco2    .8, ipch, 10
aout    moogvcf aout, ipch + (kenv * 5 * ipch) , .5

aout = aout * kenv

outs aout, aout
endin
</CsInstruments>
<CsScore>

i 1 0 2 8.00 0
i 1 3 2 8.00 1
i 1 6 2 8.00 2
e
</CsScore>
</CsoundSynthesizer>

See also

Program Flow Control

More information on this opcode: http://www.csoundjournal.com/2006spring/controlFlow.html, written by Steven Yi

Credits

New in version 4.21