ckgoto
Prev | Orchestra Opcodes and Operators | Next

## ckgoto

ckgoto — Conditionally transfer control during the p-time passes.

## Description

During the p-time passes only, conditionally transfer control to the statement labeled by label.

## Syntax

    ckgoto 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).

## Examples

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

Example 142. Example of the ckgoto 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
    ; Audio out   Audio in    No messages
    -odac           -iadc     -d     ;;;RT audio I/O
    ; For Non-realtime ouput leave only the line below:
    ; -o ckgoto.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

    ; 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 greater than or equal to 1 then play the high note.
      ; If not then play the low note.
      ckgoto (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 = 440.000000
    kval = 0.999732, kfreq = 440.000000
    kval = 1.999639, kfreq = 880.000000

## See Also

cggoto, cigoto, cngoto, goto, if, igoto, tigoto, timout

## Credits

Example written by Kevin Conder.

Prev | Up | Next
cigoto | Home | clear