Loading…
Loading…
Rule
Gradus GE-238 · cite this code — it is permanent. Rule id tuplet-duration-arithmetic
A tuplet marked num:denom (e.g. 3:2 for a standard triplet) means num notes of the written duration occupy the time normally taken by denom notes of that duration — each note's sounding duration is its written duration × (denom/num). The member notes' written durations must sum, once scaled, to a clean value matching a whole number of the base subdivision the ratio implies.
`tuplets={[{indices: [4,5,6], num: 3, denom: 2}]}` where notes 4-6 are a quarter, an eighth, and an eighth (written total 2 beats) — a standard eighth-note triplet expects 3 equal eighths (written total 1.5 beats, scaling by 2/3 to sound as exactly 1 beat); this malformed example's written total (2 beats) scaled by 2/3 sounds as 1.33 beats, not a clean 1-beat space, meaning the durations don't actually fit a 3:2 relationship.
Gould, Behind Bars, ch. 'Tuplets', the duration-arithmetic definition; exactly the relationship Gradus's OWN playback code already implements for AUDIO (confirmed `tupletScale.set(i, denom/num)`, lines 1531-1533) but never validates for the NOTATED input.
This rule can be decided from pitches, durations and voices — no layout required. A validator can check it before anything is drawn.
Gradus GE-238 — A tuplet's member notes must sum, at their written durations, to exactly the space the tuplet's ratio claims to occupy. Gradus Engraving Rulebook v1.0. https://gradusmusic.com/engraving/rule/tuplet-duration-arithmetic
Rulebook v1.0 · text licensed CC-BY-4.0 · machine-readable at /api/v1/engraving/rules/tuplet-duration-arithmetic