LilyPond — Changes
|
This document lists changes and new features in LilyPond version 2.23.6 since 2.22. |
-
The
markup->stringfunction converts a markup into an approximate string representation; it is used for outputting PDF metadata as well as MIDI lyrics and markers. Markup commands can now define a custom method to convert markups created using them into strings, for use bymarkup->string. For example:#(define-markup-command (upcase layout props arg) (string?) #:as-string (string-upcase arg) (interpret-markup layout props (string-upcase arg)))
-
\bar ","creates a short bar line. -
The new
show-horizontal-skylinesandshow-vertical-skylinesproperties allow to display an object’s skylines. This is more flexible than the already existingdebug-skylinesoption because it works for all grobs. While primarily meant for debugging LilyPond, this can be useful when trying to understand spacing decisions or overriding stencils in Scheme. -
Balloons now have changeable formatting.
-
The new
\repeat segnocommand automatically notates a variety of da-capo and dal-segno forms.music = \fixed c' { \repeat segno 2 { b1 } \fine } \score { \music } \score { \unfoldRepeats \music } -
The new
\finecommand inserts a final bar line that interacts gracefully with repeat bar lines. Used inside\repeat, it also prints Fine and ends the music after unfolding.music = \fixed c' { \repeat volta 2 { f1 \volta 2 \fine b1 } } \score { \music } \score { \unfoldRepeats \music } -
The new
\sectioncommand inserts a double bar line that interacts gracefully with repeat bar lines. A passage can be named with the new\sectionLabelcommand.\fixed c' { f1 \break \section \sectionLabel "Trio" \repeat volta 2 { b1 } } -
The drum notation style
weinberg-drums-stylewas added. It is based on Norman Weinberg’s standardization work. -
Support for Persian classical music is now available. For this, two
accidental glyphs, sori and koron, have been added to
LilyPond.
\include "persian.ly" \relative c' { \key d \chahargah bk'8 a gs fo r g ak g | fs ek d c d ef16 d c4 | } -
The new
Mark_performercreates MIDI Marker events likeMark_engravercreates printed marks. -
The new
Mark_tracking_translatortakes over fromMark_engraverthe decision of when to create a mark.Mark_engravercontinues to control formatting and vertical placement.By default,
Mark_engraversin multiple contexts create a common sequence of marks. If independent sequences are desired, multipleMark_tracking_translatorsmust be used. -
The default of the
aux-filesprogram option changed to#f. If you are calling LilyPond with the-dbackend=epsargument and need the auxiliary ‘.tex’ and ‘.texi’ files, you now have to specify-daux-filesexplicitly. The formats forlilypond-bookimages can be set separately for the tall page image (typically PNG for HTML output) and per-system images (typically, EPS or PDF for printed output) with the-dsub-options-dtall-page-formatsand-dseparate-page-formatsrespectively. -
Events attached to notes (e.g., dynamics or articulations) can be
delayed by an arbitrary duration using
\after. This simplifies many situations that previously required the use of explicit polyphony and spacer rests.{ \after 2 \turn g'2. a'4 \after 2 \< b'1 \after 2. \f c'' <>\< \after 4 \> \after 2\! d'' } -
lilypond-booksupports two new music fragment options ‘paper-width’ and ‘paper-height’ to set a custom paper size. -
set-default-paper-sizeandset-paper-sizenow accept a custom paper size.#(set-default-paper-size '(cons (* 100 mm) (* 50 mm)))
-
Scheme-defined translators usable in both ‘\layout’ and
‘\midi’ can now be created with
make-translator. Scheme-defined performers usable only in ‘\midi’ can now be created withmake-performer. Those macros work strictly like the previously existing macromake-engraverfor creating engravers only usable in ‘\layout’. -
The syntax for conditions in markups was made more flexible and
user-friendly. It uses the new markup commands
\ifand\unless. Here are example replacements:2.22 syntax
2.24 syntax
\on-the-fly #first-page …\if \on-first-page…\on-the-fly #not-part-first-page …\unless \on-first-page-of-part …\on-the-fly #(on-page n) …\if \on-page #n … -
In figured bass, brackets can now also be added around accidentals.
-
\numericTimeSignatureand\defaultTimeSignaturenow act on all staves at once (more precisely, on all staves in the sameTimingcontext), thus matching the behavior of\time. -
Parenthesizing chords is supported. Currently, the font size of the
parentheses has to be adjusted manually.
-
Parenthesizing spanners is supported.
-
A “time-based” version of the
\parenthesizecommand was added. It takes a grob path:\parenthesize GrobNameor\parenthesize ContextName.GrobName. It acts like a\once \override. This interface complements the already existing form\parenthesize event, in a fashion similar to\footnote.{ \parenthesize NoteHead c'1 \parenthesize Staff.KeySignature \key g \major c'1 } -
The same grob definition can now be used to create grobs of
different classes (
Item,Spanner,Paper_column,System). As part of this change, the grob typesFootnoteItemandFootnoteSpannerwere consolidated into a single typeFootnote. Similarly,BalloonTextSpannerandBalloonTextItemare unified intoBalloonText.When the grob definition does not mandate a class, engravers should choose what class to create a grob with. For authors of Scheme engravers, this means using either
ly:engraver-make-itemorly:engraver-make-spanner. The utility functionly:engraver-make-stickyis provided to support the frequent case of sticky grobs, such as footnotes and balloons. It creates a grob with the same class as another grob and administrates parents and bounds. -
The new command
\vshapeis like\shape, but also shows the control points and polygon for easier tweaking.{ a1\vshape #'((0 . 0) (0 . 0.5) (0 . 0.9) (0 . 0.4))^( c'1) } -
Support for alternate accidentals was improved. Through the
alterationGlyphsproperty of staff-like contexts, accidental glyphs may be set for all grobs at once (refer to Alternate accidental glyphs). -
Ottava brackets may apply to a single voice instead of the entire
staff. This used to require workarounds.
\layout { \context { \Staff \remove Ottava_spanner_engraver } \context { \Voice \consists Ottava_spanner_engraver } } -
Measure counts now take compressed multi-measure rests and
alternatives into account.
-
The string tunings
banjo-double-candbanjo-double-dwere added. -
lilypond-booknow appends the current directory as the last entry to search for included files, instead of prepending it to the list of specified include paths. This allows include directories to shadow files from the current directory, and will only be noticed if there are files with the same name in both. -
lilypond-booksupports a new snippet option ‘inline’ for inline music, that is, music snippets like
that appear within a paragraph of text.
-
Bar numbers may be centered in their measure, as is common in film scores.
\layout { \context { \Score centerBarNumbers = ##t barNumberVisibility = #all-bar-numbers-visible } } << { \bar "" \repeat unfold 3 { c'4 d' e' f' } } { \repeat unfold 3 { c'4 d' e' f' } } >> -
Adding the
Melody_engraverto theVoicecontext now works out of the box to change the stem direction of the middle note according to the melody. Previously, this required an additional override toStem.neutral-direction.\new Voice \with { \consists Melody_engraver } \relative c'' { \autoBeamOff g8 b a e g b a g | c b d c b e d c | }The
suspendMelodyDecisionscontext property may be used to turn off this behavior temporarily, as\override Stem.neutral-direction = #DOWNused to do. -
In the Emmentaler font, identical-looking noteheads whose only difference was
stem direction have been consolidated into a single glyph. For instance,
the glyphs
noteheads.u2triangleandnoteheads.d2trianglehave been replaced by a single glyph,noteheads.s2triangle. Notehead pairs that look visually different depending on the direction remain distinct.In addition, the
stem-attachmentproperty ofNoteHeadgrobs now returns its actual, direction-dependent stem attachment point instead of a hypothetical upwards-stem attachment point. -
Repeat alternatives may appear within the repeated section.
\repeat volta 3 { c'1 \alternative { d' e' } f' } -
The volta numbers for repeat alternatives may be set with the
\voltacommand.\repeat volta 3 c'1 \alternative { \volta 1 d' \volta 2,3 e' } -
The
\voltacommand removes music when a repeat is unfolded. -
The
\unfoldedcommand adds music when a repeat is unfolded. -
The ends of hairpins may now be aligned to the
LEFT,CENTERorRIGHTofNoteColumngrobs by overriding the propertyendpoint-alignments. -
The
lilypond-bookscript now allows braces in the argument of the commands\lilypond(for LaTeX) and@lilypond(for Texinfo). -
With the new markup list command
string-linesit is now possible to split a string at a given character. The default is to split at line break. Surrounding white space gets dropped. The resulting list of markups may be further formatted. This is a very convenient way of entering additional stanzas for songs. - Color transparency is supported when generating Postscript and PDF files. To use this new feature, it is necessary to use Ghostscript version 9.53 or later.
-
A new grob
FingerGlideSpanneris now available, indicating a finger gliding on a string from one to another position. Several appearances are possible, depending on the setting ofstyle. Shown in the image areline,stub-left,stub-rightandstub-both.Also possible is
dashed-line,dotted-line,zigzag,trill,bowandnone. -
A new grob
BendSpanneris now available forTabStaff, indicating a bent string. Apart from the default three styles are possible:'hold,'pre-bendand'pre-bend-hold. -
A new grob callback function
break-alignment-listis now available for returning different values depending on a grob’s break direction. As an example, use it to provide different alignments of a grob depending on whether it is positioned at the beginning, the middle, or the end of a line. - The alignment of bar numbers appearing in the middle or end of a system has been changed to align them on their left edge. This is in keeping with the advice of Elaine Gould (Behind Bars, p. 237), and was mostly the consensus reached in a discussion of the issue by developers. The alignment of bars at the beginning of a system remains unchanged.
For older news, go to https://lilypond.org/doc/v2.22/Documentation/changes/, https://lilypond.org/doc/v2.20/Documentation/changes/, or go back to the Documentation index.
![[image of music]](../a7/lily-461c4759.png)
![[image of music]](../37/lily-0d649aeb.png)
![[image of music]](../0e/lily-e51790f1.png)
![[image of music]](../f1/lily-b37741b8.png)
![[image of music]](../9f/lily-089c7c5c.png)
![[image of music]](../28/lily-209b4dc4.png)
![[image of music]](../54/lily-2a8c5012.png)
![[image of music]](../16/lily-b9d054bc.png)
![[image of music]](../56/lily-43b66c4a.png)
![[image of music]](../47/lily-11463c8c.png)
![[image of music]](../2e/lily-7f5dc1d7.png)
![[image of music]](../6a/lily-0cbd3d02.png)
![[image of music]](../3c/lily-cff4c1a9.png)
![[image of music]](../2b/lily-4deef8a0.png)
![[image of music]](../6b/lily-10deb902.png)
![[image of music]](../eb/lily-72b65904.png)
![[image of music]](../8a/lily-7ec92caf.png)
![[image of music]](../02/lily-e0286b9a.png)
![[image of music]](../06/lily-d69a227d.png)
![[image of music]](../2f/lily-659c39b4.png)
![[image of music]](../ce/lily-b22fa0c6.png)
![[image of music]](../2d/lily-e8227fe4.png)
![[image of music]](../4d/lily-ae321351.png)
![[image of music]](../c8/lily-a2bd841b.png)
![[image of music]](../98/lily-9ef57be2.png)