Skip to content

v0.4.0

Latest

Choose a tag to compare

@github-actions github-actions released this 23 Aug 08:27
· 43 commits to master since this release

The first release installable from the VS Code Marketplace (yotsuda.lilysharp);
0.3.0 shipped as tagged GitHub binaries only. It is also the first release that
changes the language, and every change below is diagnosed rather than silent.

Breaking changes

  • Chord entry is the printed symbolAm, G7, F#m, Bb7, Gm7-5,
    Cmaj7/E: an uppercase root, optional #/b, a bare quality. The LilyPond-shaped
    lowercase : entry (a:m, g2:7) and its per-chord durations are replaced by
    measure-relative placement — a bar's entries divide it on the beat grid the beams
    already own, and . holds the previous chord one more beat. The case is the
    grammar: uppercase letters are roots, so R the rest never collides and b after
    a root is a flat, which is why altered tensions spell +/- (Bb5 remains
    B-flat's power chord). LYS1028 names the old spelling.
  • The $ sigil is removed. A bare name is a phrase reference. The ambiguity it
    hid is closed at the declaration instead: drum vocabulary and q are refused as
    phrase names (LYS1030), dynamics were already reserved, and the clef words stay
    reachable because clef bass owns its keyword.
  • A staff's display name is a quoted stringstaff flute "Flute". A trailing
    bare word now always reads as a part reference, so staff flute click no longer
    eats click as a label and silently stops the click track. The corpus wrote
    neither form, so the measured migration cost was zero of 572 books.
  • NoteColumn.force-hshift is refused (LYS1029) rather than accepted and
    ignored — the exact no-op four documents claimed the language did not have. Its
    row and the implementation flag flip back together. In the same pass
    NoteHead.color and Stem.color became supported: their reader had been live all
    along, so a correctly coloured score shipped with an error and exit 1.

New

  • paper blocks. A page's dimensions come from the source, and size <name>
    sets width, height and the four margins from the paper table, each margin scaled
    from a4 exactly the way scm/paper.scm's set-paper-size scales it — horizontal
    by the width ratio, vertical by the height ratio, rounded to whole millimetres.
    size a4 is pinned as the identity.
  • Named fonts and paper blocks. fonts NAME { } / paper NAME { } at the
    top level declare reusable blocks that bind nothing by themselves; a score
    references one or overrides part of it in place, the override reading as if its
    entries were appended to the named block.
  • MusicXML: import carries the stated page across as a paper block, in
    millimetres through the scaling bridge, writing only the keys the source wrote;
    export emits a form's custom text.

Engraving fidelity

  • Lyrics saw the largest body of work: syllables align on their own voice's
    notehead, a melisma span became the range rod it always was, every reservation
    lands on the column its syllable is drawn on, a word crossing a barline is one
    rod, and an independent lyrics row below a multi-staff system now reads that
    staff's own profile — it had no floor at all, and was engraved through the notes
    on every system but the last.
  • Lead sheets: every line opens with a bar, no bar runs through a word, stanza
    numbers anchor at the line start clear of the opening bar, and the grid row prints
    the meter.
  • Pedal brackets and text-style pedal words hang from their own staff on their own
    spanner; bar numbers hang on their staff rather than the system's top band.
  • Spacing: a glyph is priced at the value it is drawn at rather than its scaled
    duration, and several wishes average the way LilyPond averages them.

Performance

  • Keystroke latency in scores with lyrics: the loose-line chain caches its prefix and
    closes live, verse skylines ride the measure layouts' identity so both passes share
    one store, and the lyric band joins the per-system memo.

Verification

  • The LilyPond-fidelity ledger is now 573 recorded geometric quantities against
    LilyPond 2.26.0 (was 529), with 222 SVG snapshots and 5816 tests, green on
    Windows and Linux.

Packaging

  • The VS Code extension ships as one self-contained VSIX per platform, each bundling
    that platform's .NET runtime and native rendering, so users install nothing but the
    extension.