Skip to content

maxaccum

Accumulates the maximum value of audio signals.

maxaccum compares two audio-rate variables and stores the maximum value between them into the first.

Syntax

maxaccum aAccumulator, aInput

Performance

aAccumulator -- audio variable to store the maximum value

aInput -- signal that aAccumulator is compared to

The maxaccum opcode is designed to accumulate the maximum value from among many audio signals that may be in different note instances, different channels, or otherwise cannot all be compared at once using the max opcode. Its semantics are similar to vincr since aAccumulator is used as both an input and an output variable, except that maxaccum keeps the maximum value instead of adding the signals together. maxaccum performs the following operation on each pair of samples:

if  (aInput > aAccumulator)  aAccumulator = aInput

aAccumulator will usually be a global audio variable. At the end of any given computation cycle (k-period), after its value is read and used in some way, the accumulator variable should usually be reset to zero (perhaps by using the clear opcode). Care must be taken however if aInput is negative at any point, in which case the accumulator should be initialized and reset to some large enough negative value that will always be less than the input signals to which it is compared.

Examples

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

Example of the maxabs 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 maxaccum.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

instr 1 ;saw

asig  vco2 .2, p4               
      outs  asig, asig                          
gasaw = asig
endin

instr 2 ;sine

aout  poscil .3, p4, 1          
      outs  aout, aout                          
gasin = aout
endin

instr 10        

accum init 0    
      maxaccum accum, gasaw + gasin     ;saw and sine accumulated
      outs  accum, accum                

clear accum
endin

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

i 1 0 7 330
i 2 3 3 440

i 1 10 7 330    ;same notes but without maxaccum, for comparison
i 2 13 3 440

i 10 0 6        ;accumulation note stops after 6 seconds

e

</CsScore>
</CsoundSynthesizer>

See also

Comparators and Accumulators

Credits

Author: Anthony Kozar
March 2006

New in Csound version 5.01