| [Top][Contents] |
LilyPond — Changes ¶
|
This document lists changes and new features in LilyPond version 2.27.3 since 2.26. |
Note: LilyPond releases can contain syntax changes, which may
require modifications in your existing files written for older
versions so that they work in the new version. To upgrade files,
it is strongly recommended to use the convert-ly
tool distributed with LilyPond, which is described in
Updating files with convert-ly. convert-ly can
perform almost all syntax updates automatically. Frescobaldi users can
run convert-ly directly from Frescobaldi using
“Tools > Update with convert-ly…”. Other editing
environments with LilyPond support may provide a way to run
convert-ly graphically.
| Major changes in LilyPond | ||
| New for musical notation | ||
| New for specialist notation | ||
| Miscellaneous improvements |
| [ << Top ] | [Top][Contents] | [ New for musical notation >> ] |
| [ < Top ] | [ Up: Top ] | [ New for musical notation > ] |
Major changes in LilyPond ¶
- Book and bookpart expressions now have different and separate
types that can be tested using
ly:book?andly:bookpart?. A predicate testing for either (likely:book?did before) is available asly:book-or-bookpart?.Book and bookpart identifiers as well as calls to syntactic scheme functions defined using
define-scheme-functionand returning book or bookpart expressions can now be directly used instead of book or bookpart blocks. \bookand\bookpartblocks now contain their own local scopes for variables. This scope is active across the block and contains all variables defined within the block. As one consequence, assignments to variables are now permitted within\bookand\bookpartblocks, making it easier to restructure standalone LilyPond files by wrapping them into books or bookparts. Outside of the containing block, the variables are not visible. The public interface of the module containing a book or bookpart’s variables can be accessed programmatically using the new Scheme functionly:book-scope; accessorsly:book-lookupandly:book-set-variable!are also provided.- Books and bookparts may now contain output definition blocks
\layoutand/or\midiin addition to\paper(which was always possible). Those take their initial settings from the current active scope. If a bookpart has its own\layoutblock, that provides a default for typesetting all scores it includes that don’t have an output definition of their own. The same holds for a book. Since a score produces only MIDI when it explicitly includes a\midiblock, there is no similar default behavior for MIDI at processing time.
| [ << Major changes in LilyPond ] | [Top][Contents] | [ New for specialist notation >> ] |
| [ < Major changes in LilyPond ] | [ Up: Top ] | [ Pitches improvements > ] |
New for musical notation ¶
| Pitches improvements | ||
| Rhythm improvements | ||
| Expressive mark improvements | ||
| Repeat improvements | ||
| Editorial annotation improvements | ||
| Text and font improvements |
| [ << New for musical notation ] | [Top][Contents] | [ New for specialist notation >> ] |
| [ < New for musical notation ] | [ Up: New for musical notation ] | [ Rhythm improvements > ] |
Pitches improvements ¶
None so far.
| [ << New for musical notation ] | [Top][Contents] | [ New for specialist notation >> ] |
| [ < Pitches improvements ] | [ Up: New for musical notation ] | [ Expressive mark improvements > ] |
Rhythm improvements ¶
- The new
\senzaMisuracommand institutes “free time” and optionally prints an ‘X’ time signature. The sign is enabled with\senzaMisuraTimeSignatureXand disabled with\senzaMisuraTimeSignatureOff.\fixed c' { \senzaMisuraTimeSignatureX \senzaMisura c8 d e f g f e f g1 g8 a g f e d c e d1 }
- The new
\measurecommand changes the measure length to match the duration of the given music and restores it afterward.\fixed c'' { d2( c) \measure { d\breve } }
- The new
\measureRemaindercommand is similar to\measure, but it can be used to complete a measure that has already begun. - The new
\setMeasureLengthFromHerecommand simplifies creating irregular measures by setting the measure length relative to the current measure position. This complements\partial, which changes the measure position relative to the measure length. The new\setDefaultMeasureLengthcommand restores the measure length to the value dictated by the time signature. - The new
\premeasure musiccommand is an abbreviation for\partial duration musicthat computes the duration automatically. - By default, strictly alternating meters consisting of 4/4 and 2/2
are printed in a historic style using multiple C or cut-C symbols.
{ \time #'((2 . 2) (2 . 2)) b'1 2 2 }
- The automatic beaming algorithm now can be told to interrupt an
automatically created beam at some point using
\beamBreak. Similarly, using\noBeamBreak, two adjoining notes can be forced to get beamed together:\relative { c''8 c c c d d \beamBreak d d \time 2/4 c8 8 8 8 8 8 \noBeamBreak 8 8 4. 8 \noBeamBreak 8 4 8 }
| [ << New for musical notation ] | [Top][Contents] | [ New for specialist notation >> ] |
| [ < Rhythm improvements ] | [ Up: New for musical notation ] | [ Repeat improvements > ] |
Expressive mark improvements ¶
None so far.
| [ << New for musical notation ] | [Top][Contents] | [ New for specialist notation >> ] |
| [ < Expressive mark improvements ] | [ Up: New for musical notation ] | [ Editorial annotation improvements > ] |
Repeat improvements ¶
None so far.
| [ << New for musical notation ] | [Top][Contents] | [ New for specialist notation >> ] |
| [ < Repeat improvements ] | [ Up: New for musical notation ] | [ Text and font improvements > ] |
Editorial annotation improvements ¶
- The Scheme function
parenthesize-stencilgot an optional argument to lengthen the parentheses. - The Scheme function
bracketify-stencilgot an optional argument to lengthen the brackets.
| [ << New for musical notation ] | [Top][Contents] | [ New for specialist notation >> ] |
| [ < Editorial annotation improvements ] | [ Up: New for musical notation ] | [ New for specialist notation > ] |
Text and font improvements ¶
- An equal sign was added to the Emmentaler font.
- An ‘X’ time signature was added to the Emmentaler font. It can
optionally be printed when meter is canceled with the new
\senzaMisuracommand. Use of the sign is enabled with\senzaMisuraTimeSignatureXand disabled with\senzaMisuraTimeSignatureOff.
- Text variant glyphs for common time and cut time symbols were
added to the Emmentaler font. They can be either accessed
directly as Unicode characters or using the
\text-common-timeand\text-cut-timemarkup commands.
- Fonts may be changed in a single markup using
\font-select. The font names for the serif, sans and typewriter families are chosen independently.\markup \font-select #'((sans . "DejaVu Sans") (typewriter . "DejaVu Sans Mono")) { \sans \line { Sans-serif font. } \typewriter \line { Typewriter font. } \line { Default serif font. } \font-select #'(serif . "DejaVu Serif") \line { Changed serif font. } }
| [ << New for musical notation ] | [Top][Contents] | [ Miscellaneous improvements >> ] |
| [ < Text and font improvements ] | [ Up: Top ] | [ Miscellaneous improvements > ] |
New for specialist notation ¶
- The chord name input
x:1/xgets now rendered as ‘N.C./x’.\chords { d:1/d }
- White mensural ligatures now support final ascending longae facing backwards,
obey tweaks in more cases, and handle errors more gracefully.
\score { \new PetrucciStaff { \clef "petrucci-c4" \[ g\breve f \tweak ligature-pes ##t c'\longa \] } }
- Stanza numbers in lyrics are now created with a dedicated
\stanza ...command. This replaces the former syntax\set stanza = ....\relative { c'4 c g' g a a g2 } \addlyrics { \stanza "1." Twin -- kle, twin -- kle, lit -- tle star } \addlyrics { \stanza "2." When the bla -- zing sun is gone }
- Stanza numbers in lyrics can now be auto-repeated at the beginning of each
line. To activate this feature, set the
stanzaRemindersproperty to#t:\new Voice \relative { \key e \minor b'4 b a g fis2 e \break b'4 cis d b e2 dis \break e4 g fis fis e1 } \addlyrics { \stanza "1." \set stanzaReminders = ##t Je -- su, mei -- ne Freu -- de, mei -- nes Her -- zens Wei -- de, \set stanzaReminderText = "(1st)" Je -- su, mei -- ne Zier. } \addlyrics { \stanza "2." Un -- ter dei -- nem Schir -- men bin ich vor den Stür -- men \set stanzaReminders = ##t \set stanzaReminderText = #make-tiny-markup al -- ler Fein -- de frei. }
- An alternative to using
\pesand\flexa(which internally do the same) is the command\~. This isn’t new (being introduced in 2003); however, it stayed undocumented and was broken for some time.\new VaticanaScore { \new VaticanaVoice \relative { \[ a \pes b \flexa g \] } }
\new VaticanaScore { \new VaticanaVoice \relative { \[ a \~ b \~ g \] } }
| [ << New for specialist notation ] | [Top][Contents] | [ >> ] |
| [ < New for specialist notation ] | [ Up: Top ] | [ > ] |
Miscellaneous improvements ¶
- Producing SVG output with the legacy -dbackend=svg backend is now much faster for large scores, due to caching extracted glyphs from the SVG font file.
- The new
\verboseBarNumberscommand simplifies documentation examples where bar numbers are a central concern. It might also be useful for debugging. - The new commands
\startGradualTempoChangeand\stopGradualTempoChangedescribe a temporary departure from the prevailing tempo. Currently, these affect only MIDI output. - These functions, which have been deprecated since version 2.13.19,
have been removed:
\deprecatedcresc,\deprecatedendcresc,\deprecateddim, and\deprecatedenddim. - The
glyph-nameproperty of aNoteHeadgrob now contains a fully qualified glyph name, as documented. It is no longer necessary to replace the stencil just to draw a different note head glyph; setting this property suffices.{ c'4 \once\override NoteHead.glyph-name = "noteheads.s2triangle" c'4 }
As a side effect, the Scheme function
note-head::calc-glyph-nameis not needed anymore and will be removed after a deprecation cycle. Depending on the intended use case, its use may be replaced either by accessing theglyph-nameproperty of a specificNoteHeadgrob, or by callingselect-head-glyphfor a specific notehead style and duration-log.
For older news, go to https://lilypond.org/doc/v2.26/Documentation/changes/, or go back to the Documentation index.