Tract stops: one place table, burst injected at the closure site #48

Merged
aqua merged 12 commits from aqua/tract-stops-20261112 into main 2026-11-13 07:14:35 +00:00
Member

Tract stops: one place table, burst injected at the closure site; /t/ /k/ /d/ /l/ added; listen kits and clip images. Specs: cut-stop-burst-site.r1, cut-tract-stop-t.r1 (r3 landed), cut-tract-stop-d.r1, cut-tract-lateral-l.r1, cut-stop-listen-kit.r1, cut-listen-page-images.r1. Soul: aqua-body:verdict:cut-listen-page-images.s1, pass at 813ae0b.

Place table. PatchScript holds one table (place -> cm behind the lip plane). /t/ /k/ /d/ /l/ have entries; deleting any fails a test. Burst injected at the closure site, area-scaled; /apa/ /aba/ stay byte identical (pinned by hash).

Not met. /l/ F2 measures 725 Hz against the 1000-1300 design target (F1, level and dip met). /t/ burst peak sits below /p/'s (4011 vs 7087 Hz). Everything here is unheard: no listener verdict yet.

Listen kits (tools/aqua-listen): stops kit and weak kit with spectrogram and waveform PNG per clip; burst times in a separate note.

Merged main (#49, #50) into the branch; stress/release, place-table, sample-rate and nasal tests pass (39).

🤖 Generated with Claude Code

Tract stops: one place table, burst injected at the closure site; /t/ /k/ /d/ /l/ added; listen kits and clip images. Specs: cut-stop-burst-site.r1, cut-tract-stop-t.r1 (r3 landed), cut-tract-stop-d.r1, cut-tract-lateral-l.r1, cut-stop-listen-kit.r1, cut-listen-page-images.r1. Soul: aqua-body:verdict:cut-listen-page-images.s1, pass at 813ae0b. **Place table.** `PatchScript` holds one table (place -> cm behind the lip plane). /t/ /k/ /d/ /l/ have entries; deleting any fails a test. Burst injected at the closure site, area-scaled; /apa/ /aba/ stay byte identical (pinned by hash). **Not met.** /l/ F2 measures 725 Hz against the 1000-1300 design target (F1, level and dip met). /t/ burst peak sits below /p/'s (4011 vs 7087 Hz). Everything here is unheard: no listener verdict yet. **Listen kits** (`tools/aqua-listen`): stops kit and weak kit with spectrogram and waveform PNG per clip; burst times in a separate note. Merged main (#49, #50) into the branch; stress/release, place-table, sample-rate and nasal tests pass (39). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
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>
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>
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>
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 /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>
/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>
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>
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>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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>
aqua merged commit 92d4282546 into main 2026-11-13 07:14:35 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/AquaSynth!48
No description provided.