### Time-Varying Delay-Line Reads

If denotes the input to a time-varying delay, the output can be written as

*bandlimited interpolation*(see §4.4) or other techniques for implementation of

*fractional delay*[267,383].

Let's analyze the frequency shift caused by a time-varying delay by setting to a complex sinusoid at frequency :

where denotes the output frequency, and denotes the time derivative of the delay . Thus,

*the delay growth-rate*, , equals the

*relative frequency downshift*:

Comparing Eq.(5.6) to Eq.(5.2), we find that the
time-varying delay most naturally simulates Doppler shift caused by a
*moving listener*, with

That is, the delay growth-rate, , should be set to the speed of the listener

*away*from the source, normalized by sound speed .

Simulating *source* motion is also possible, but the relation
between delay change and desired frequency shift is more complex, *viz.*,
from Eq.(5.2) and Eq.(5.6),

*input*instead of its output.

The time-varying delay line was described in §5.1. As
discussed there, to implement a *continuously* varying delay, we
add a ``delay growth parameter'' `g` to the `delayline`
function in Fig.5.1, and change the line

rptr += 1; // pointer updateto

rptr += 1 - g; // pointer updateWhen

`g`is 0, we have a fixed delay line, corresponding to in Eq.(5.6). When , the delay grows samples per sample, which we may also interpret as seconds per second,

*i.e.*, . By Eq.(5.7), we see that we need

Note that when the read- and write-pointers are driven directly from a
model of physical propagation-path geometry, they are always separated
by predictable minimum and maximum delay intervals. This implies it
is unnecessary to worry about the read-pointer *passing* the
write-pointers or vice versa. In generic *frequency shifters*
[275], or in a Doppler simulator not driven by a changing
geometry, a pointer cross-fade scheme may be necessary when the read-
and write-pointers get too close to each other.

**Next Section:**

Multiple Read Pointers

**Previous Section:**

Doppler Simulation via Delay Lines