Next  |  Prev  |  Up  |  Top  |  Index  |  JOS Index  |  JOS Pubs  |  JOS Home  |  Search


The Extended Karplus-Strong Algorithm

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

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 lowpass filter}\\ [5pt]
H_\beta(z) &=& 1 - z^{-\lfloor\beta N+1/2\rfloor}\eqsp \mbox{pick-position comb filter, $\beta\in(0,1)$}\\ [5pt]
H_d(z) &=& \mbox{string-damping filter (one/two poles/zeros typical)}\\ [5pt]
H_s(z) &=& \mbox{string-stiffness allpass filter (several poles and zeros)}\\ [5pt]
H_\eta(z) &=& -\frac{\eta(N)-z^{-1}}{1 - \eta(N)\,z^{-1}}\eqsp \mbox{first-order string-tuning allpass filter}\\ [5pt]
H_L(z) &=& \frac{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}\\
\beta &=& \mbox{normalized pick position} \in (0,1)\\
p &=& \mbox{0 for one pick direction, $0<d<1$\ for opposite direction}\\
R_L &=& e^{-\pi LT}, \mbox{ where $L>$\ is \lq\lq desired bandwidth'' in Hz}\\
T &=& \mbox{Sampling interval (Hz)}\\
\eta &\in& [-1/11,2/3] \mbox{ for tuning-delays in the range $[0.2,1.2]$\ samples}\\
\left\vert H_d(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 [456].


Next  |  Prev  |  Up  |  Top  |  Index  |  JOS Index  |  JOS Pubs  |  JOS Home  |  Search

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

``Physical Audio Signal Processing'', by Julius O. Smith III, W3K Publishing, 2010, ISBN 978-0-9745607-2-4.
Copyright © 2014-03-23 by Julius O. Smith III
Center for Computer Research in Music and Acoustics (CCRMA),   Stanford University
CCRMA