Skip to content

2.1.2

Latest

Choose a tag to compare

@sschmidTU sschmidTU released this 06 Aug 16:46

OSMD 2.1.2 brings huge performance improvements: ~40% median speedup, 47% median for large scores 馃殌

Image

See #1716

Thanks to @ishinomaru for the first 2 PRs with the biggest performance gains!

See the Changelog:

2.1.2 (2026-08-06)

Bug Fixes

  • Playback: Fix wrong tuplet playback duration from export errors like musx2mxl. Read tuplet note length from time-modification when is un-reduced (5497e15)

Performance Improvements

  • 40% median total performance improvement: Compared to OSMD 2.1.1, normal scores render median 40% faster now, 47% even for large scores, where this is the most useful. This aggregates improvements below. See Issue 1716 for more info and graphics. This is on top of the ~50% (2x) performance improvement in OSMD 2.0.0.
  • Formatter: Dedupe the duration key computation in evaluate() (PR #1715, minor performance gain) (16b5020)
  • Glyph: Cache outline bounding boxes. Median ~20% performance gain (PR #1704) (e9cb6b0)
  • Glyph: Cache scaled glyph outline segments for drawing. Median 2.5% speedup, 9% for largest score (PR #1713) (926fc1d), closes 1704/#1712
  • Glyph: Memoize glyph width lookups during formatting. Median 5% speedup (PR #1712) (27cff40), closes #1704 #1704
  • NoteHead: Re-enable glyph outline caching for noteheads. Median 2% speedup (PR #1711) (b5fc7eb)
  • SkyBottomLineCalculator: Remove per-render allocations in updateLines (2-3% speedup in dense scores, PR #1714) (6077f8f)
  • VexFlowMeasure: Scope correctNotePositions to its own measure (PR #1703). Improves performance especially for long pieces by 7% to over 40%. (c663e0d)
  • VexFlowMeasure: Scope correctNotePositions tab code branch to its own measure (#1703) (ba53f63)
  • Visual Regression Tests: Speed up visual regression tests to single seconds (from minutes), make cross-platform (PR #1709, #676) (1a2f910), closes #ff0000