loop_le — Looping constructions.
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. |
Here is an example of the loop_le opcode. It uses the file loop_le.csd.
Example 533. Example of the loop_le opcode.
See the sections Real-time Audio and Command Line Flags for more information on using command line flags.
<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
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