Make tissue valve sources audibly self-oscillate
This commit is contained in:
parent
7111e1819c
commit
fc44464b2b
3 changed files with 10 additions and 4 deletions
|
|
@ -20,13 +20,14 @@ area_curve name=oral_vowel length_cm=17 diameters=.55,.72,1.05,1.45,1.58,1.30,.8
|
|||
path name=trachea area_curve=tracheal_tube loss=.998 loss_model=viscous
|
||||
path name=oral area_curve=oral_vowel loss=.997 loss_model=birkholz_2024 tongue_index=@/human/tongue/index tongue_diameter=@/human/tongue/diameter constriction_index=@/human/constriction/index constriction_diameter=@/human/constriction/diameter lip=@/human/lip/opening
|
||||
|
||||
source_port name=folds path=trachea kind=glottal law=two_mass position=0 pressure=@/human/subglottal tension=@/human/fold/tension opening=@/human/fold/opening noise=.035 upper_mass=.22 lower_mass=.36 upper_stiffness=.04 lower_stiffness=.06 coupling_stiffness=.09 collision_stiffness=.62 collision_damping=.18 vertical_phase=.24 reservoir_pressure=1 downstream_pressure=.05 load_coupling=.42 rest_opening=.012 drive=1.05
|
||||
source_port name=folds path=trachea kind=glottal law=two_mass position=1 pressure=@/human/subglottal tension=@/human/fold/tension opening=@/human/fold/opening noise=.035 upper_mass=.22 lower_mass=.36 upper_stiffness=.04 lower_stiffness=.06 coupling_stiffness=.09 collision_stiffness=.62 collision_damping=.18 vertical_phase=.24 reservoir_pressure=1 downstream_pressure=.05 load_coupling=.42 rest_opening=.012 drive=1.05
|
||||
|
||||
terminal name=subglottal_wall path=trachea position=0 kind=closed reflection=.78
|
||||
terminal name=trachea_top path=trachea position=1 kind=junction
|
||||
terminal name=oral_back path=oral position=0 kind=junction
|
||||
connect name=larynx_to_tract terminals=trachea_top,oral_back law=area_scatter coupling=.92
|
||||
|
||||
radiation_port name=mouth path=oral kind=lip model=lip_piston position=1 opening=@/human/lip/opening reflection=-.82 loss=.98
|
||||
wave_clock name=continuous strategy=linear max_delay=4096 smoothing_ms=3
|
||||
acoustic_network name=human_larynx path=oral wave_clock=continuous sources=folds radiation=mouth terminals=trachea_top,oral_back connections=larynx_to_tract
|
||||
acoustic_network name=human_larynx path=oral wave_clock=continuous sources=folds radiation=mouth terminals=subglottal_wall,trachea_top,oral_back connections=larynx_to_tract
|
||||
acoustic network=human_larynx freq=145 gain=.18 sustain=1.1 decay=.08
|
||||
|
|
|
|||
|
|
@ -1636,13 +1636,17 @@ public static class FaustEmitter
|
|||
|
||||
source.AppendLine($" {prefix}_stiffness_hint = max(0.00002, min(0.16, pow(2.0 * ma.PI * max(20.0, {frequency}) / ma.SR, 2.0)));");
|
||||
source.AppendLine($" {prefix}_reservoir_pressure = ({pressure}) * ({drive}) * ({reservoirPressure});");
|
||||
source.AppendLine($" {prefix}_downstream_pressure = ({downstreamPressure}) + ({loadCoupling}) * {prefix}_load_pressure;");
|
||||
source.AppendLine($" {prefix}_downstream_pressure = ({downstreamPressure}) + ({loadCoupling}) * ma.tanh({prefix}_load_pressure);");
|
||||
source.AppendLine($" {prefix}_pressure_drive = max(0.0, {prefix}_reservoir_pressure - {prefix}_downstream_pressure);");
|
||||
source.AppendLine($" {prefix}_stiffness = max(({stiffness}), {prefix}_stiffness_hint * (0.35 + 1.65 * ({tension})));");
|
||||
source.AppendLine($" {prefix}_modal_frequency = max(45.0, min(5200.0, (ma.SR / (2.0 * ma.PI)) * sqrt(max(0.00002, {prefix}_stiffness) / ({mass}))));");
|
||||
source.AppendLine($" {prefix}_load_detune = 1.0 - 0.035 * ma.tanh({prefix}_load_pressure * ({loadCoupling}));");
|
||||
source.AppendLine($" {prefix}_oscillation_gate = clip01(({prefix}_pressure_drive - 0.035 - 0.18 * clip01({opening})) * (2.4 + 2.6 * ({drive})));");
|
||||
source.AppendLine($" {prefix}_modal_q = 3.0 + 24.0 * clip01(({pressure}) * (1.0 - 0.45 * ({damping})) + 0.35 * ({tension}));");
|
||||
source.AppendLine($" {prefix}_modal_seed = (no.noise * 0.018 + {prefix}_pressure_drive * max(0.0, 0.22 - clip01({opening})) * 0.16);");
|
||||
source.AppendLine($" {prefix}_modal_tissue = {prefix}_modal_seed : fi.resonbp({prefix}_modal_frequency, {prefix}_modal_q, 1);");
|
||||
source.AppendLine($" {prefix}_modal_ring = {prefix}_modal_seed : fi.resonbp({prefix}_modal_frequency, {prefix}_modal_q, 1);");
|
||||
source.AppendLine($" {prefix}_modal_oscillator = os.osc({prefix}_modal_frequency * {prefix}_load_detune) * {prefix}_oscillation_gate;");
|
||||
source.AppendLine($" {prefix}_modal_tissue = ({prefix}_modal_oscillator * (0.70 + 0.80 * ({tension})) + {prefix}_modal_ring * 0.35) * (1.0 - 0.35 * ({damping}));");
|
||||
switch (port.Law)
|
||||
{
|
||||
case AcousticValveLaw.TwoMass:
|
||||
|
|
|
|||
|
|
@ -210,3 +210,4 @@
|
|||
{"evidence":"Added parameter-layer `ControlCurve` records, parser support through `curve`/`control_curve`/`gesture`, and Faust lowering that keeps each curved parameter's realtime hslider as a base signal while blending or adding an authored curve through a separate `/curves/<name>/depth` hslider. `patches/advanced/bird-syrinx.aqua` and `BirdSyrinxGolf` now express pressure, opening, and beak gestures as Aqua curves targeting normal parameter paths. Focused parser/export/Faust validation tests pass.","claim":"Control gestures are now realtime-drivable parameter semantics, not offline bird-golf substitutions. Authored curves, host controls, and future learned controllers share stable `param path=` authority and can reach acoustic source/radiation fields through the existing binding path.","timestamp":"2026-05-28T19:06:28+01:00","topic":"realtime-control-curves"}
|
||||
{"evidence":"Expanded the graph vocal DSL with layered tissue-valve laws, named continuous `area_curve` morphology, loss/radiation model selection, and `gesture` groups over existing parameter curves. `kind=glottal` and `glottis path=...` now lower as tissue-valve graph source ports by default, while generated Faust emits reservoir/downstream pressure, upper/lower valve state for layered laws, named segment loss, and radiation model locals. Added canonical human larynx, bird syrinx, and alien multivalve graph patches.","claim":"The live vocal architecture is now a graph-native reusable physical core. Human larynxes, bird syrinxes, and alien morphologies are presets over shared valves, paths, branches, losses, radiation, and realtime parameter gestures; parity golf should wait until this structural surface has been validated by Faust and render smoke tests.","timestamp":"2026-05-28T20:10:00+01:00","topic":"perfect-machine-vocal-dsl"}
|
||||
{"evidence":"Demoted Pink Trombone log-mel parity tests from hard acceptance thresholds to diagnostic artifact generation plus bounded/nonzero render checks. Full-suite parity still reports weak articulation for the graph voice after glottal lowering moved onto tissue valves, but those scores now live in artifacts instead of pretending PT parity is the current gate.","claim":"Pink Trombone parity is no longer the owner of this architecture phase. It remains a diagnostic lane to inspect artifacts after structural source/morphology/loss/radiation work, and hard acceptance should return only after the generalized graph model has its render smoke and passivity behavior under control.","timestamp":"2026-05-28T20:25:00+01:00","topic":"parity-test-authority"}
|
||||
{"evidence":"Listening/spectrogram audit showed the first tissue-valve batches were mostly faint noise and DC-like startup energy. Replaced the non-self-sustaining noise-resonator seed with a pressure-gated tissue oscillator whose frequency is derived from stiffness/mass/tension and bounded load detune, and bounded source-load pressure feedback with `tanh` so the tract can perturb instead of fully quench the source. Added an explicit subglottal wall terminal to `human-larynx-graph.aqua` so folds at the larynx junction have an upstream trachea segment instead of a source node with no incident wave port. Human modal, bird, and alien graph patches now render sustained harmonic stacks in spectrograms under `artifacts/listening/vocal-core-squawk-20260528T211222944`.","claim":"The graph machine can now produce audible vocalizations through reusable tissue-valve semantics. The next work is no longer basic audibility; it is shaping morphology, gestures, and source coupling into credible speech and bird articulation.","timestamp":"2026-05-28T21:16:00+01:00","topic":"tissue-valve-squawk-audit"}
|
||||
|
|
|
|||
Loading…
Reference in a new issue