cngoto — Transfers control on every pass when a condition is not true.
cngoto condition, label
where label is in the same instrument block and is not an expression, and where condition uses one of the Relational operators (<, =, <=, ==, !=) (and = for convenience, see also under Conditional Values).
Here is an example of the cngoto opcode. Play cngoto.csd
Example 151. Example of the cngoto opcode.
See the sections Real-time Audio and Command Line Flags for more information on using command line flags.
<CsoundSynthesizer> <CsOptions> ; Audio out Audio in -odac -iadc ;;;RT audio I/O ; -o cngoto.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; Initialize the global variables. sr = 44100 ksmps = 10 nchnls = 1 ; Instrument #1. instr 1 ; Change kval linearly from 0 to 2 over ; the period set by the third p-field. kval line 0, p3, 2 ; If kval *is not* greater than or equal to 1 then play ; the high note. Otherwise, play the low note. cngoto (kval >= 1), highnote kgoto lownote highnote: kfreq = 880 goto playit lownote: kfreq = 440 goto playit playit: ; Print the values of kval and kfreq. printks "kval = %f, kfreq = %f\\n", 1, kval, kfreq a1 oscil 10000, kfreq, 1 out a1 endin </CsInstruments> <CsScore> ; Table: a simple sine wave. f 1 0 32768 10 1 ; Play Instrument #1 for two seconds. i 1 0 2 e </CsScore> </CsoundSynthesizer>
Its output should include lines like:
kval = 0.000000, kfreq = 880.000000 kval = 0.999732, kfreq = 880.000000 kval = 1.999639, kfreq = 440.000000