chnset
Prev | Orchestra Opcodes and Operators | Next

## chnset

chnset — Writes data to the named software bus.

## Description

Write to a channel of the named software bus. Implies declaring the channel with imod=2 (see also chn_k, chn_a, and chn_S).

## Syntax

    chnset ival, Sname

    chnset kval, Sname

    chnset aval, Sname

    chnset Sval, Sname

    chnsetks Sval, Sname

    chnseti ival[], []Sname

    chnsetk kval[], []Sname

    chnseta aval[], []Sname

    chnsets Sval[], []Sname

## Initialization

Sname -- a string that indicates which named channel of the software bus to write.

Sname[] -- an array of string that indicates which named channels of the software bus to write to.

ival -- the control value to write at i-time.

ival[] -- an array of control values to write at i-time.

Sval -- the string value to write at i-time.

Sval[] -- an array of string values to write at i-time.

## Performance

kval -- the control value to write at performance time.

aval -- the audio signal to write at performance time.

Sval -- the string value to write at perf-time. The opcode chnset with strings works at both i- and perf-time, whereas chnsetks works only a perf-time. Channel contents are only updated if the string variable is modified.

kval[] -- an array of control values to write at performance time.

aval[] -- an array of audio vectors to write at performance time.

| Note
Although it is possible to loop through channel names from an array with chnget and chnset, using the array based channel opcodes is more efficient.

## Example

The example shows the software bus being used to write pitch information to a controlling program.

            sr = 44100
            kr = 100
            ksmps = 1

            instr   1
               a1    in
               kp,ka pitchamdf a1
                     chnset    kp, "pitch"
            endin

Here is another example of the chnset opcode. It uses the file chnset.csd.

Example 135. Example of the chnset opcode.

    <CsoundSynthesizer>
    <CsOptions>
    ; Select audio/midi flags here according to platform
    -odac     ;;;realtime audio out
    ;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
    ; For Non-realtime ouput leave only the line below:
    ; -o chnset.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>
    ;Example by Joachim Heintz
    sr = 44100
    ksmps = 32
    nchnls = 2
    0dbfs = 1

      instr 1; send i-values
              chnset    1, "sio"
              chnset    -1, "non"
      endin

      instr 2; send k-values
    kfreq     randomi   100, 300, 1
              chnset    kfreq, "cntrfreq"
    kbw       =         kfreq/10
              chnset    kbw, "bandw"
      endin

      instr 3; send a-values
    anois     rand      .1
              chnset    anois, "noise"
     loop:
    idur      random    .3, 1.5
              timout    0, idur, do
              reinit    loop
     do:
    ifreq     random    400, 1200
    iamp      random    .1, .3
    asig      oscils    iamp, ifreq, 0
    aenv      transeg   1, idur, -10, 0
    asine     =         asig * aenv
              chnset    asine, "sine"
      endin

      instr 11; receive some chn values and send again
    ival1     chnget    "sio"
    ival2     chnget    "non"
              print     ival1, ival2
    kcntfreq  chnget    "cntrfreq"
    kbandw    chnget    "bandw"
    anoise    chnget    "noise"
    afilt     reson     anoise, kcntfreq, kbandw
    afilt     balance   afilt, anoise
              chnset    afilt, "filtered"
      endin

      instr 12; mix the two audio signals
    amix1     chnget     "sine"
    amix2     chnget     "filtered"
              chnmix     amix1, "mix"
              chnmix     amix2, "mix"
      endin

      instr 20; receive and reverb
    amix      chnget     "mix"
    aL, aR    freeverb   amix, amix, .8, .5
              outs       aL, aR
      endin

      instr 100; clear
              chnclear   "mix"
      endin

    </CsInstruments>
    <CsScore>
    i 1 0 20
    i 2 0 20
    i 3 0 20
    i 11 0 20
    i 12 0 20
    i 20 0 20
    i 100 0 20
    </CsScore>
    </CsoundSynthesizer>

## Credits

Author: Istvan Varga
2005
Array based channel opcodes added in version 6.14 - Rory Walsh

Prev | Up | Next
chnparams | Home | chuap