cngoto condition, label
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).
Here is an example of the cngoto opcode. It uses the files cngoto.orc and cngoto.sco.
Example 15-1. Example of the cngoto opcode.
/* cngoto.orc */
; Initialize the global variables.
sr = 44100
kr = 4410
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
/* cngoto.orc */
/* cngoto.sco */
; Table: a simple sine wave.
f 1 0 32768 10 1
; Play Instrument #1 for two seconds.
i 1 0 2
e
/* cngoto.sco */
kval = 0.000000, kfreq = 880.000000 kval = 0.999732, kfreq = 880.000000 kval = 1.999639, kfreq = 440.000000