mirror of
https://github.com/kennethreitz/pytheory.git
synced 2026-07-21 18:19:30 +00:00
af1a8d0c2e
- Part.hold() (overlapping) notes no longer corrupt bar lengths in ABC, LilyPond, and MusicXML export. They advanced the bar counter at full duration, drifting every following barline. A new _resolve_holds() helper folds each held note's pitch into the next sounding note as a chord, keeping the pitch and aligning bars. Single-voice notation can't show the exact sustain; MIDI export is lossless there. - Articulations (staccato/accent/marcato/tenuto/fermata) now emit as LilyPond marks and MusicXML <articulations>/<fermata>. MusicXML had extracted note.articulation then dropped it. Lyrics and per-note velocity remain unrepresented in notation (a single-voice limitation, documented). New tests: hold bar-alignment, articulation emission. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>