denorm
Prev | Orchestra Opcodes and Operators | Next

## denorm

denorm — Mixes low level noise to a list of a-rate signals

## Description

Mixes low level (~1e-20 for floats, and ~1e-56 for doubles) noise to a list of a-rate signals. Can be used before IIR filters and reverbs to avoid denormalized numbers which may otherwise result in significantly increased CPU usage.

## Syntax

    denorm a1[, a2[, a3[, ... ]]]

## Performance

a1[, a2[, a3[, ... ]]] -- signals to mix noise with

Some processor architectures (particularly Pentium IVs) are very slow at processing extremely small numbers. These small numbers can appear as a result of some decaying feedback process like reverb and IIR filters. Low level noise can be added so that very small numbers are never reached, and they are 'absorbed' by this 'noise floor'.

If CPU usage goes to 100% at the end of reverb tails, or you get audio glitches in processes that shouldn't use too much CPU, using denorm before the culprit opcode or process might solve the problem.

## Examples

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

Example 224. Example of the denorm 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     ;;;RT audio out
    ;-iadc    ;;;uncomment -iadc if RT audio input is needed too
    ; For Non-realtime ouput leave only the line below:
    ; -o denorm.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>
    ; slightly simplified example from Istvan Varga 2006
    sr = 44100
    ksmps = 32
    nchnls = 2
    0dbfs = 1

    garvb init 0

    instr 1

    a1  oscils 0.6, 440, 0
    a2  linsegr 0, 0.005, 1, 3600, 1, 0.08, 0
    a1  =  a1 * a2
        vincr garvb, a1
        outs a1, a1
    endin

    instr 99	;"Always on"

           denorm garvb
    aL, aR reverbsc garvb * 0.5, garvb * 0.5, 0.92, 10000
           clear garvb
           outs aL, aR
    endin

    </CsInstruments>
    <CsScore>

    i 99 0 -1	;held by a negative p3, means "always on"
    i 1 0 0.5
    i 1 4 0.5
    e 8		;8 extra seconds after the performance

    </CsScore>
    </CsoundSynthesizer>

## Credits

Author: Istvan Varga
2005

Prev | Up | Next
deltapxw | Home | diff