A delay line interpolated by a first-order allpass filter is drawn in Fig.4.3.
Intuitively, ramping the coefficients of the allpass gradually ``grows'' or ``hides'' one sample of delay. This tells us how to handle resets when crossing sample boundaries.
The difference equation is
Thus, like linear interpolation, first-order allpass interpolation requires only one multiply and two adds per sample of output.
The transfer function is
Figure 4.4 shows the phase delay of the first-order digital allpass filter for a variety of desired delays at dc. Since the amplitude response of any allpass is 1 at all frequencies, there is no need to plot it.
The first-order allpass interpolator is generally controlled by
setting its dc delay to the desired delay. Thus, for a given desired
delay
, the allpass coefficient is (from
Eq.(4.3))
From Eq.(4.2), we see that the allpass filter's pole is at
Note that, unlike linear interpolation, allpass interpolation is not suitable for ``random access'' interpolation in which interpolated values may be requested at any arbitrary time in isolation. This is because the allpass is recursive so that it must run for enough samples to reach steady state. However, when the impulse response is reasonably short, as it is for delays near one sample, it can in fact be used in ``random access mode'' by giving it enough samples with which to work.
The STK class implementing allpass-interpolated delay is DelayA.