DSPRelated.com
Free Books

Pluck Modeling

The piano-hammer model of the previous section can also be configured as a plectrum by making the mass and damping small or zero, and by releasing the string when the contact force exceeds some threshold $ f_{\mbox{\tiny max}}$. That is, to a first approximation, a plectrum can be modeled as a spring (linear or nonlinear) that disengages when either it is far from the string or a maximum spring-force is exceeded. To avoid discontinuities when the plectrum and string engage/disengage, it is good to taper both the damping and spring-constant to zero at the point of contact (as shown below).

Starting with the piano-hammer impedance of Eq.$ \,$(9.19) and setting the mass $ m$ to infinity (the plectrum holder is immovable), we define the plectrum impedance as

$\displaystyle R_p(s) \isdefs \mu+\frac{k}{s} \eqsp \frac{\mu s + k}{s}. \protect$ (10.22)

The force-wave reflectance of impedance $ R_p(s)$ in Eq.$ \,$(9.22), as seen from the string, may be computed exactly as in §9.3.1:

$\displaystyle \hat{\rho}_f(s)$ $\displaystyle =$ $\displaystyle \frac{\mbox{Impedance Step}}{\mbox{Impedance Sum}}
\eqsp \frac{[R_p(s)+R]-R}{[R_p(s)+R]+R}
\eqsp \frac{R_p(s)}{R_p(s)+2R}$  
  $\displaystyle =$ $\displaystyle \frac{\mu}{\mu+2R} \cdot
\frac{s+\frac{k}{\mu}}{s+\frac{k}{\mu+2R}}
\protect$ (10.23)

If the spring damping is much greater than twice the string wave impedance ($ \mu\gg 2R$), then the plectrum looks like a rigid termination to the string (force reflectance $ \hat{\rho}_f(s)=1$), which makes physical sense.

Again following §9.3.1, the transmittance for force waves is given by

$\displaystyle \hat{\tau}_f(s) = 1+\hat{\rho}_f(s),
$

and for velocity and displacement waves, the reflectance and transmittance are respectively $ -\hat{\rho}_f(s)$ and $ 1-\hat{\rho}_f(s)$.

If the damping $ \mu $ is set to zero, i.e., if the plectrum is to be modeled as a simple linear spring, then the impedance becomes $ R_k(s) = k/s$, and the force-wave reflectance becomes [128]

$\displaystyle \hat{\rho}_f(s) \eqsp \frac{\frac{k}{2R}}{s+\frac{k}{2R}}. \protect$ (10.24)

Digital Waveguide Plucked-String Model

When plucking a string, it is necessary to detect ``collisions'' between the plectrum and string. Also, more complete plucked-string models will allow the string to ``buzz'' on the frets and ``slap'' against obstacles such as the fingerboard. For these reasons, it is convenient to choose displacement waves for the waveguide string model. The reflection and transmission filters for displacement waves are the same as for velocity, namely, $ \hat{\rho}_y(s) = -\hat{\rho}_f(s)$ and $ \hat{\tau}_y(s) = 1-\hat{\rho}_f(s)$.

As in the mass-string collision case, we obtain the one-filter scattering-junction implementation shown in Fig.9.23. The filter $ \hat{\rho}_f(s)$ may now be digitized using the bilinear transform as previously (§9.3.1).

Figure 9.23: Displacement-wave scattering model for a spring.
\includegraphics{eps/uscat}


Incorporating Control Motion

Let $ y_m(t)$ denote the vertical position of the mass in Fig.9.22. (We still assume $ m=\infty$.) We can think of $ y_m$ as the position of the control point on the plectrum, e.g., the position of the ``pinch-point'' holding the plectrum while plucking the string. In a harpsichord, $ y_m$ can be considered the jack position [347].

Also denote by $ L$ the rest length of the spring $ k$ in Fig.9.22, and let $ y_e \isdeftext y_m+L$ denote the position of the ``end'' of the spring while not in contact with the string. Then the plectrum makes contact with the string when

$\displaystyle y_e(t) \ge y(t)
$

where $ y(t)$ denotes string vertical position at the plucking point $ x_p$. This may be called the collision detection equation.

Let the subscripts $ 1$ and $ 2$ each denote one side of the scattering system, as indicated in Fig.9.23. Then, for example, $ y_1=y_1^-+y_1^+$ is the displacement of the string on the left (side $ 1$) of plucking point, and $ y_2$ is on the right side of $ x_p$ (but still located at point $ x_p$). By continuity of the string, we have

