minabsaccum
Prev | Orchestra Opcodes and Operators | Next

## minabsaccum

minabsaccum — Accumulates the minimum of the absolute values of audio signals.

## Description

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

## Syntax

    minabsaccum aAccumulator, aInput

## Performance

aAccumulator -- audio variable to store the minimum value

aInput -- signal that aAccumulator is compared to

The minabsaccum opcode is designed to accumulate the minimum 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 minabs opcode. minabsaccum is identical to minaccum 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 minabsaccum keeps the minimum absolute value instead of adding the signals together. minabsaccum 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 some large enough positive value that will always be greater than the input signals to which it is compared.

## Examples

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

Example 512. Example of the minabsaccum 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 minabsaccum.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
          minabsaccum  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

    i 1 0 7 330
    i 2 3 3 440

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

    i 10 0 6	;accumulation note stops after 6 seconds

    e
    </CsScore>
    </CsoundSynthesizer>

## See Also

maxabsaccum, maxaccum, minaccum, max, min, maxabs, minabs, vincr

## Credits

Author: Anthony Kozar
March 2006

New in Csound version 5.01

Prev | Up | Next
minabs | Home | minaccum