Skip to content

integ

Modify a signal by integration.

Syntax

ares = integ(asig [, iskip])
kres = integ(ksig [, iskip])
ares integ asig [, iskip]
kres integ ksig [, iskip]

Initialization

iskip (optional, default=0) -- zero clears the running sum at initialization. A non-zero value keeps the previous sum.

Performance

integ keeps a running sum. At audio rate, it adds each input sample and outputs the new total. At control rate, it does the same once per control cycle. It does not divide the input by sr or kr, so a constant input produces a ramp whose slope depends on that rate.

Low-frequency signals receive more gain than high-frequency signals. Any DC component accumulates, so the output can keep growing.

integ and diff reverse each other's operations in exact arithmetic. Rounding can prevent exact reconstruction of the input.

Examples

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

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

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

instr 1

asig diskin2 "fox.wav", 1
     outs asig, asig

endin

instr 2 ; with diff

asig diskin2 "fox.wav", 1
ares diff asig
     outs ares, ares

endin

instr 3 ; with integ

asig diskin2 "fox.wav", 1
aint integ asig
aint = aint*.05                 ;way too loud
     outs aint, aint

endin

instr 4 ; with diff and integ

asig diskin2 "fox.wav", 1
ares diff asig
aint integ ares
     outs aint, aint

endin

</CsInstruments>
<CsScore>

i 1 0 1
i 2 1 1
i 3 2 1
i 4 3 1

e

</CsScore>
</CsoundSynthesizer>

See also

Sample Level Operators