maxabsaccum

maxabsaccum — Accumulates the maximum of the absolute values of audio signals.

Description

maxabsaccum compares two audio-rate variables and stores the maximum of their absolute values into the first.

Syntax

maxabsaccum aAccumulator, aInput

Performance

aAccumulator -- audio variable to store the maximum value

aInput -- signal that aAccumulator is compared to

The maxabsaccum 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 maxabs opcode. maxabsaccum is identical to maxaccum except that it takes the absolute value of aInput before the comparison. Its semantics are similar to vincr since aAccumulator is used as both an input and an output variable, except that maxabsaccum keeps the maximum absolute value instead of adding the signals together. maxabsaccum performs the following operation on each pair of samples:


            if  (abs(aInput) > aAccumulator)  aAccumulator = abs(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). Clearing to zero is sufficient for maxabsaccum, unlike the maxaccum opcode.

Examples

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

Example 578. Example of the maxabsaccum opcode.

See the sections Real-time Audio and Command Line Flags for more information on using command line flags.

<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 maxabsaccum.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	
      maxabsaccum  accum, gasaw + gasin		;saw and sine accumulated	
accum dcblock2 accum				;get rid of DC
      outs accum, accum	
     		
clear accum
endin

</CsInstruments>
<CsScore>
f 1 0 4096 10 1	;sine wave	

i 1 0 7 330
i 2 3 3 440

i 1 10 7 330	;same notes but without maxabsaccum, 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