chnget — Reads data from the software bus.
Reads data from a channel of the inward named software bus. Implies declaring the channel with imode=1 (see also chn_k, chn_a, and chn_S).
Sname -- a string that identifies a channel of the named software bus to read.
ival -- the control value read at i-time.
Sval -- the string value read at i-time.
kval -- the control value read at performance time.
aval -- the audio signal read at performance time.
The example shows the software bus being used as an asynchronous control signal to select a filter cutoff. It assumes that an external program that has access to the API is feeding the values.
sr = 44100 kr = 100 ksmps = 1 instr 1 kc chnget "cutoff" a1 oscil p4, p5, 100 a2 lowpass2 a1, kc, 200 out a2 endin
Here is another example of the chnget opcode. It uses the file chnget.csd.
Example 113. Example of the chnget 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 chnget.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>