The Extended Karplus-Strong Algorithm

Figure 9.2 shows a block diagram of the Extended Karplus-Strong (EKS) algorithm [207].

Figure 9.2: Extended Karplus-Strong (EKS) algorithm.
\includegraphics[width=\twidth]{eps/eks}

The EKS adds the following features to the KS algorithm:

\begin{eqnarray*}
H_p(z) &=& \frac{1-p}{1 - p\,z^{-1}}\eqsp \mbox{pick-direction...
...1-R_L}{1 - R_L\,z^{-1}}\eqsp \mbox{dynamic-level lowpass filter}
\end{eqnarray*}

where

\begin{eqnarray*}
N &=& \mbox{pitch period ($2\times$\ string length) in samples...
...e^{j\omega T})\right\vert &\le& 1 \mbox{ required for stability}
\end{eqnarray*}

Note that while $ \eta\in[0,1)$ can be used in the tuning allpass, it is better to offset it to $ [\epsilon,1+\epsilon)$ to avoid delays close to zero in the tuning allpass. (A zero delay is obtained by a pole-zero cancellation on the unit circle.) First-order allpass interpolation of delay lines was discussed in §4.1.2.

A history of the Karplus-Strong algorithm and its extensions is given in §A.8. EKS sound examples are also available on the Web. Techniques for designing the string-damping filter $ H_d(z)$ and/or the string-stiffness allpass filter $ H_s(z)$ are summarized below in §6.11.

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


Next Section:
Nonlinear Distortion
Previous Section:
The Karplus-Strong Algorithm