A favorite use of variable delay lines is to alter the pitch of an incoming sound using the Doppler effect. It may be desirable to alter the pitch in a variable way (either randomly or periodically, for example), or alternatively, to maintain a fixed musical interval of transposition over a length of time.
Returning to Figure 7.17, we see that, using a single variable delay line, we can maintain any desired pitch shift for a limited interval of time, but if we wish to sustain a fixed transposition we will always eventually land outside the diagonal strip of admissible delay times. In the simplest scenario, we simply vary the transposition up and down so as to remain in the strip.
![]() |
This works, for example, if we wish to apply
vibrato to a sound as shown in figure 7.19.
Here the delay function is
![]() |
Suppose, on the other hand, that we wish to maintain a constant transposition over a longer interval of time. In this case we caon't maintain the transposition forever, but it is still possible to maintain it over fixed intervals of time broken by discontinuous changes, as shown in Figure 7.20.
The delay time is the output of a suitably normalized sawtooth function, and the output of the variable delay line is enveloped as suggested in the figure to avoid discontinuities.
![]() |
This is accomplished as shown in Figure7.21. The output of the sawtooth generator is used
in two ways. First it is adjusted to run batween the bounds
and
, and this
adjusted sawtooth controls the delay time, in samples. The initial
delay
should be at least enough to make the
variable delay feasible; for four-point interpolation this must be
at least one sample. Larger values of
add a
constant, additional delay to the output; this is usually offered
as a control in a pitch shifter since it is essentially free. The
quantity
is sometimes called the window size.
The sawtooth output is also used to envelope the output in exatly the same way as in the enveloped wavetable sampler of Figure 2.7. The envelope is zero at the points where the sawtooth wraps around, and in between, rises smoothly to a maximum value of 1 (for unit gain).
If the frequency of the sawtooth wave is
(in cycles per second), then its value
sweeps from 0 to 1 every
samples (where
is the sample rate). The difference between successive
samples is thus
. If we let
denote the output of the sawtooth oscillator, then
![]() |
The pitch shifter can transpose either upward
(using negative sawtooth frequencies, as in the figure) or
downward, using positive ones. Pitch shift is usuappy controlled by
changing
with
fixed. To get a
desired transposition interval
, set
Although the frequency may be changed at will,
even discontinuously,
must be handled more
carefully. The most common choice is to mute the output while
changing
discontinuously; alternatively,
may be ramped continuously but this causes hard-to-predict
Doppler shifts.
The choice of envelope is usually one half cycle of a sinusoid. If we assume on average that the two delay outputs have neither positive nor negative correlation, the signal power from the two delay lines, after enveloping, will add to a constant (since the sum of squares of the two envelopes is one).
Many variations exist on this pitch shifting algorithm. One widely used variant is to use a single delay line, with no enveloping at all. In this situation it is necessary to choose the point at which the delay time jumps, and the point it jumps to, so that the output stays continuous. For example, one could wait for the output signal to pass through zero (a ``zero crossing") and jump discontinuously to another one. Using only one delay line has the advantage that the signal output sounds more ``present". A disadvantage is that, since the delay time is a function of input signal value, the output is no longer a linear function of the input.