1 \input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
2 @setfilename lilypond-changes.info
3 @settitle LilyPond Changes
8 @macro inputfileref{DIR,NAME}
9 @uref{../../\DIR\/collated-files.html#\NAME\,@file{\DIR\/\NAME\}}@c
11 @macro usermanref{NAME}
12 @inforef{\NAME\,,../user/lilypond/lilypond}@c
17 @macro inputfileref{DIR,NAME}
20 @macro usermanref{NAME}
21 See user manual, \NAME\
25 @macro textanchor{NAME}
32 @documentencoding UTF-8
39 @top New features in 2.20 since 2.18
41 @allowcodebreaks false
49 * add new items at the top
51 * only show verbatim input for syntax/input changes
53 * try to be as brief possible in those cases
55 * don't try to provide real-world examples, they often get too big,
56 which scares away people.
58 * Write complete sentences.
60 * only show user-visible changes.
65 Additional bass strings (for lute tablature) are supported.
66 @lilypond[quote,verbatim]
67 m = { f'4 d' a f d a, g, fis, e, d, c, \bar "|." }
74 tablatureFormat = #fret-letter-tablature-format
78 stringTunings = \stringTuning <a, d f a d' f'>
79 additionalBassStrings = \stringTuning <c, d, e, fis, g,>
80 fretLabels = #'("a" "b" "r" "d" "e" "f" "g" "h" "i" "k")
87 The markup-list-command @code{\table} is now available.
88 Each column may be aligned differently.
89 @lilypond[quote,verbatim]
91 \override #'(padding . 2)
95 \underline { center-aligned right-aligned center-aligned left-aligned }
96 one "1" thousandth "0.001"
97 eleven "11" hundredth "0.01"
98 twenty "20" tenth "0.1"
99 thousand "1000" one "1.0"
105 A new page breaking function @code{ly:one-line-auto-height-breaking}
106 places a whole score on a single line and changes the page width
107 to match, just like @code{ly:one-line-breaking}. The difference is that
108 it also automatically modifies the height of the page to fit the height
112 Markup-command @code{\draw-squiggle-line} is now available.
113 Customizing is possible with overrides of @code{thickness}, @code{angularity},
114 @code{height} and @code{orientation}
115 @lilypond[quote,verbatim]
118 \draw-squiggle-line #0.5 #'(3 . 3) ##t
121 \override #'(thickness . 4)
122 \draw-squiggle-line #0.5 #'(3 . -3) ##t
125 \override #'(angularity . -5)
126 \draw-squiggle-line #0.5 #'(-3 . -3) ##t
128 \translate #'(3 . -3)
129 \override #'(angularity . 2)
130 \override #'(height . 0.3)
131 \override #'(orientation . -1)
132 \draw-squiggle-line #0.2 #'(-3 . 3) ##t
137 A new command, @code{\RemoveAllEmptyStaves}, has been made available, which
138 acts exactly like @code{\RemoveEmptyStaves}, except for also removing empty
139 staves on the first system in a score.
142 Markup-commands @code{\undertie} and @code{\overtie} are now available, as well
143 as the generic markup-command @code{\tie}.
144 @lilypond[quote,verbatim]
146 \undertie "undertied"
151 c''1 \prall -\tweak text \markup \tie "131" -1
154 { \voiceOne \m \voiceTwo \m }
158 @code{TabStaff} is now able to print micro-tones for bendings etc.
159 @lilypond[quote,verbatim]
163 supportNonIntegerFret = ##t
167 mus = \relative { c'4 cih d dih }
170 \new Staff << \clef "G_8" \mus >>
176 Two new styles of whiteout are now available. The @code{outline} style
177 approximates the contours of a glyph's outline, and its shape is
178 produced from multiple displaced copies of the glyph. The
179 @code{rounded-box} style produces a rounded rectangle shape. For all
180 three styles, including the default @code{box} style, the whiteout
181 shape's @code{thickness}, as a multiple of staff-line thickness, can be
184 @lilypond[verbatim,quote]
187 \filled-box #'(-1 . 15) #'(-3 . 4) #1
188 \override #'(thickness . 3)
189 \whiteout whiteout-box
193 \filled-box #'(-1 . 24) #'(-3 . 4) #1
194 \override #'(style . rounded-box)
195 \override #'(thickness . 3)
196 \whiteout whiteout-rounded-box
200 \filled-box #'(-1 . 18) #'(-3 . 4) #1
201 \override #'(style . outline)
202 \override #'(thickness . 3)
203 \whiteout whiteout-outline
206 \override Staff.Clef.whiteout-style = #'outline
207 \override Staff.Clef.whiteout = 3
213 All of @code{\override}, @code{\revert}, @code{\set}, and
214 @code{\unset} now work with the @code{\once} prefix for making
216 @lilypond[quote,verbatim]
219 \override NoteHead.color = #red
221 \once \override NoteHead.color = #green
223 \once \revert NoteHead.color
225 \revert NoteHead.color
231 When outputting MIDI, LilyPond will now store the @code{title}
232 defined in a score's @code{\header} block (or, if there is no
233 such definition on the @code{\score} level, the first such
234 definition found in a @code{\header} block of the score's
235 enclosing @code{\bookpart}, @code{\book}, or top-level scope)
236 as the name of the MIDI sequence in the MIDI file. Optionally,
237 the name of the MIDI sequence can be overridden using the new
238 @code{midititle} @code{\header} field independently of
239 @code{title} (for example, in case @code{title} contains markup
240 code which does not render as plain text in a satisfactory way
244 Music (and scheme and void) functions and markup commands that
245 just supply the final parameters to a chain of overrides, music
246 function and markup command calls can now be defined in the form
247 of just writing the expression cut short with @code{\etc}.
249 @lilypond[verbatim,quote]
250 bold-red-markup = \markup \bold \with-color #red \etc
251 highlight = \tweak font-size 3 \tweak color #red \etc
253 \markup \bold-red "text"
254 \markuplist \column-lines \bold-red { One Two }
256 { c' \highlight d' e'2-\highlight -! }
260 LilyPond functions defined with @code{define-music-function},
261 @code{define-event-function}, @code{define-scheme-function} and
262 @code{define-void-function} can now be directly called from Scheme
263 as if they were genuine Scheme procedures. Argument checking and
264 matching will still be performed in the same manner as when
265 calling the function through LilyPond input. This includes the
266 insertion of defaults for optional arguments not matching their
267 predicates. Instead of using @code{\default} in the actual
268 argument list for explicitly skipping a sequence of optional
269 arguments, @code{*unspecified*} can be employed.
272 Current input location and parser are now stored in GUILE fluids
273 and can be referenced via the function calls @code{(*location*)}
274 and @code{(*parser*)}. Consequently, a lot of functions
275 previously taking an explicit @code{parser} argument no longer do
278 Functions defined with @code{define-music-function},
279 @code{define-event-function}, @code{define-scheme-function} and
280 @code{define-void-function} no longer use @code{parser} and
281 @code{location} arguments.
283 With those particular definitions, LilyPond will try to recognize
284 legacy use of @code{parser} and @code{location} arguments,
285 providing backwards-compatible semantics for some time.
288 In the "english" notename language, the long notenames for pitches
289 with accidentals now contain a hyphen for better readability. You
294 instead of the previous
299 Double accidentals do not get another hyphen, so the Dutch
300 @code{cisis} has the long English notename @code{c-sharpsharp}.
303 The visual style of tremolo slashes (shape, style and slope)
304 is now more finely controlled.
305 @lilypond[quote,relative=2]
307 \override StemTremolo.shape = #'beam-like
309 \override StemTremolo.style = #'constant
316 Multi-measure rests have length according to their total duration,
317 under the control of @code{MultiMeasureRest.space-increment}.
319 { \compressFullBarRests
320 \override Staff.MultiMeasureRest.space-increment = 3.0
325 Page numbers may now be printed in roman numerals, by setting the
326 @code{page-number-type} paper variable.
329 It is now possible to use @code{\time} and @code{\partial}
330 together to change the time signature in mid measure.
332 @lilypond[verbatim,quote,relative=1]
333 \override Score.BarNumber.break-visibility = #end-of-line-invisible
334 \partial 4 \time 3/4 f4 | 2 4 | 2 \bar "||"
335 \time 9/8 \partial 4. f8 8 8 | 2. 8 8 8 |
339 It is now possible to override the @code{text} property of
342 @lilypond[verbatim,fragment,quote]
344 \new ChordNames \chordmode {
346 \once \override ChordName.text = #"foo"
353 Improved horizontal alignment when using @code{TextScript},
354 with @code{DynamicText} or @code{LyricText}.
357 A new command @code{\magnifyStaff} has been added which scales staff
358 sizes, staff lines, bar lines, beamlets and horizontal spacing generally
359 at the @code{Staff} context level. Staff lines are prevented from being
360 scaled smaller than the default since the thickness of stems, slurs, and
361 the like are all based on the staff line thickness.
364 @code{InstrumentName} now supports @code{text-interface}.
367 There is now support for controlling the @q{expression level} of
368 MIDI channels using the @code{Staff.midiExpression} context property.
369 This can be used to alter the perceived volume of even sustained notes
370 (albeit in a very @q{low-level} way) and accepts a number value between
371 @code{0.0} and @code{1.0}.
376 midiExpression = #0.6
377 midiInstrument = #"clarinet"
382 \set Staff.midiExpression = #0.7 s4\f\<
383 \set Staff.midiExpression = #0.8 s4
384 \set Staff.midiExpression = #0.9 s4
385 \set Staff.midiExpression = #1.0 s4
387 \set Staff.midiExpression = #0.9 s4\>
388 \set Staff.midiExpression = #0.8 s4
389 \set Staff.midiExpression = #0.7 s4
390 \set Staff.midiExpression = #0.6 s4\!
398 Support for making it easier to use alternative @q{music} fonts other
399 than the default Emmentaler in LilyPond has been added. See
400 @uref{http://fonts.openlilylib.org/} for more information.
403 Grobs and their parents can now be aligned separately allowing
404 more flexibility for grob positions. For example the @q{left} edge of a
405 grob can now be aligned on the @q{center} of its parent.
408 Improvements to the @code{\partial} command have been made to
409 avoid problems when using multiple, parallel contexts.
411 @item @code{\chordmode} can now use @code{< >} and @code{<< >>}
415 A new command @code{\tagGroup} has now been added. This complements
416 the existing @code{\keepWithTag} and @code{\removeWithTag} commands.
420 \tagGroup #'(violinI violinII viola cello)
423 declares a list of @q{tags} that belong to a single @q{tag group}.
426 \keepWithTag #'violinI
429 Is now only concerned with @q{tags} from @q{violinI}’s tag group.
431 Any element of the included music tagged with one or more tags from the
432 group, but @emph{not} with @var{violinI}, will be removed.
435 The @code{\addlyrics} function now works with arbitrary contexts
436 incuding @code{Staff}.
439 String numbers can now also be used to print roman numerals
440 (e.g. for unfretted string instruments).
441 @lilypond[verbatim,quote,relative=2]
450 The @code{thin-kern} property of the @code{BarLine} grob has been
451 renamed to @code{segno-kern}.
454 @code{KeyCancellation} grobs now ignore cue clefs (like
455 @code{KeySignature} grobs do).
458 Add support for @code{\once@tie{}\unset}
461 It is now possible to individually color both the dots and parentheses
462 in fret diagrams when using the @code{\fret-diagram-verbose} markup
465 @lilypond[verbatim,quote,relative=1]
468 \override #'(fret-diagram-details . (
469 (finger-code . in-dot))) {
470 \fret-diagram-verbose #'((mute 6)
471 (place-fret 5 3 1 red)
472 (place-fret 4 5 2 inverted)
473 (place-fret 3 5 3 green)
474 (place-fret 2 5 4 blue inverted)
475 (place-fret 1 3 1 violet)
480 \override #'(fret-diagram-details . (
481 (finger-code . below-string))) {
482 \fret-diagram-verbose #'((mute 6)
483 (place-fret 5 3 1 red parenthesized)
484 (place-fret 4 5 2 yellow
487 (place-fret 3 5 3 green)
488 (place-fret 2 5 4 blue )
497 Two new properties have been added for use in
498 @code{fret-diagram-details} when using the @code{\fret-diagram-verbose}
499 markup command; @code{fret-label-horizontal-offset} which affects the
500 @code{fret-label-indication} and @code{paren-padding} which controls the
501 space between the dot and the parentheses surrounding it.
503 @lilypond[verbatim,quote,relative=1]
506 \fret-diagram-verbose #'((mute 6)
510 (place-fret 1 6 4 parenthesized)
515 \override #'(fret-diagram-details . (
516 (fret-label-horizontal-offset . 2)
517 (paren-padding . 0.25))) {
518 \fret-diagram-verbose #'((mute 6)
522 (place-fret 1 6 4 parenthesized)
531 A new markup command @code{\justify-line} has been added. Similar to
532 the @code{\fill-line} markup command except that instead of setting
533 @emph{words} in columns, the @code{\justify-line} command balances the
534 whitespace between them ensuring that when there are three or more
535 words in a markup, the whitespace is always consistent.
537 @lilypond[quote,verbatim,papersize=a6]
538 \markup \fill-line {oooooo oooooo oooooo oooooo}
539 \markup \fill-line {ooooooooo oooooooo oo ooo}
542 @lilypond[quote,verbatim,papersize=a6]
543 \markup \justify-line {oooooo oooooo oooooo oooooo}
544 \markup \justify-line {ooooooooo oooooooo oo ooo}
548 A new command @code{\magnifyMusic} has been added, which allows
549 the notation size to be changed without changing the staff size,
550 while automatically scaling stems, beams, and horizontal spacing.
552 @lilypond[verbatim,quote]
554 \new Voice \relative {
556 <e' e'>4 <f f'>8. <g g'>16 <f f'>8 <e e'>4 r8
558 \new Voice \relative {
561 \override Score.SpacingSpanner.spacing-increment = #(* 1.2 0.63)
562 r32 c'' a c a c a c r c a c a c a c
563 r c a c a c a c a c a c a c a c
570 A new flexible template suitable for a range of choral music, is now
571 provided. This may be used to create simple choral music, with or
572 without piano accompaniment, in two or four staves. Unlike other
573 templates, this template is @q{built-in}, which means it does not
574 need to be copied and edited: instead it is simply @code{\include}'d
575 in the input file. For details, see @rlearning{Built-in templates}.
578 The positioning of tuplet numbers for kneed beams has been significantly
579 improved. Previously, tuplet numbers were placed according to the
580 position of the tuplet bracket, even if it was not printed. This could
581 lead to stranded tuplet numbers. Now they are now positioned
582 closer to the kneed-beam when an appropriate beam segment exists for its
583 placement and when the the bracket is not drawn.
585 Collision detection is also added, offsetting horizontally if too close
586 to an adjoining note column but preserving the number's vertical
587 distance from the kneed beam. If the number itself is too large to
588 fit in the available space the original, bracket-based, positioning
589 system is used instead; and in the event of a collision (e.g. with an
590 accidental) the tuplet number is moved vertically away instead.
592 @lilypond[verbatim,fragment,quote,relative=1]
594 \override Beam.auto-knee-gap = 3
603 The original kneed-beam tuplet behavior is still available through an
604 @code{\override} via a new, @code{knee-to-beam} property.
606 @lilypond[verbatim,fragment,quote,relative=1]
608 \override Beam.auto-knee-gap = 3
609 \override TupletNumber.knee-to-beam = ##f
618 @code{\lyricsto} and @code{\addLyrics} have been @q{harmonized}. Both
619 now accept the same kind of delimited argument list that @code{\lyrics}
620 and @code{\chords} accept. Backward compatibility has been added so
621 music identifiers (i.e. @code{\mus}) are permitted as arguments. A
622 @code{convert-ly} rule has been added that removes redundant uses of
623 @code{\lyricmode} and rearranges combinations with context starters such
624 that @code{\lyricsto} in general is applied last (i.e. like
625 @code{\lyricmode} would be).
628 Scheme functions and identifiers can now be used as output definitions.
631 Scheme expressions can now be used as chord constituents.
634 Improved visual spacing of small and regular @q{MI} Funk and Walker
635 noteheads so they are now the same width as other shaped notes in
636 their respective sets. @code{SOL} noteheads are also now visually
637 improved when used with both the normal Aiken and Sacred Harp heads, as
638 well as with the thin variants.
641 @code{LeftEdge} now has a definable @code{Y-extent} (i.e.vertical). See
642 @rinternals{LeftEdge}.
645 Added a new @code{make-path-stencil} function that supports all
646 @code{path} commands both relative and absolute:
648 @code{lineto}, @code{rlineto}, @code{curveto}, @code{rcurveto},
649 @code{moveto}, @code{rmoveto}, @code{closepath}. The function also
650 supports @q{single-letter} syntax used in standard SVG path commands:
652 @code{L}, @code{l}, @code{C}, @code{c}, @code{M}, @code{m}, @code{Z} and
653 @code{z}. The new command is also backward-compatible with the original
654 @code{make-connected-path-stencil} function. Also see
655 @file{scm/stencil.scm}.
658 Context properties named in the @samp{alternativeRestores} property are
659 restored to their value at the start of the @emph{first} alternative in
660 all subsequent alternatives.
662 Currently the default set restores @q{current meter};
664 @lilypond[verbatim,fragment,quote,relative=2]
666 \repeat volta 2 { c2 e4 | }
675 @q{measure position};
677 @lilypond[verbatim,fragment,quote,relative=2]
679 \repeat volta 2 { c2 e4 | }
682 \set Timing.measurePosition = #(ly:make-moment -1/2)
690 and @q{chord changes};
692 @lilypond[verbatim,fragment,quote]
695 \set chordChanges = ##t
696 \chordmode { c1:m d:m c:m d:m }
699 \repeat volta 2 { \chordmode { c1:m } }
701 { \chordmode { d:m } }
702 { \chordmode { c:m } }
710 Improved MIDI output for breathe marks. After tied notes, breaths take
711 time @emph{only} from the last note of the tie; e.g.
712 @code{@{ c4~ c8 \breathe @}} performs as @code{@{ c4~ c16 r @}} instead
713 of @code{@{ c4 r8 @}}. This is more consistent with articulations and
714 how humans interpret breaths after ties. It now also makes it easier to
715 align simultaneous breathe marks over multiple parts, all with different
719 A new note head style for Tabulature has been added;
720 @code{TabNoteHead.style = #'slash}.
723 Four new Clef glyphs have been added @emph{Double G}, @emph{Tenor G},
724 @emph{Varpercussion} and @emph{varC} and their related tessitura.
725 @lilypond[verbatim,quote,fragment]
726 \override Staff.Clef.full-size-change = ##t
729 \clef "tenorG" c c c c
731 \clef "altovarC" c c c c
732 \clef "tenorvarC" c c c c
733 \clef "baritonevarC" c c c c
734 \clef "varpercussion" c c c c
737 \override Staff.Clef.full-size-change = ##f
740 \clef "tenorG" c c c c
742 \clef "altovarC" c c c c
743 \clef "tenorvarC" c c c c
744 \clef "baritonevarC" c c c
745 \clef "varpercussion" c c c c
749 Isolated durations in music sequences now stand for unpitched
750 notes. This may be useful for specifying rhythms to music or
751 scheme functions. When encountered in the final score, the
752 pitches are provided by the preceding note or chord. Here are two
753 examples where this makes for readable input:
755 @lilypond[verbatim,quote]
756 \new DrumStaff \with { \override StaffSymbol.line-count = 1 }
759 tambourine 8 \tuplet 3/2 { 16 16 16 }
760 8 \tuplet 3/2 { 16 16 16 } 8 8 |
764 @lilypond[verbatim,quote]
765 \new Staff { r16 c'16 ~ 8 ~ 4 ~ 2 | }
769 @code{\displayLilyMusic} and its underlying Scheme functions no
770 longer omit redundant note durations. This makes it easier to
771 reliably recognize and format standalone durations in expressions
778 Beaming exceptions can now be constructed using the
779 @code{\beamExceptions} scheme function. One can now write
781 @lilypond[verbatim,quote,relative=1]
783 \set Timing.beamExceptions =
784 \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
786 \repeat unfold 6 { c32 } |
790 with multiple exceptions separated with @code{|} bar checks
791 (writing the exception pattern without pitches is convenient but
792 not mandatory). Previously, setting the beam exceptions would
793 have required writing
796 \set Timing.beamExceptions =
798 (end . ;entry for end of beams
799 ( ;start of alist of end points
800 ((1 . 32) . (2 2 2)) ;rule for 1/32 beams -- end each 1/16
805 The most common articulations are now reflected in MIDI output.
806 Accent and marcato make notes louder; staccato, staccatissimo and
807 portato make them shorter. Breath marks shorten the previous
810 This behavior is customizable through the @code{midiLength} and
811 @code{midiExtraVelocity} properties on @code{ArticulationEvent}.
812 See @file{script-init.ly} for examples.
815 The PostScript functionality of stroke adjustment is no longer
816 applied automatically but left to the discretion of the PostScript
817 device (by default, Ghostscript uses it for resolutions up to
818 150dpi when generating raster images). When it is enabled, a more
819 complex drawing algorithm designed to benefit from stroke
820 adjustment is employed mostly for stems and bar lines.
822 Stroke adjustment can be forced by specifying the command line
823 option @samp{-dstrokeadjust} to LilyPond. When generating
824 @code{PDF} files, this will usually result in markedly better
825 looking @code{PDF} previews but significantly larger file size.
826 Print quality at high resolutions will be unaffected.
831 For older news, go to
832 @uref{http://lilypond.org/doc/v2.18/Documentation/changes/},
833 @uref{http://lilypond.org/doc/v2.16/Documentation/changes/},
834 or @uref{../,go back} to the Documentation index.