The Karplus-Strong Algorithm

The simulation diagram for the ideal string with the simplest frequency-dependent loss filter is shown in Fig. 9.1. Readers of the computer music literature will recognize this as the structure of the Karplus-Strong algorithm [236,207,489].

Figure 9.1: Rigidly terminated string with the simplest frequency-dependent loss filter. All $ N$ loss factors (possibly including losses due to yielding terminations) have been consolidated at a single point and replaced by a one-zero filter approximation.
\includegraphics[width=\twidth]{eps/fkarplusstrong}

The Karplus-Strong algorithm, per se, is obtained when the delay-line initial conditions used to ``pluck'' the string consist of random numbers, or ``white noise.'' We know the initial shape of the string is obtained by adding the upper and lower delay lines of Fig. 6.11, i.e., $ y(t_n,x_m) = y^{+}(n-m) +
y^{-}(n+m)$. It is shown in §C.7.4 that the initial velocity distribution along the string is determined by the difference between the upper and lower delay lines. Thus, in the Karplus-Strong algorithm, the string is ``plucked'' by a random initial displacement and initial velocity distribution. This is a very energetic excitation, and usually in practice the white noise is lowpass filtered; the lowpass cut-off frequency gives an effective dynamic level control since natural stringed instruments are typically brighter at louder dynamic levels [428,207].

Karplus-Strong sound examples are available on the Web.

An implementation of the Karplus-Strong algorithm in the Faust programming language is described (and provided) in [454].


Next Section:
The Extended Karplus-Strong Algorithm
Previous Section:
One-Zero Loop Filter