$\displaystyle y(t)\eqsp y_1(t)\eqsp y_2(t).
$

When the spring engages the string ($ y_e > y$) and begins to compress, the upward force on the string at the contact point is given by

$\displaystyle f_k \eqsp k\cdot (y_e-y)
$

where again $ y_e=y_m+L$. The force $ f_k$ is applied given $ y_e\ge y$ (spring is in contact with string) and given $ f_k < f_{\mbox{\tiny max}}$ (the force at which the pluck releases in a simple max-force model).10.15 For $ y_e<
y$ or $ f_k \ge f_{\mbox{\tiny max}}$ the applied force is zero and the entire plucking system disappears to leave $ y_1^- = y_2^-$ and $ y_2^+=y_1^+$, or equivalently, the force reflectance becomes $ \hat{\rho}_f=0$ and the transmittance becomes $ \hat{\tau}_f=1$.

During contact, force equilibrium at the plucking point requires (cf. §9.3.1)

$\displaystyle 0 \eqsp f_1+f_k-f_2 \protect$ (10.25)

where $ f_i \isdeftext -Ky'_i \isdeftext -K\partial y_i/\partial x$ as usual (§6.1), with $ K$ denoting the string tension. Using Ohm's laws for traveling-wave components (p. [*]), we have

$\displaystyle f_i \eqsp f_i^++f_i^-
\eqsp Rv_i^+ - Rv_i^-,
$

where $ R=\sqrt{K\epsilon }$ denotes the string wave impedance (p. [*]). Solving Eq.$ \,$(9.25) for the velocity at the plucking point yields

$\displaystyle v \eqsp v_1^+ + v_2^- + \frac{1}{2R} f_k,
$

or, for displacement waves,

$\displaystyle y \eqsp y_1^+ + y_2^- + \frac{1}{2R} \int_t f_k. \protect$ (10.26)

Substituting $ f_k = k\cdot (y_e-y)$ and taking the Laplace transform yields

$\displaystyle Y(s)
\eqsp Y_1^+(s) + Y_2^-(s) + \frac{1}{2R} \frac{F_k(s)}{s}
\eqsp Y_1^+(s) + Y_2^-(s) + \frac{k}{2Rs}\left[Y_e(s) - Y(s)\right].
$

Solving for $ Y(s)$ and recognizing the force reflectance $ \hat{\rho}_f(s)$ gives

\begin{eqnarray*}
Y(s) &=& \left[1-\hat{\rho}_f(s)\right]\cdot
\left[Y_1^+(s)+Y...
...)\cdot \left\{Y_e(s)
- \left[Y_1^+(s)+Y_2^-(s)\right]\right\},
\end{eqnarray*}

where, as first noted at Eq.$ \,$(9.24) above,

$\displaystyle \hat{\rho}_f(s) \isdefs
\frac{\left(\frac{k}{s}+R\right) - R}{\l...
... \frac{\frac{k}{s}}{2R+\frac{k}{s}}
\eqsp \frac{\frac{k}{2R}}{s+\frac{k}{2R}}.
$

We can thus formulate a one-filter scattering junction as follows:

\begin{eqnarray*}
Y_d^+ &=& Y_e - \left(Y_1^+ + Y_2^-\right)\\ [5pt]
Y_1^- &=& Y...
...\hat{\rho}_f Y_d^+\\ [5pt]
Y_2^+ &=& Y_1^+ + \hat{\rho}_f Y_d^+.
\end{eqnarray*}

This system is diagrammed in Fig.9.24. The manipulation of the minus signs relative to Fig.9.23 makes it convenient for restricting $ y_d^+(t)$ to positive values only (as shown in the figure), corresponding to the plectrum engaging the string going up. This uses the approximation $ y_1(t)=y_2(t)\approx y_1^+(t)+y_2^-(t)$, which is exact when $ \hat{\rho}_f=0$, i.e., when the plectrum does not affect the string displacement at the current time. It is therefore exact at the time of collision and also applicable just after release. Similarly, $ y_d^+(t)>f_{\mbox{\tiny max}}/k$ can be used to trigger a release of the string from the plectrum.

Figure 9.24: Instantaneous spring displacement-wave scattering model driven by the spring edge $ y_e(t)=y_m(t)+L$.
\includegraphics{eps/uscatii}


Successive Pluck Collision Detection

As discussed above, in a simple 1D plucking model, the plectrum comes up and engages the string when $ y_e(t) \ge y(t)$, and above some maximum force the plectrum releases the string. At this point, it is ``above'' the string. To pluck again in the same direction, the collision-detection must be disabled until we again have $ y_e<
y$, requiring one bit of state to keep track of that.10.16 The harpsichord jack plucks the string only in the ``up'' direction due to its asymmetric behavior in the two directions [143]. If only ``up picks'' are supported, then engagement can be suppressed after a release until $ y_e(t)$ comes back down below the envelope of string vibration (e.g., $ y_e(t)<-y_{\mbox{\small max}}$). Note that intermittent disengagements as a plucking cycle begins are normal; there is often an audible ``buzzing'' or ``chattering'' when plucking an already vibrating string.

When plucking up and down in alternation, as in the tremolo technique (common on mandolins), the collision detection alternates between $ y_e<
y$ and $ y_e > y$, and again a bit of state is needed to keep track of which comparison to use.


Plectrum Damping

To include damping $ \mu $ in the plectrum model, the load impedance $ R_p(s)=k/s$ goes back to Eq.$ \,$(9.22):

$\displaystyle R_p(s) = \frac{k}{s}+\mu
$

The corresponding force reflectance is then given by Eq.$ \,$(9.23).


Digitization of the Damped-Spring Plectrum

Applying the bilinear transformation7.3.2) to the reflectance $ \hat{\rho}_f(s)$ in Eq.$ \,$(9.23) (including damping) yields the following first-order digital force-reflectance filter:

