### Single-Reed Theory

A simplified diagram of the clarinet mouthpiece is shown in
Fig. 9.40. The pressure in the mouth is assumed
to be a constant value , and the bore pressure is defined
located at the mouthpiece. Any pressure drop
across
the mouthpiece causes a flow into the mouthpiece through the
reed-aperture impedance
which changes as a function of
since the reed position is affected by
. To a first
approximation, the clarinet reed can be regarded as a spring flap
regulated Bernoulli flow (§B.7.5), [249]).
This model has been verified well experimentally until the reed is
about to close, at which point viscosity effects begin to appear
[102]. It has also been verified that the mass
of the reed can be neglected to first order,^{10.18} so that
is a
positive real number for all values of
. Possibly the most
important neglected phenomenon in this model is sound generation due
to turbulence of the flow, especially near reed closure. Practical
synthesis models have always included a noise component of some sort
which is modulated by the reed [431], despite a lack of firm
basis in acoustic measurements to date.

The fundamental equation governing the action of the reed is
*continuity of volume velocity,* *i.e.*,

where

and

is the volume velocity corresponding to the incoming pressure wave and outgoing pressure wave . (The physical pressure in the bore at the mouthpiece is of course .) The wave impedance of the bore air-column is denoted (computable as the air density times sound speed divided by cross-sectional area).

In operation, the mouth pressure and incoming traveling bore pressure
are given, and the reed computation must produce an outgoing bore
pressure which satisfies (9.35), *i.e.*, such that

Solving for is not immediate because of the dependence of on which, in turn, depends on . A graphical solution technique was proposed [151,244,308] which, in effect, consists of finding the intersection of the two terms of the equation as they are plotted individually on the same graph, varying . This is analogous to finding the operating point of a transistor by intersecting its operating curve with the ``load line'' determined by the load resistance.

It is helpful to normalize (9.38) as follows: Define , and note that , where . Then (9.38) can be multiplied through by and written as , or

The solution is obtained by plotting and on the same graph, finding the point of intersection at coordinates , and computing finally the outgoing pressure wave sample as

(10.40) |

An example of the qualitative appearance of overlaying is shown in Fig. 9.41.

#### Scattering-Theoretic Formulation

Equation (9.38) can be solved for to obtain

where

(10.44) |

We interpret as a

*signal-dependent reflection coefficient.*

Since the mouthpiece of a clarinet is nearly closed,
which
implies
and
. In the limit as goes to
infinity relative to , (9.42) reduces to the simple form of a
rigidly capped acoustic tube, *i.e.*,
.
If it were possible to open the reed wide enough to achieve
matched impedance, , then we would have and , in
which case
, with no reflection of , as expected. If
the mouthpiece is removed altogether to give (regarding it now as a
tube section of infinite radius), then , , and
.

#### Computational Methods

Since finding the intersection of and requires an expensive iterative algorithm with variable convergence times, it is not well suited for real-time operation. In this section, fast algorithms based on precomputed nonlinearities are described.

Let denote *half-pressure* , *i.e.*,
and
. Then (9.43) becomes

Subtracting this equation from gives

The last expression above can be used to precompute as a function of . Denoting this newly defined function as

(10.47) |

(9.45) becomes

This is the form chosen for implementation in Fig. 9.39 [431]. The control variable is mouth half-pressure , and is computed from the incoming bore pressure using only a single subtraction. The table is indexed by , and the result of the lookup is then multiplied by . Finally, the result of the multiplication is subtracted from . The cost of the reed simulation is only two subtractions, one multiplication, and one table lookup per sample.

Because the table contains a coefficient rather than a signal value, it can be more heavily quantized both in address space and word length than a direct lookup of a signal value such as or the like. A direct signal lookup, though requiring much higher resolution, would eliminate the multiplication associated with the scattering coefficient. For example, if and are 16-bit signal samples, the table would contain on the order of 64K 16-bit samples. Clearly, some compression of this table would be desirable. Since is smoothly varying, significant compression is in fact possible. However, because the table is directly in the signal path, comparatively little compression can be done while maintaining full audio quality (such as 16-bit accuracy).

