dconv
Prev | Orchestra Opcodes and Operators | Next

## dconv

dconv — A direct convolution opcode.

## Description

A direct convolution opcode.

## Syntax

    ares dconv asig, isize, ifn

## Initialization

isize -- the size of the convolution buffer to use. if the buffer size is smaller than the size of ifn, then only the first isize values will be used from the table.

ifn -- table number of a stored function containing the impulse response for convolution.

## Performance

Rather than the analysis/resynthesis method of the convolve opcode, dconv uses direct convolution to create the result. For small tables it can do this quite efficiently, however larger table require much more time to run. dconv does (isize * ksmps) multiplies on every k-cycle. Therefore, reverb and delay effects are best done with other opcodes (unless the times are short).

dconv was designed to be used with time varying tables to facilitate new realtime filtering capabilities.

## Examples

Here is an example of the dconv opcode. It uses the files dconv.orc and dconv.sco.

Example 93. Example of the dconv opcode.

    /* dconv.orc */
    sr = 44100
    kr = 4410
    ksmps = 10
    nchnls = 1

    #define RANDI(A) #kout  randi   1, kfq, $A*.001+iseed, 1
            tablew  kout, $A, itable#

    instr 1
    itable  init    1
    iseed   init    .6
    isize   init    ftlen(itable)
    kfq     line    1, p3, 10

    $RANDI(0)
    $RANDI(1)
    $RANDI(2)
    $RANDI(3)
    $RANDI(4)
    $RANDI(5)
    $RANDI(6)
    $RANDI(7)
    $RANDI(8)
    $RANDI(9)
    $RANDI(10)
    $RANDI(11)
    $RANDI(12)
    $RANDI(13)
    $RANDI(14)
    $RANDI(15)

    asig    rand    10000, .5, 1
    asig    butlp   asig, 5000
    asig    dconv   asig, isize, itable

            out     asig *.5
    endin
    /* dconv.orc */

    /* dconv.sco */
    f1 0 16 10 1
    i1 0 10
    e
    /* dconv.sco */

## Credits

Author: William “Pete” Moss
2001

New in version 4.12

Prev | Up | Next
dcblock | Home | delay