|
|
|
|
ar deltapx adel, iwsize
deltapxw asig, adel, iwsize
These units read from (deltapx) and write to (deltapxw) a <strong>delayr/delayw delay line using higher quality interpolation than other delay units.
iwsize – interpolation window size in samples. Allowable values are integer multiplies of 4 in the range 4 to 1024. When iwsize = 4, cubic interpolation is used. Increasing iwsize improves sound quality at the expense of CPU usage, and minimum delay time (See Example 1, below).
Note: Window sizes for opcodes other than deltapx are:
adel – delay time in seconds
asig – input signal to be delayed
deltapxw adds the input signal to the delay line at adel seconds. This opcode can be mixed with delay line read units (deltap, deltapn, deltapi, deltap3, and deltapx) in any order. The actual delay time is the difference between the read and write times.
Example 1. For calculation of delay times:
a1 delayr idlr
deltapxw a2, adl1, iws1
a3 deltapx adl2, iws2
deltapxw a4, adl3, iws3
delayw a5
Calculation of minimum and maximum delay times for Example 1 are as follows:
Delay line length:
idlr >= 1/kr
Write before read:
adl1 >= (iws1/2)/sr
Write before read, allowing shorter delays:
adl1 <= idlr - (1 + iws1/2)/sr
Read times:
adl2 >= 1/kr + (iws2/2)/sr
adl2 <= idlr - (1 + iws2/2)/sr
adl2 >= adl1 + (iws1 + iws2) / (2*sr)
adl2 >= 1/kr + adl3 + (iws2 + iws3) / (2*sr)
Write after read:
adl3 >= (iws3/2)/sr
Write after read, allowing feedback:
adl3 <= idlr - (1 + iws3/2)/sr
Example 2
a1 phasor 300.0
a1 = a1 - 0.5
a_ delayr 1.0
adel phasor 4.0
adel = sin (2.0 * 3.14159265 * adel) * 0.01 + 0.2
deltapxw a1, adel, 32
adel phasor 2.0
adel = sin (2.0 * 3.14159265 * adel) * 0.01 + 0.2
deltapxw a1, adel, 32
adel = 0.3
a2 deltapx adel, 32
a1 = 0
delayw a1
out a2 * 20000.0
Istvan Varga
August 2001
New in Csound 4.13
|
|
|
|