Skip to content

vincr

Increments one audio variable with another signal, i.e. it accumulates output.

Syntax

vincr accum, aincr

Performance

accum -- audio-rate accumulator variable to be incremented

aincr -- incrementing signal

vincr (variable increment) and clear are intended to be used together. vincr stores the result of the sum of two audio variables into the first variable itself (which is intended to be used as an accumulator in polyphony). The accumulator is typically a global variable that is used to combine signals from several sources (different instruments or instrument instances) for further processing (for example, via a global effect that reads the accumulator) or for outputting the combined signal by some means other than one of the out opcodes (eg. via the fout opcode). After the accumulator is used, the accumulator variable should be set to zero by means of the clear opcode (or it will explode).

Examples

The following example uses the vincr opcode. It uses the file vincr.csd.

Example of the vincr opcode.
<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac     ;;;realtime audio out
;-iadc    ;;;uncomment -iadc if RT audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o vincr.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

gaReverb init 0

instr 1

idur    = p3
kpitch  = p4
a1      diskin2 "fox.wav", kpitch
a1      = a1*.5                 ;reduce volume
        vincr   gaReverb, a1
endin

instr 99 ; global reverb                
al, ar  reverbsc gaReverb, gaReverb, .8, 10000
        outs    gaReverb+al, gaReverb+ar
        clear   gaReverb
endin

</CsInstruments>
<CsScore>

i1  0 3 1
i99 0 5
e

</CsScore>
</CsoundSynthesizer>

This is another example uses the vincr opcode. It uses the file vincr-complex.csd.

<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac     ;;;realtime audio out
;-iadc    ;;;uncomment -iadc if RT audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o vincr-complex.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

gaReverbSend init 0

instr 1

iamp   = p4
ifreq  = p5
aenv   linseg  0.0, 0.1*p3, iamp, 0.6*p3, iamp, 0.3*p3, 0.0
aosc   poscil aenv, ifreq, 1
       vincr   gaReverbSend, aosc
endin


instr 2 ; global reverb instrument

al, ar reverbsc gaReverbSend, gaReverbSend, 0.85, 12000
       outs     gaReverbSend+al, gaReverbSend+ar
       clear    gaReverbSend
endin

</CsInstruments>
<CsScore>
f1 0 4096 10 1

{ 4 CNT
  { 8 PARTIAL
      ;   start time     duration            amplitude          frequency     
      i1  [0.5 * $CNT.]  [1 + ($CNT * 0.2)]  [.04 + (~ * .02)]  [800 + (200 * $CNT.) + ($PARTIAL. * 20)]
  }
}

i2 0 6
e
</CsScore>
</CsoundSynthesizer>

See also

File Input and Output

Comparators and Accumulators

Credits

Author: Gabriel Maldonado
Italy
1999

New in Csound version 3.56