loop_le
Construction of looping operations.
Syntax
loop_le indx, incr, imax, label
loop_le kndx, kncr, kmax, label
Initialization
indx -- i-rate variable to count loop.
incr -- value to increment the loop.
imax -- maximum value of loop index.
kndx -- k-rate variable to count loop.
kncr -- value to increment the loop.
kmax -- maximum value of loop index.
The actions of loop_le are equivalent to the code
indx = indx + incr
if (indx <= imax) igoto label
or
kndx = kndx + kncr
if (kndx <= kmax) kgoto label
Note
Adviced is to use the 'modern' while or until opcodes for looping constructions.
Examples
Here is an example of the loop_le opcode. It uses the file loop_le.csd.
Example of the loop_le opcode. |
---|
| <CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac ;;;realtime audio out
;-iadc ;;;uncomment -iadc if RT audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o loop_le.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1
seed 0
gisine ftgen 0, 0, 2^10, 10, 1
instr 1 ;master instrument
ininstr = 5 ;number of called instances
indx = 0
loop:
prints "play instance %d\\n", indx
ipan random 0, 1
ifreq random 100, 1000
iamp = 1/ininstr
event_i "i", 10, 0, p3, iamp, ifreq, ipan
loop_le indx, 1, ininstr, loop
endin
instr 10
ipeak random 0, 1 ;where is the envelope peak
asig poscil3 p4, p5, gisine
aenv transeg 0, p3*ipeak, 6, 1, p3-p3*ipeak, -6, 0
aL,aR pan2 asig*aenv, p6
outs aL, aR
endin
</CsInstruments>
<CsScore>
i1 0 10
e
</CsScore>
</CsoundSynthesizer>
|
Its output should include a line like this:
play instance 0
play instance 1
play instance 2
play instance 3
play instance 4
play instance 5
See also
Program Flow Control: Looping Constructions
More information on this opcode: http://www.csoundjournal.com/2006summer/controlFlow_part2.html written by Steven Yi, and in the Floss Manuals: https://flossmanual.csound.com/csound-language/control-structures
Credits
Istvan Varga.
New in Csound version 5.01