A linearly interpolated delay line is depicted in Fig.4.1. In
contrast to Eq.(4.1), we interpolate linearly between times
and
, and
is called the *fractional delay* in
samples. The first-order (linear-interpolating) filter following the
delay line in Fig.4.1 may be called a *fractional delay
filter* [269]. Equation (4.1), on the other hand, expresses the more
general case of an *interpolated table lookup*, where
is
regarded as a table of samples and
is regarded as an
interpolated table-lookup based on the samples stored at indices
and
.

The difference between a fractional delay filter and an interpolated
table lookup is that table-lookups can ``jump around,'' while
fractional delay filters receive a *sequential* stream of input
samples and produce a corresponding sequential stream of interpolated
output values. As a result of this sequential access, fractional
delay filters may be *recursive* IIR digital filters (provided
the desired delay does not change too rapidly over time). In
contrast, ``random-access'' interpolated table lookups are typically
implemented using weighted linear combinations, making them equivalent
to nonrecursive FIR filters in the sequential case.^{5.1}

The `C++` class implementing a linearly interpolated delay line in the
Synthesis Tool Kit (`STK`) is called `DelayL`.

The frequency response of linear interpolation for fixed fractional delay ( fixed in Fig.4.1) is shown in Fig.4.2. From inspection of Fig.4.1, we see that linear interpolation is a one-zero FIR filter. When used to provide a fixed fractional delay, the filter is linear and time-invariant (LTI). When the fractional delay changes over time, it is a linear time-varying filter.

Linear interpolation sounds best when the signal is
*oversampled*. Since natural audio spectra tend to be relatively
concentrated at low frequencies, linear interpolation tends to sound
very good at high sampling rates.

When interpolation occurs inside a *feedback loop*, such as in
digital waveguide models for vibrating strings (see
Chapter 6), errors in the amplitude response can be highly
audible (particularly when the loop gain is close to 1, as it is for
steel strings, for example). In these cases, it is possible to
eliminate amplitude error (at some cost in delay error) by using an
*allpass filter* for delay-line interpolation.

[How to cite this work] [Order a printed hardcopy] [Comment on this page via email]

Copyright ©

Center for Computer Research in Music and Acoustics (CCRMA), Stanford University