54

D. Rocchesso: Sound Processing

just noticeable difference

In some architectures dedicated to sound processing, memory organization

is optimized for wavetable synthesis, where a stored waveform is read with vari-

able increments of the reading pointer. In these architectures, a quantity of 2

r

memory locations is available, and from these M = 2

s

locations (with s < r)

are uniformly chosen among the 2

r

available cells. In this case the locations of

the circular buffer are not contiguous, and the update of the pointers is done

with the operations

IN

= (IN + 2

r-s

)%2

r

OUT = (OUT + 2

r-s

)%2

r

.

(5)

In practice, since the addresses are r-bit long, there is no need to compute the

modulo explicitly. It is sufficient to do the sum neglecting any possible overflow.

Of course, the (3) is also replaced by
IN = (OUT + m2

r-s

)%2

r

.

(6)

3.2

Fractional-Length Delay Lines

It might be thought that, choosing a sufficiently high sampling rate, it is always

possible to use delay lines having an integer number of samples. Actually, there

are some good reasons that lead us to state that this is not the case in sound

synthesis and processing.

In sound synthesis, the models have to be carefully tuned without resorting

to very high sample rates. In particular, it is easy to verify that using integer-

length delays in physical models we get errors in fundamental frequencies that

go well beyond the just noticeable difference in pitch
For instance, for a pressure wave propagating in air at normal temperature

conditions, the spatial discretization given by the sampling rate F

s

= 44100Hz

gives intervals of 0.0075m, a distance that can produce well-perceivable pitch

differences in a wind instrument.

Another reason for using fractional delays is that we often want to vary the

delay lengths continuously, in order to reproduce effects such as glissando or

vibrato. The adoption of integer-length delays would produce annoying discon-

tinuities.

The most widely used techniques for implementing fractional delays are in-

terpolation by FIR filters or by allpass filters. These two techniques are, in some

sense, complementary. The choice of one of the two has to be made according

to the peculiarities of the system to be simulated or of the architecture chosen

for the implementation. In any case, a delay of length m is obtained by means

of a delay line whose length is equal to the integer part of m, cascaded with

a block capable to approximate a constant phase delay equal to the fractional

part of m. We recall that the phase delay at a given frequency is the delay in

time samples experienced by the sinusoidal component at frequency . For in-

stance, consider a linear filtering block enclosed in a feedback loop (see sec. 3.4):

the frequency of the k-th resonance f
k

of the whole feedback system is found

1

To figure this out, the reader can consider an m-sample delay line in a feedback loop. It

gives a harmonic series of partials whose fundamental is f

0

=

F

s

m

(see sec. 3.4). The set of
integer delay lengths that give the best approximation to a tempered scale can be found and

the curve of fundamental frequency errors can be drawn.