dam
Prev | Orchestra Opcodes and Operators | Next

## dam

dam — A dynamic compressor/expander.

## Description

This opcode dynamically modifies a gain value applied to the input sound ain by comparing its power level to a given threshold level. The signal will be compressed/expanded with different factors regarding that it is over or under the threshold.

## Syntax

    ares dam asig, kthreshold, icomp1, icomp2, irtime, iftime

## Initialization

icomp1 -- compression ratio for upper zone.

icomp2 -- compression ratio for lower zone

irtime -- gain rise time in seconds. Time over which the gain factor is allowed to raise of one unit.

iftime -- gain fall time in seconds. Time over which the gain factor is allowed to decrease of one unit.

## Performance

asig -- input signal to be modified

kthreshold -- level of input signal which acts as the threshold. Can be changed at k-time (e.g. for ducking)

Note on the compression factors: A compression ratio of one leaves the sound unchanged. Setting the ratio to a value smaller than one will compress the signal (reduce its volume) while setting the ratio to a value greater than one will expand the signal (augment its volume).

## Examples

Because the results of the dam opcode can be subtle, I recommend looking at them in a graphical audio editor program like audacity. audacity is available for Linux, Windows, and the MacOS and may be downloaded from http://audacity.sourceforge.net.

Here is an example of the dam opcode. It uses the file dam.csd, and drumsMlp.wav.

Example 202. An example of the dam opcode compressing an audio signal.

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 dam.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

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

    instr 1	;normal audio

    asig diskin2 "drumsMlp.wav", 1, 0, 1
         outs asig, asig

    endin

    instr 2	; compressed audio

    kthreshold = 0.2
    icomp1 = 0.8
    icomp2 = 0.2
    irtime = 0.01
    iftime = 0.5
    asig diskin2 "drumsMlp.wav", 1, 0, 1
    asig dam asig, kthreshold, icomp1, icomp2, irtime, iftime
        outs asig, asig
    endin

    </CsInstruments>
    <CsScore>

    i 1 0 2
    i 2 2.5 8.5

    e
    </CsScore>
    </CsoundSynthesizer>

This example compresses the audio file “drumsMlp.wav”. You should hear a drum pattern repeat twice. The second time, the sound should be quieter (compressed) than the first.

Here is another example of the dam opcode. It uses the file dam_expanded.csd, and drumsMlp.wav.

Example 203. An example of the dam opcode expanding an audio signal.

    <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 dam_expanded.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

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

    instr 1

    asig diskin2 "drumsMlp.wav", 1, 0, 1
         outs asig, asig

    endin

    instr 2	;expanded audio

    kthreshold = .5
    icomp1 = 2
    icomp2 = 3
    irtime = 0.01
    iftime = 0.1

    asig diskin2 "drumsMlp.wav", 1, 0, 1
    asig dam asig, kthreshold, icomp1, icomp2, irtime, iftime
         outs asig*.2, asig*.2	;adjust volume of expanded beat

    endin

    </CsInstruments>
    <CsScore>

    i 1 0 2
    i 2 2.5 6.5

    e
    </CsScore>
    </CsoundSynthesizer>

This example expands the audio file “drumsMlp.wav”. You should hear a drum pattern repeat twice. The second time, the sound should be louder (expanded) than the first. To prevent distortion the volume of the signal has been lowered.

## See also

Amplitude Modifiers and Dynamic processing

## Credits

Author: Marc Resibois
Belgium
1997

New in version 3.47

Prev | Up | Next
cuserrnd | Home | date