5D Library › Vocal Biomechanics, Non-Linear Source-Filter Coupling and Auditory-Motor Feedback · 中文
Chapter 4 Registers, the Two-Mass Model and Nonlinear Bifurcations
Registers as switches of vibratory mechanism
What singers call “chest voice”, “head voice” and “falsetto” are increasingly described in voice science as laryngeal vibratory mechanisms: M0 (vocal fry), M1 (usually chest voice or ordinary speech), M2 (head voice or falsetto) and M3 (whistle).
Evidence
On the basis of electroglottographic and acoustic data, Roubeau, Henrich and Castellengo argued that registers should first be defined by laryngeal vibratory mechanism: in M1 the folds are thicker, with a larger medial contact area and a longer closed phase; in M2 they are thinner, vibrating mainly at their edges, with a shorter closed phase. The transition from one mechanism to the other is often accompanied by a sudden jump in fundamental frequency, at different pitches on the way up and on the way down (hysteresis), and trained singers can sing the same note in either mechanism over part of their range (Roubeau et al. 2009). Biomechanically, the switch depends mainly on the balance between the thyroarytenoid (vocalis) muscle, the “body”, and the cricothyroid, which lengthens the folds, and on the thickness and stiffness of the cover that this balance changes (Titze 1994).
Sudden jumps, hysteresis, two states coexisting at the same parameter values: these are textbook features of nonlinear dynamical systems. Chapter 2 showed that tract loading can trigger instability when F0 crosses F1; this chapter looks at the nonlinearity of the source itself.
The two-mass model
Evidence
In 1972 Ishizaka and Flanagan proposed representing each vocal fold by two masses joined by a spring, one for the lower and one for the upper part: the lower mass is larger, the upper smaller, and the coupling between them makes the upper part lag the lower, which produces naturally the phase difference of Chapter 1; the model oscillates by itself and synthesises realistic voiced sounds (Ishizaka and Flanagan 1972). Steinecke and Herzel added a left–right asymmetry parameter : the masses of the right fold are divided by and its stiffnesses multiplied by , making the natural frequency of the right side times that of the left. They drew bifurcation diagrams across asymmetry and subglottal pressure and reported a variety of regimes, including left–right synchronisation, subharmonics and irregular vibration (Steinecke and Herzel 1995).
The program below implements this asymmetric two-mass model (standard parameters, in grams, centimetres and milliseconds), varies at a lung pressure of 800 Pa, and counts how many times per second the lower mass of each side oscillates.
Calculation
# Asymmetric two-mass model (Ishizaka & Flanagan 1972; asymmetry Q of Steinecke & Herzel
# 1995), units g, cm, ms. Each fold: lower mass m1, upper m2, springs k1, k2, coupling kc,
# collision springs 3k, damping ratios 0.1 / 0.6. Areas a_i = a0 + l (x_il + x_ir); lower
# masses feel P1 = Ps [1 - (a_min / a1)^2] while open. Right fold: masses / Q, springs x
# Q.
import math
M1, M2, K1, K2, KC, D1, LEN, A0 = 0.125, 0.025, 0.08, 0.008, 0.025, 0.25, 1.4, 0.05
def make(q):
return [(M1 / s, M2 / s, K1 * s, K2 * s, KC * s, 3 * K1 * s, 3 * K2 * s,
0.2 * math.sqrt(M1 * K1), 1.2 * math.sqrt(M2 * K2)) for s in (1.0, q)]
def deriv(y, par, ps):
x1l, x2l, x1r, x2r, v1l, v2l, v1r, v2r = y
a1, a2 = A0 + LEN * (x1l + x1r), A0 + LEN * (x2l + x2r)
if a1 > 0 and a2 > 0:
p1 = ps * (1 - (min(a1, a2) / a1) ** 2)
else:
p1 = 0.0 if a1 <= 0 else ps
acc = []
for (m1, m2, k1, k2, kc, c1, c2, r1, r2), xa, xb, va, vb in zip(
par, (x1l, x1r), (x2l, x2r), (v1l, v1r), (v2l, v2r)):
col1 = c1 * a1 / (2 * LEN) if a1 < 0 else 0.0
col2 = c2 * a2 / (2 * LEN) if a2 < 0 else 0.0
acc += [(LEN * D1 * p1 - r1 * va - k1 * xa - kc * (xa - xb) - col1) / m1,
(-r2 * vb - k2 * xb - kc * (xb - xa) - col2) / m2]
return (v1l, v2l, v1r, v2r, acc[0], acc[1], acc[2], acc[3])
def run(q, ps=0.008, y0=(0.02, 0.0, -0.005, 0.0), t_end=1500.0, t_skip=500.0, dt=0.04):
par, y, t, xl, xr = make(q), tuple(y0) + (0.0,) * 4, 0.0, [], []
for _ in range(int(t_end / dt)): # classical Runge-Kutta
k1 = deriv(y, par, ps)
k2 = deriv(tuple(a + dt / 2 * b for a, b in zip(y, k1)), par, ps)
k3 = deriv(tuple(a + dt / 2 * b for a, b in zip(y, k2)), par, ps)
k4 = deriv(tuple(a + dt * b for a, b in zip(y, k3)), par, ps)
y = tuple(a + dt / 6 * (b + 2 * c + 2 * d + e)
for a, b, c, d, e in zip(y, k1, k2, k3, k4))
t += dt
if t > t_skip:
xl.append(y[0]); xr.append(y[2])
pk = lambda x: [x[i] for i in range(1, len(x) - 1) if x[i - 1] < x[i] >= x[i + 1]]
span, pl = (t_end - t_skip) / 1000.0, pk(xl)
return len(pl) / span, len(pk(xr)) / span, len({round(v, 3) for v in pl})
if __name__ == "__main__":
print("lung pressure 0.008 g/(cm ms^2) = 800 Pa; Q = right/left natural frequency")
print(" Q | left fold Hz | right fold Hz | heights* | regime")
for q in (1.0, 0.8, 0.7, 0.6, 0.55, 0.5, 0.45, 0.4, 0.35, 0.3):
fl, fr, n = run(q)
r = round(fl / fr)
reg = ("1:1, folds in step" if abs(fl / fr - 1) < 0.02 else
f"{r}:1 locked, subharmonic" if abs(fl / fr - r) < 0.05
else "not locked (irregular or quasi-periodic)")
print(f" {q:4.2f} | {fl:12.1f} | {fr:13.1f} | {n:6d} | {reg}")
print("* distinct peak heights of the left lower mass, to 0.001 cm (1 = period-1)")
# lung pressure 0.008 g/(cm ms^2) = 800 Pa; Q = right/left natural frequency
# Q | left fold Hz | right fold Hz | heights* | regime
# 1.00 | 136.0 | 136.0 | 1 | 1:1, folds in step
# 0.80 | 118.0 | 118.0 | 1 | 1:1, folds in step
# 0.70 | 101.0 | 101.0 | 1 | 1:1, folds in step
# 0.60 | 83.0 | 83.0 | 1 | 1:1, folds in step
# 0.55 | 144.0 | 72.0 | 2 | 2:1 locked, subharmonic
# 0.50 | 132.0 | 66.0 | 2 | 2:1 locked, subharmonic
# 0.45 | 120.0 | 60.0 | 2 | 2:1 locked, subharmonic
# 0.40 | 159.0 | 53.0 | 3 | 3:1 locked, subharmonic
# 0.35 | 133.0 | 44.0 | 3 | 3:1 locked, subharmonic
# 0.30 | 115.0 | 38.0 | 3 | 3:1 locked, subharmonic
# * distinct peak heights of the left lower mass, to 0.001 cm (1 = period-1)The result is a clear staircase. As falls from 1 to 0.6, the two sides remain synchronised (1:1), but the common frequency drops from 136 to 83 Hz: the slower right side “holds back” the faster left. Between and synchrony breaks and the system enters 2:1 locking: the left side returns to about 120–144 Hz while the right vibrates at half that rate; the opening and closing of the glottis then repeats only every two left-side cycles, and a subharmonic appears in the spectrum at half the left-side frequency. At and below the ratio becomes 3:1. The “heights” column (the number of distinct peak heights of the left lower mass, to 0.001 cm) matches this: 1 for 1:1, 2 for 2:1 and 3 for 3:1, showing that the left fold’s motion also repeats with the locking ratio. “Left” and “right” here are only labels within the model and correspond to no particular lesion.
With this parameter set our scan found only periodic locked states; Steinecke and Herzel reported irregular vibration in other regions of parameter space. The run starts from a slightly asymmetric state and analyses one second after 0.5 s of transients; other parameters or starting states may move the steps.
From periodicity to chaos: a generic example
“Period doubling on the road to chaos” is one of the best-known routes in nonlinear dynamics. To see it clearly we leave the vocal folds for a moment and use one of the most widely cited nonlinear oscillators, the forced Duffing equation. Sampling the oscillator’s position once per forcing period (a stroboscopic map) gives one point for a periodic solution, two for a period-doubled one, and so on; in chaos the samples scatter into a band, and two orbits that start almost together separate exponentially (the largest Lyapunov exponent is positive).
Calculation
# Part A. A generic nonlinear oscillator (NOT a vocal-fold model): forced Duffing equation
# x'' + 0.3 x' - x + x^3 = g cos(1.2 t), sampled once per forcing period. 1 distinct state
# = period-1, 2 = period-doubled, ...; many = chaos if the Lyapunov exponent is positive.
# Part B. A period-doubled pulse train (no noise at all) seen through Book 10's measures.
import cmath, math
DMP, W = 0.3, 1.2
def rk4(t, x, v, g, dt):
f = lambda t, x, v: (v, -DMP * v + x - x ** 3 + g * math.cos(W * t))
a1, b1 = f(t, x, v)
a2, b2 = f(t + dt / 2, x + dt / 2 * a1, v + dt / 2 * b1)
a3, b3 = f(t + dt / 2, x + dt / 2 * a2, v + dt / 2 * b2)
a4, b4 = f(t + dt, x + dt * a3, v + dt * b3)
return (x + dt / 6 * (a1 + 2 * a2 + 2 * a3 + a4),
v + dt / 6 * (b1 + 2 * b2 + 2 * b3 + b4))
def strobe(g, n_skip=200, n_keep=64, steps=200):
dt = 2 * math.pi / W / steps
x, v, y, u, t, out, lyap = 1.0, 0.0, 1.0 + 1e-8, 0.0, 0.0, [], 0.0
for k in range(n_skip + n_keep):
for _ in range(steps):
(x, v), (y, u), t = rk4(t, x, v, g, dt), rk4(t, y, u, g, dt), t + dt
# twin orbit, renormalised each period
d = math.hypot(y - x, u - v)
if k >= n_skip:
out.append(round(x, 3)); lyap += math.log(d / 1e-8)
y, u = x + (y - x) * 1e-8 / d, v + (u - v) * 1e-8 / d
return len(set(out)), lyap / n_keep
print("Part A: forced Duffing oscillator, stroboscopic samples")
print(" forcing g | distinct states | Lyapunov exponent per period | regime")
for g in (0.20, 0.27, 0.29, 0.30, 0.37, 0.50):
n, lam = strobe(g)
reg = f"period-{n}" if n <= 8 and lam < 0.01 else "chaotic" if lam > 0.01 else "?"
print(f" {g:.2f} | {n:15d} | {lam:+28.3f} | {reg}")
print("Part B: a 100 Hz pulse train whose pulses alternate in height (period doubling)")
def level(x, f): # one DFT bin, 8 kHz sampling
return abs(sum(v * cmath.exp(-2j * math.pi * f * k / 8000) for k, v in enumerate(x)))
# 8 kHz sampling, 80 samples per pulse
for ratio in (1.0, 0.9, 0.7):
amps = [1.0 if i % 2 == 0 else ratio for i in range(80)]
x = [a * math.sin(math.pi * k / 40) ** 2 if k < 40 else 0.0
for a in amps for k in range(80)]
shimmer = sum(abs(a - b) for a, b in zip(amps, amps[1:])) / 79 / (sum(amps) / 80)
sub = level(x, 50.0) / level(x, 100.0)
sub_txt = f"{20 * math.log10(sub):6.1f} dB re 100 Hz" if sub > 1e-9 else " none"
print(f" every 2nd pulse x {ratio:.1f}: shimmer {shimmer:5.1%}, jitter 0.0 %, "
f"50 Hz {sub_txt}")
# Part A: forced Duffing oscillator, stroboscopic samples
# forcing g | distinct states | Lyapunov exponent per period | regime
# 0.20 | 1 | -0.784 | period-1
# 0.27 | 2 | -0.314 | period-2
# 0.29 | 4 | -0.187 | period-4
# 0.30 | 61 | +0.398 | chaotic
# 0.37 | 5 | -0.267 | period-5
# 0.50 | 60 | +0.600 | chaotic
# Part B: a 100 Hz pulse train whose pulses alternate in height (period doubling)
# every 2nd pulse x 1.0: shimmer 0.0%, jitter 0.0 %, 50 Hz none
# every 2nd pulse x 0.9: shimmer 10.5%, jitter 0.0 %, 50 Hz -24.5 dB re 100 Hz
# every 2nd pulse x 0.7: shimmer 35.3%, jitter 0.0 %, 50 Hz -14.0 dB re 100 HzAt forcing amplitude the motion has period 1; at 0.27 it is period-doubled (two states); at 0.29 period 4; at 0.30 the samples scatter over 61 distinct values and the Lyapunov exponent is +0.40: chaos. With still stronger forcing a period-5 window appears at 0.37, and at 0.50 the motion is chaotic again (+0.60). The right panel of Figure 3 shows the whole sequence. “Chaos” is thus a precise mathematical property (sensitive dependence on initial conditions), not a synonym for “mess”; and periodic windows lie inside chaotic regions, so a small change of parameter can return the vibration from chaos to periodicity.
The second part of the program returns to voice measurement. A 100 Hz pulse train in which every second pulse is 0.7 times as high is the simplest possible period doubling, with no noise at all. Yet local shimmer, as used in Chapter 6 of Volume 10, comes out at 35.3 %, jitter at zero, and a 50 Hz component appears in the spectrum about 14 dB below the 100 Hz component; with every second pulse at 0.9 times, shimmer is still 10.5 %. In other words, jitter and shimmer cannot distinguish “regular period doubling” from “random irregularity”; they are suited only to nearly periodic voices.
Evidence
Herzel, Berry, Titze and Saleh applied methods from nonlinear dynamics (subharmonics and bifurcations in narrow-band spectrograms, attractor reconstruction and related tools) to recordings of patients with voice disorders, arguing that much of the irregularity of pathological voices arises from nonlinear phenomena of fold vibration itself rather than from added noise alone, and proposed using these concepts to classify voices (Herzel et al. 1994). Berry and colleagues systematically varied subglottal pressure and left–right asymmetry (of adduction or elongation) in excised larynges and observed a range of vibratory regimes, including vibration of a single fold; many instabilities and bifurcations occurred where regimes overlapped, and the spectra of some recordings matched vocal registers described in the literature (Berry et al. 1996).
Note
A chaotic attractor is not a vocal fold polyp. The framework’s “chaotic attractor = vocal fold polyp” cannot stand. Researchers have observed subharmonics and irregular vibration in some pathological voices, but the same phenomena appear at register transitions in healthy voices, in excised larynges and models under asymmetric conditions, and in deliberate singing techniques; and different lesions, such as polyps, nodules or paralysis, can produce similar acoustic signs, or none. An acoustic phenomenon does not tell us its cause. No program, figure or checklist in this book can be used to decide whether anyone has a vocal fold lesion; persistent voice problems belong with an ear, nose and throat specialist or a voice clinic.
Deliberate “irregularity”: throat singing and rock distortion
Evidence
Mongolian kargyraa. Lindestad and colleagues studied this deep “throat” style with high-speed imaging, acoustic spectra and inverse filtering and found that the ventricular (false) folds vibrate together with the vocal folds, closing about once every two vocal fold cycles; the result is period doubling, with a perceived pitch about half the vocal fold frequency (Lindestad et al. 2001). Bailly, Henrich and Pelorson gave a physiological description of vocal fold and ventricular fold vibration in period-doubling phonation and built an aerodynamic model with ventricular fold involvement (Bailly et al. 2010). Rock “distortion” (dist). Zangger Borch and colleagues found that the aperiodicity of distorted tones comes from a low-frequency modulation of the amplitude of the flow pulses, produced by vibration of the supraglottic mucosa, which partly obstructs the airway and reduces the amplitude of some pulses, while the vocal folds themselves continue to vibrate roughly periodically; they assumed the mucosal vibration to be driven by the high airflow that comes with raised subglottal pressure (Zangger Borch et al. 2004).
These studies show that subharmonics and period doubling can also be controlled artistic devices. The mechanisms differ: kargyraa is mainly period doubling with ventricular fold involvement, rock distortion a modulation of the source by supraglottic structures. Another style often called “khöömii”, overtone singing, picks out single overtones by fine formant tuning, a different mechanism again, not pursued here. The framework’s description of throat singing and rock distortion as uniformly “ventricular folds involved, subharmonics” holds only for part of them.
Hypothesis · not established
Mixed-voice hysteresis hypothesis (not yet established). After systematic “mixed voice” training, the difference between the pitch at which a singer jumps from M1 to M2 on a slow rising glide and the pitch at which they jump back on a falling glide (the width of the hysteresis) shrinks, as does the size of the F0 jump at the transition. Testable prediction: in a randomised controlled training study of untrained adults, the hysteresis width shrinks significantly more in the training group than in a control group (for example, pitch-accuracy practice only). If the two groups change equally, the hypothesis is refuted.
Chapter summary
Registers can be understood as switches between laryngeal vibratory mechanisms (M0–M3), and jumps and hysteresis are typical of nonlinear systems. The two-mass model produces the phase difference between the margins naturally from two coupled masses; with left–right asymmetry the sketch moves from 1:1 synchrony to 2:1 and 3:1 locking, producing subharmonics. A generic Duffing oscillator shows the classic period-doubling route to chaos, chaos being the precise property of sensitive dependence on initial conditions. Regular period doubling can push shimmer to 35 %, showing that such measures suit only nearly periodic voices. Irregular vibration is observed in some pathological voices but cannot be used for diagnosis, while kargyraa and rock distortion exploit nonlinearity deliberately. The next chapter turns from the source to the ear: how singers hear themselves through a delayed loop.
References
Fan, Y. (2026). Vocal Biomechanics, Non-Linear Source-Filter Coupling and Auditory-Motor Feedback: From Titze's Self-Sustained Vocal Fold Oscillation and Vocal-Tract Inertance to the Lombard Effect, Read Beside Classical Chinese Vocal Aesthetics [嗓音生物力学、非线性源-滤波耦合与听觉-运动反馈的数学模型] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23770084 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).