vdelayxws — Variable delay opcodes with high quality interpolation.
imd -- max. delay time (seconds)
iws -- interpolation window size (see below)
ist (optional) -- skip initialization if not zero
ain1, ain2 -- input audio signals
aout1, aout2 -- output audio signals
adl -- delay time in seconds
These opcodes use 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 vdelayxw opcodes change the position of the write tap in the delay line (unlike all other delay ugens that move the read tap), and are most useful for implementing Doppler effects where the position of the listener is fixed, and the sound source is moving.
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 | |
---|---|
|
Here is an example of the use of the vdelayxws opcode. Play vdelayxws.csd
Example 1175. Example of the vdelayxws 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 vdelayxws.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; by Menno Knevel 2022 sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ims = .5 ;maximum delay time in seconds iws = 512 ;window size adl = .5 ;delay time asig1, asig2 diskin2 "drumsSlp.wav", 1, 0, 1 ;loop stereo file drumsSlp.wav a2 poscil .2, .25 ;make an LFO, 4 cycle per 10 seconds adl = a2 + ims/2 ;offset the LFO so that it is positive aoutL, aoutR vdelayxws asig1, asig2, adl, ims, iws ;use the LFO to control delay time outs aoutL * .8, aoutR * .8 endin </CsInstruments> <CsScore> f1 0 8192 10 1 i 1 0 11 e </CsScore> </CsoundSynthesizer>