The junction fix (previous commit) let the nose take its proper share and the murmur rose to within 2-4 dB of the vowels; the nasal cavity is the most heavily damped part of the tract. Nasal N1 and first-zero tests still pass (N1 /m/ 320 Hz, /n/ 370 Hz).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The velopharyngeal junction summed the areas of cells cell and cell+1 and used their coefficients for R(cell) and L(cell-1), which sit on the interface between cell-1 and cell, so the pharynx carried the next step's reflection with the wrong sign (/o/ at cells 10-12: .52 .33 .52). Isolated by the numpy copy of the ladder against the lip wave of the rendered ladder under an impulse. F1 render against tube chain, uh 580/549, ah 690/650, aw 550/516, o 520/477, oo_short 500/478; they pass the 10 percent band and the Skip is gone.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Open against shut velum above 600 Hz: /m/ 8.0e-4 against 2.4e-5, mouth shut 1.3e-2 against 3.3e-4. Before, the whole-band rms (open 2.5e-2 against shut 9.3e-3) fell under the 5x and 10x thresholds the wall radiation commit left behind.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A word-initial /b/ closure was 0.0000 (below 16 bits): the shut mouth passes nothing and no other path existed. Wall radiation reads R0+L0 of each glottal path (the ladder returns it beside the lip waves) and adds a gain-0.7 term: /b/ closure -30.0 dB re the following vowel, /p/ -40.9 dB, a vowel's f0 harmonics move under 1 dB.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The f0 rise alone moves the level -1.3 to +1.8 dB by vowel through the harmonic/F1 interaction, so the amplitude factor is held to the rendered result. Duration and f0 cues unchanged.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The alveolar closure began to open at half the gesture while the velum and the contact held to 0.8, so the oral tract radiated over the last third of the murmur. verify_renders.py now measures the murmur on steady parts against the mean flanking-vowel power; the render test holds both nasals 8 to 16 dB under the vowels.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Primary stress: duration 220/160, source flow x1.26 (+2 dB), f0 x1.06 (Sluijter & van Heuven 1996); secondary halfway (design value).
The exporter's contact term adds white noise shaped by stored pressure and 4*o*(1-o) of the opening, gain from release_flow.
Unheard.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
StoryVowelAreas owns the 11x44 table (CSV is the cited copy, a test compares every cell) and the IPA/descriptor -> vowel id lookup. vowel_set attaches the shapes to a morphology and registers /vocal/areas/<i>/area/vowel_<id> weights; DeformedAreaExpression (still the one area owner) blends them as exp(sum w ln A / max(1e-3, sum w)), the geometric mean when weights vanish, and lip_opening caps the lip cells. Vowel gestures raise their vowel to 1 and the rest to 0; VowelShapes and its nearest-anchor logic are gone. The scaffold runs 17.52 cm at 350 m/s (24 cells); ɪ ʊ e ɛ ʌ ɔ o join the IPA table. Scripts without vowel_set emit byte-identical DSP.
Unheard. Against the tube chain only ɪ and ɛ are within 6 percent at the scaffold lip reflection (-.82); the other nine vowels' tests are skipped, with the measurements in docs/research (radiation-model question open).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
IpaTrialOrchestrator passes its options.SampleRate through IpaGestureExperiment.WriteRound; the default stays 48000. Test: a speed step lands in a different block at 44.1 kHz than at 48 kHz and delay_samples scale with the rate (re-hardcoding 48000 fails it).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
docs/research/articulatory-vocal-tract-sources.md cites what the tract design takes from Story, Pink Trombone, VocalTractLab,
Maeda, Kelly-Lochbaum, nasal coupling and LF, with what could not be retrieved. The CSV is Story 2008 Table I (11 vowels, 44
sections). burg_formants.py (Burg LPC on a WAV) and tube_formants.py (frequency-domain tube chain on an area function) share no
code with the ladder. Unheard.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>