Loading…
Loading…
Rule
Gradus GE-360 · cite this code — it is permanent. Rule id tie-dangling-at-voice-end
A tie always resolves to a following note; a tie flag on a voice's final note is either a leftover authoring mistake or an intent to continue past a boundary the model doesn't represent (e.g. into a repeat — see tie-into-repeat-or-volta-hazard).
CONFIRMED, but the failure mode differs by layer, and it is important not to conflate them. (1) The JSX RENDERER already guards this per voice — `if (i >= voiceNotes.length - 1) return;` (line 1239) silently skips drawing for ANY of voices 1-4, so it never crashes, but it also never warns the author; the flag simply produces no visible tie and no error. (2) audit-notation.py's Check 4 (lines 485-497) DOES emit a message for this case — but ONLY for `notes` (voice1, parsed at line 392); voice2/voice3/voice4 are parsed separately into their own lists at lines 406-415 and are never passed through Check 4's loop at all, so the identical authoring mistake in an SATB voice 2-4 produces total silence, not even the audit script's own warning. (3) The public API has NO equivalent check anywhere: a `tiedToNext:true` NoteObject as the last note of a `VoiceLine` simply never finds a `prev.pitch === n.pitch` match (musicxml-export.ts:599) and is silently ignored.
Gould (a tie is inherently a two-note relationship.
This rule can be decided from pitches, durations and voices — no layout required. A validator can check it before anything is drawn.
Gradus GE-360 — A tie on the last note of a voice has nothing to tie to. Gradus Engraving Rulebook v1.0. https://gradusmusic.com/engraving/rule/tie-dangling-at-voice-end
Rulebook v1.0 · text licensed CC-BY-4.0 · machine-readable at /api/v1/engraving/rules/tie-dangling-at-voice-end