In the field of computer music, it is customary to use simple piecewise
linear functions for functions other than signals at the audio sampling
rate, *e.g.*, for amplitude envelopes, FM-index functions, and so on
[382,380]. Along these lines, good initial results were
obtained [431] using the simplified *qualitatively* chosen
reed table

depicted in Fig. 9.42 for . The corner point is the smallest pressure difference giving reed closure.

^{10.19}Embouchure and reed stiffness correspond to the choice of offset and slope . Brighter tones are obtained by increasing the curvature of the function as the reed begins to open; for example, one can use for increasing .

Another variation is to replace the table-lookup contents by a piecewise polynomial approximation. While less general, good results have been obtained in practice [89,91,92]. For example, one of the SynthBuilder [353] clarinet patches employs this technique using a cubic polynomial.

An intermediate approach between table lookups and polynomial approximations is to use interpolated table lookups. Typically, linear interpolation is used, but higher order polynomial interpolation can also be considered (see Chapter 4).

#### Clarinet Synthesis Implementation Details

To finish off the clarinet example, the remaining details of the
SynthBuilder clarinet patch `Clarinet2.sb` are described.

The input mouth pressure is summed with a small amount of white noise, corresponding to turbulence. For example, 0.1% is generally used as a minimum, and larger amounts are appropriate during the attack of a note. Ideally, the turbulence level should be computed automatically as a function of pressure drop and reed opening geometry [141,530]. It should also be lowpass filtered as predicted by theory.

Referring to Fig. 9.39, the reflection filter is a simple one-pole with transfer function

(10.50) |

where , , is vibrato amplitude (

*e.g.*, ), and is vibrato frequency (

*e.g.*, Hz). Further loop filtering occurs as a result of using simple linear interpolation of the delay line. (There is only one delay line in the actual implementation since the lower delay line of Fig. 9.39 can be commuted with the reflection filter and combined with the upper delay line, ignoring the path to the output filter since a pure delay of less than a period in the final output sound is inconsequential.) There is no transmission filter or tone-hole modeling.

Legato note transitions are managed using two delay line taps and cross-fading from one to the other during a transition [208,441,405]. In general, legato problems arise when the bore length is changed suddenly while sounding, corresponding to a new fingering. The reason is that really the model itself should be changed during a fingering change from that of a statically terminated bore to that of a bore with a new scattering junction appearing where each ``finger'' is lifting, and with disappearing scattering junctions where tone holes are being covered. In addition, if a hole is covered abruptly (especially when there are large mechanical caps, as in the saxophone), there will also be new signal energy injected in both directions on the bore in superposition with the signal scattering. As a result of this ideal picture, is difficult to get high quality legato performance using only a single delay line.

A reduced-cost, approximate solution for obtaining good sounding note
transitions in a single delay-line model was proposed in
[208]. In this technique, the bore delay line is
``branched'' during the transition, *i.e.*, a second feedback loop is formed
at the new loop delay, thus forming two delay lines sharing the same
memory, one corresponding to the old pitch and the other corresponding to
the new pitch. A cross-fade from the old-pitch delay to the new-pitch
delay sounds good if the cross-fade time and duration are carefully chosen.
Another way to look at this algorithm is in terms of ``read pointers'' and
``write pointers.'' A normal delay line consists of a single write pointer
followed by a single read pointer, delayed by one period. During a legato
transition, we simply cross-fade from a read-pointer at the old-pitch delay
to a read-pointer at the new-pitch delay. In this type of implementation,
the write-pointer always traverses the full delay memory corresponding to
the minimum supported pitch in order that read-pointers may be instantiated
at any pitch-period delay at any time. Conceptually, this simplified model
of note transitions can be derived from the more rigorous model by
replacing the tone-hole scattering junction by a single reflection
coefficient.

STK software implementing a model as in Fig.9.39 can be
found in the file `Clarinet.cpp`.

**Next Section:**

Tonehole Modeling

**Previous Section:**

A View of Single-Reed Oscillation