$\displaystyle \hat{\rho}_f(z) \;=\; \frac{\mu}{\mu+2R}
\cdot
\frac{
\frac{2}{T...
...z^{-1}}{1 + z^{-1}}
+\frac{K}{\mu+2R}}
\;=\; g\frac{1-\zeta z^{-1}}{1-pz^{-1}}
$

where
$\displaystyle p$ $\displaystyle =$ $\displaystyle \frac{1-\frac{KT}{2(\mu+2R)}}{1+\frac{KT}{2(\mu+2R)}}$   (digital pole)$\displaystyle \protect$ (10.27)
$\displaystyle \zeta$ $\displaystyle =$ $\displaystyle \frac{1-\frac{KT}{2\mu}}{1+\frac{KT}{2\mu}}$   (digital zero)$\displaystyle \protect$ (10.28)
$\displaystyle g$ $\displaystyle =$ $\displaystyle \frac{1-p}{1-\zeta}$   (gain term)$\displaystyle \protect$ (10.29)

The transmittance filter is again $ 1+\hat{\rho}_f(z)$, and there is a one-filter form for the scattering junction as usual.


Feathering

Since the pluck model is linear, the parameters are not signal-dependent. As a result, when the string and spring separate, there is a discontinuous change in the reflection and transmission coefficients. In practice, it is useful to ``feather'' the switch-over from one model to the next [470]. In this instance, one appealing choice is to introduce a nonlinear spring, as is commonly used for piano-hammer models (see §9.3.2 for details).

Let the nonlinear spring model take the form

$\displaystyle f_k(y_d) = k y_d^p,
$

where $ p=1$ corresponds to a linear spring. The spring constant linearized about zero displacement $ y_d$ is

$\displaystyle k(y_d) = f^\prime_k(y_d) = pk y_d^{p-1}
$

which, for $ p>1$, approaches zero as $ y_d\to0$. In other words, the spring-constant itself goes to zero with its displacement, instead of remaining a constant. This behavior serves to ``feather'' contact and release with the string. We see from Eq.$ \,$(9.23) above that, as displacement goes to zero, the reflectance approaches a frequency-independent reflection coefficient $ \hat{\rho}_f=\mu/(\mu+2r)$, resulting from the damping $ \mu $ that remains in the spring model. As a result, there is still a discontinuity when the spring disengages from the string.

The foregoing suggests a nonlinear tapering of the damping $ \mu $ in addition to the tapering the stiffness $ k$ as the spring compression approaches zero. One natural choice would be

$\displaystyle \mu(y_d) = p\mu y_d^{p-1}
$

so that $ \mu(y_d)$ approaches zero at the same rate as $ k(y_d)$. It would be interesting to estimate $ p$ for the spring and damper from measured data. In the absence of such data, $ p=2$ is easy to compute (requiring a single multiplication). More generally, an interpolated lookup of $ y_d^p$ values can be used.

In summary, the engagement and disengagement of the plucking system can be ``feathered'' by a nonlinear spring and damper in the plectrum model.


Next Section:
Stiff Piano Strings
Previous Section:
Piano Hammer Modeling