Skip to content

vaget

Access values of the current buffer of an a-rate variable by indexing.

Useful for doing sample-by-sample manipulation at k-rate without using setksmps 1.

📝 Note

Because this opcode does not do any bounds checking, the user must be careful not to try to read values past ksmps (the size of a buffer for an a-rate variable) by using index values greater than ksmps.

📝 Note

In Csound6 this opcode does do bounds checking.

Syntax

kval vaget kndx, avar

Performance

kval - value read from avar

kndx - index of the sample to read from the current buffer of the given avar variable

avar - a-rate variable to read from

Examples

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

Example of the vaget opcode.
<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 avarget.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
sr=44100
ksmps=16
nchnls=2

        instr 1 ; Sqrt Signal
ifreq = (p4 > 15 ? p4 : cpspch(p4))
iamp = ampdb(p5)

aout init 0
ksampnum init 0

kenv    linseg 0, p3 * .5, 1, p3 * .5, 0

aout1   vco2    1, ifreq
aout2   vco2    .5, ifreq * 2
aout3   vco2    .2, ifreq * 4

aout    sum     aout1, aout2, aout3

;Take Sqrt of signal, checking for negatives
kcount = 0

loopStart:

        kval vaget kcount,aout

        if (kval > .0) then
                kval = sqrt(kval)
        elseif (kval < 0) then
                kval = sqrt(-kval) * -1
        else
                kval = 0
        endif

        vaset kval, kcount,aout

loop_lt kcount, 1, ksmps, loopStart

aout = aout * kenv

aout    moogladder aout, 8000, .1

aout = aout * iamp

outs aout, aout
        endin

</CsInstruments>

<CsScore>

i1      0.0     2 440 80
e

</CsScore>

</CsoundSynthesizer>

See also

Sample Level Operators

Credits

Author: Steven Yi

New in version 5.04

September 2006.