clip_images.py (numpy + matplotlib Agg, STFT by numpy.fft) writes a deterministic spec and wave PNG per clip and, from the with/without --no-burst renders, burst-notes.md/json. Both kits' render.sh end with it; build.mjs --images embeds the pictures in a collapsed block and widens the page policy to data: images only then. The notes never enter listen.html or kit.json.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Predictions and measured figures sit in the hidden titles only; the /l/ title carries the F2 miss (725 Hz against a 1000-1300 design target).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The gate passed: a branch port joins the oral path at the ridge and a closed 3 cm stub notches 2-3 kHz by 13.4 dB against the same render with the port shut
(the shut port is the render without the stub). The ladder cannot hold a second oral channel, so the midline is narrowed to 0.06 cm instead of closed.
The scaffold declares the stub only for a word with a lateral; /apa aba ana ata/ keep script and Faust source byte for byte.
Measured on /ala/: level -5.0 dB re the flanking vowels, F1 263 Hz, burst none. F2 725 Hz against the 1000-1300 design target: NOT met (reported).
A lateral gesture without the side stub is refused, not approximated.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
/d/ is /t/ with voicing: no new mechanism, the 'voiced' token already selects the voice bar. Its consonant splines are identical to /t/'s (7 of 7).
Measured: voice bar -28.9 dB re the following vowel (/b/ -29.2, /t/ -38.7, /p/ -40.1), burst peak 3950 Hz as /t/, burst only at its own release.
The /d/-over-/t/ test measures the voice bar by deviation, as the /b/ and /p/ test does: the closure RMS window read 2.8 dB apart because of the slow offset of a shutting tract.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Measured on /aka/: burst 0.45 of the vowel peak, burst spectral peak 3100 Hz (Chodroff and Wilson 2014: 2868 Hz; /t/ 3950 Hz by the same measure),
burst only at its own release. Closure -14.9 dB re vowels against /p/ -20.4: NOT at or under /p/. The tract seals (glottal source off: -22.7 dB); the leak
is the voicing the voiceless source still carries, and silencing it would change /p t/. Reported as unmet, with a regression bound in the test.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The place table held velar as fraction only (0.44); a distance puts it with /p t/ so the closure index and the burst site come from one entry. 9.81 cm
is the same 0.44 of the 17.52 cm tract, between the /u/ dorsal (6.97 cm) and /a/ pharyngeal (12.14 cm) narrowest sections.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Measured on /ata/: closure -24.9 dB re vowels (/p/ -20.4), burst 0.39 of the vowel peak, burst peak inside
3.5-7 kHz. 'Above /p/' dropped from the criterion (steward ruling): the pinned labial burst enters at the
glottal end.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A /t/ closure at the nasal's 0.03 cm aperture leaked (-14.3 dB re vowels against /p/ -22.1, the lips seal
/p/); a non-labial plosive now holds a zero aperture until its contact opens at 0.65. Its injected burst
reached 0.76 of the vowel peak at the shared 0.06 gain; TongueStopBurstGain 0.03. /p b/ untouched.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The place table in PatchScript (cm behind the lip plane, or fraction only) replaces PlaceTarget and
ConsonantPositionFromGlottis. A contact whose position has a control surface injects its burst into the
ladder at that place, scaled by cell area; the surface exists only once a non-labial plosive has driven it,
so /p b/ words keep their script and Faust source byte for byte. weak_spots.burst_spectrum measures the
isolated burst.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>