vdelayxq
Prev | Orchestra Opcodes and Operators | Next

## vdelayxq

vdelayxq — A 4-channel variable delay opcode with high quality interpolation.

## Description

A 4-channel variable delay opcode with high quality interpolation.

## Syntax

    aout1, aout2, aout3, aout4 vdelayxq ain1, ain2, ain3, ain4, adl, imd, iws [, ist]

## Initialization

imd -- max. delay time (seconds)

iws -- interpolation window size (see below)

ist (optional) -- skip initialization if not zero

## Performance

aout1, aout2, aout3, aout4 -- output audio signals.

ain1, ain2, ain3, ain4 -- input audio signals.

adl -- delay time in seconds

This opcode uses high quality (and slow) interpolation, that is much more accurate than the currently available linear and cubic interpolation. The iws parameter sets the number of input samples used for calculating one output sample (allowed values are any integer multiply of 4 in the range 4 - 1024); higher values mean better quality and slower speed.

The multichannel opcodes (eg. vdelayxq) allow delaying 2 or 4 variables at once (stereo or quad signals); this is much more efficient than using separate opcodes for each channel.

| Notes
Delay time is measured in seconds (unlike in vdelay and vdelay3), and must be a-rate. The minimum allowed delay is iws/2 samples. Using the same variables as input and output is allowed in these opcodes. In vdelayxw*, changing the delay time has some effects on output volume: a = 1 / (1 + dt) where a is the output gain, and dt is the change of delay time per seconds. These opcodes are best used in the double-precision version of Csound.

## Examples

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

Example 1070. Example of the vdelayxq 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 vdelayxq.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

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

    instr 1

    ims   =	.5						;maximum delay time in seconds
    iws   =	1024						;window size
    adl   =	.5
    aout1  diskin2 "beats.wav", 1, 0, 1			;loop beats.wav
    aout2  diskin2 "fox.wav", 1, 0, 1			;loop fox.wav
    aout3  diskin2 "Church.wav", 1, 0, 1			;loop Church.wav
    aout4  diskin2 "flute.aiff", 1, 0, 1			;loop flute.aiff
    a2    poscil .1, .5, 1					;make an LFO, 1 cycle per 2 seconds
    adl   = a2 + ims/2      				;offset the LFO so that it is positive
    aout1, aout2, aout3, aout4 vdelayxq aout1, aout2, aout3, aout4, adl, ims, iws; Use the LFO to control delay time
          outq aout1, aout2, aout3, aout4

    endin
    </CsInstruments>
    <CsScore>
    f1 0 8192 10 1

    i 1 0 10

    e
    </CsScore>
    </CsoundSynthesizer>

Two important points here. First, the delay time must be always positive. And second, even though the delay time can be controlled in k-rate, it is not advised to do so, since sudden time changes will create clicks.

## See Also

vdelayx, vdelayxs, vdelayxw, vdelayxwq, vdelayxws

Prev | Up | Next
vdelayx | Home | vdelayxs