diff --git a/src/AquaSynth.Core/PatchScript.cs b/src/AquaSynth.Core/PatchScript.cs index 7b5a89e..07f7f54 100644 --- a/src/AquaSynth.Core/PatchScript.cs +++ b/src/AquaSynth.Core/PatchScript.cs @@ -8,11 +8,6 @@ public sealed class PatchScriptException(int line, string message) : Exception($ } public static class PatchScript { - /// - /// The DSL's own IPA table: the phones a phoneme_gesture knows without an explicit descriptor. A hand-written script - /// that names another phone falls back to an alveolar approximant; a caller that must not be approximated asks here first. - /// Vowels come from , the one table that also says which measured tract shape each selects. - /// /// The branch port a lateral gesture opens: a closed side stub beside the oral path at the alveolar ridge (the sublingual cavity). /// A script that gestures a lateral without declaring it is refused, not approximated. public const string SideStubBranch = "side_stub"; @@ -33,6 +28,11 @@ public static class PatchScript /// gain window opens here; a test that wants the release reads it from here. public static float StopReleaseStartSeconds(float durationSeconds) => durationSeconds - MathF.Min(StopReleaseSeconds, 0.3f * durationSeconds); + /// + /// The DSL's own IPA table: the phones a phoneme_gesture knows without an explicit descriptor. A hand-written script + /// that names another phone falls back to an alveolar approximant; a caller that must not be approximated asks here first. + /// Vowels come from , the one table that also says which measured tract shape each selects. + /// public static bool TryIpaDescriptor(string ipa, out string descriptor) { if (StoryVowelAreas.TryVowelForIpa(ipa, out var vowelDescriptor, out _))