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
47 * add new items at the top
48 * only show verbatim input for syntax/input changes
49 * try to be as brief possible in those cases
50 * don't try to provide real-world examples, they often get too big,
51 which scares away people.
52 * Write complete sentences.
53 * only show user-visible changes.
59 @subheading New for musical notation
62 @strong{Displaying pitch improvements}
67 Pitches that have a sharp or flat in their name now need to be
82 Pitches that contain @emph{double} sharps or flats in their name,
83 however, do not need a second hyphen. For example using the Dutch
84 notation @code{cisis}:
87 \key c-sharpsharp \major
91 Accidental rules can now be defined @emph{across} @code{ChoirStaff}
95 Two new accidental rules have been added. Both combine the
96 characteristics of @code{modern-voice}, @code{piano} and their
103 \relative { cis''8 fis, bes4 <a cis>8 f bis4 | cis2. <c, g'>4 | }
105 \relative { ais'2 cis, | fis8 b a4 cis2 | }
109 musicB = { \clef bass \new Voice { \voiceTwo \relative {
110 <fis a cis>8[ <fis a cis> \change Staff = up
111 cis' cis \change Staff = down
112 <fis, a> <fis a>] \showStaffSwitch \change Staff = up
113 dis'4 | \change Staff = down
114 <fis, a cis>4 gis <f a d>2 |
119 \new ChoirStaff { << \context Staff = "up" {
120 \accidentalStyle choral \musicA }
121 \context Staff = "down" { \musicB } >>
126 This is the now the default accidental style for @code{ChoirStaff}.
128 @code{choral-cautionary}
133 \relative { cis''8 fis, bes4 <a cis>8 f bis4 |
136 \relative { ais'2 cis, | fis8 b a4 cis2 | }
140 musicB = { \clef bass \new Voice { \voiceTwo \relative {
141 <fis a cis>8[ <fis a cis> \change Staff = up
142 cis' cis \change Staff = down
143 <fis, a> <fis a>] \showStaffSwitch \change Staff = up
144 dis'4 | \change Staff = down
145 <fis, a cis>4 gis <f a d>2 |
150 \new ChoirStaff { << \context Staff = "up" {
151 \accidentalStyle choral-cautionary \musicA }
152 \context Staff = "down" { \musicB } >>
157 The same as @code{choral} but with the extra accidentals typeset as
158 cautionaries instead.
161 Also see @ruser{Automatic accidentals}.
164 Four new clef glyphs are now available; @q{GG} (double-G),
165 @q{Tenor G}, @q{varC} plus related tessitura and
168 @multitable @columnfractions .30 .2 .30 .2
182 @lilypond[line-width=3\cm,notime,ragged-right,relative=1]
188 @lilypond[line-width=3\cm,notime,ragged-right,relative=1]
195 @lilypond[line-width=3\cm,notime,ragged-right,relative=1]
199 @code{\clef altovarC}
201 @lilypond[line-width=3\cm,notime,ragged-right,relative=1]
206 @code{\clef tenorvarC}
208 @lilypond[line-width=3\cm,notime,ragged-right,relative=1]
212 @code{\clef baritonevarC}
214 @lilypond[line-width=3\cm,notime,ragged-right,relative=1]
215 \clef baritonevarC c1
219 @code{\clef varpercussion}
221 @lilypond[line-width=3\cm,notime,ragged-right,relative=1]
222 \clef varpercussion c1
228 Also see @emph{Clef styles}.
231 French note names are now explicitly defined -- previously they were
232 aliased to Italian note names. The @var{d} pitch may be entered as
233 either @code{re} or @code{ré}.
235 @lilypond[fragment,verbatim,quote,ragged-right,relative=1]
237 do ré mi fa | sol la si do | ré1
241 Double sharps are entered using an @code{x} suffix.
243 @lilypond[fragment,verbatim,quote,ragged-right,relative=2]
245 dob, rebb misb fabsb | sold ladd six dosd | rédsd1
251 @strong{Rhythm improvements}
256 Multi-measure rests have length according to their total duration,
257 under the control of @code{MultiMeasureRest.space-increment}. Note the
258 default value is @code{2.0}.
260 @lilypond[fragment,verbatim,quote]
261 \compressFullBarRests
262 R1*2 R1*4 R1*64 R1*16
265 @lilypond[fragment,verbatim,quote]
266 \compressFullBarRests
267 \override Staff.MultiMeasureRest.space-increment = 2.5
268 R1*2 R1*4 R1*64 R1*16
272 Improvements to the @code{\partial} command have been made when used
273 with parallel music and/or multiple contexts.
276 It is now possible to change the time signature mid-measure by using
277 both the @code{\time} and @code{\partial} commands together.
279 @lilypond[verbatim,quote,relative=1]
280 f f f f | f2. \bar "||"
286 Isolated durations in music now stand for unpitched notes. Pitches are
287 taken from the preceding note or chord. This is especially convenient
288 for specifying rhythms in both music and scheme functions and can help
289 improve the readability of LilyPond source files.
291 @lilypond[verbatim,quote,fragment,relative=2]
292 c64[ 64] 32 16 8^- <g b d>4~ 2 | 1
295 @lilypond[verbatim,quote]
296 \new DrumStaff \with { \override StaffSymbol.line-count = 1 }
299 tambourine 8 \tuplet 3/2 { 16 16 16 }
300 8 \tuplet 3/2 { 16 16 16 } 8 8 |
305 Beaming exceptions can now be constructed using the simpler
306 @code{\beamExceptions} scheme function. Previously, this would have
310 \set Timing.beamExceptions =
312 (end . ;entry for end of beams
313 ( ;start of alist of end points
314 ((1 . 32) . (2 2 2)) ;rule for 1/32 beams -- end each 1/16
319 \repeat unfold 6 @{ c32 @}
323 With the new @code{\beamExceptions} scheme function, this becomes:
325 @lilypond[verbatim,quote,relative=1]
326 \set Timing.beamExceptions =
327 \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
331 \repeat unfold 6 { c32 } |
335 with multiple exceptions separated by bar checks. Note that writing the
336 exception pattern without pitches is convenient but not mandatory (also
337 see the previous documented rhythm improvement --
338 @ruser{Isolated durations in music now stand for unpitched notes}.
341 The positioning of tuplet numbers for kneed beams has been improved.
342 Previously, tuplet numbers were placed according to the position of the
343 tuplet bracket, even if the bracket was not printed. This could lead to
344 tuplet numbers being @q{stranded}.
349 @lilypond[fragment,quote,relative=1]
350 % This is a contrived example to simulate the previous behaviour
352 \override Beam.auto-knee-gap = 3
353 \override TupletNumber.knee-to-beam = ##f
354 \once \override TupletBracket.bracket-visibility = ##t
355 \tuplet 3/2 4 { g8 c'' e, }
356 \tuplet 3/2 4 { g,,8 c'' e, }
357 \once \override TupletBracket.bracket-visibility = ##t
358 \tuplet 3/2 4 { c'8 g,, e'' }
359 \tuplet 3/2 4 { c'8 g,, e'' }
360 \once \override TupletBracket.bracket-visibility = ##t
361 \tuplet 2/2 4 { g,8[ e''] }
362 \tuplet 2/2 4 { g,,8[ e''] }
366 Now, when the bracket is not drawn, tuplet numbers are positioned
369 @lilypond[fragment,quote,relative=1]
370 % This is a contrived example to simulate the previous behaviour
372 \override Beam.auto-knee-gap = 3
373 \override TupletBracket.bracket-visibility = ##t
374 \tuplet 3/2 4 { g8 c'' e, }
375 \once \override TupletBracket.bracket-visibility = ##f
376 \tuplet 3/2 4 { g,,8 c'' e, }
377 \tuplet 3/2 4 { c'8 g,, e'' }
378 \once \override TupletBracket.bracket-visibility = ##f
379 \tuplet 3/2 4 { c'8 g,, e'' }
380 \tuplet 2/2 4 { g,8[ e''] }
381 \once \override TupletBracket.bracket-visibility = ##f
382 \tuplet 2/2 4 { g,,8[ e''] }
386 Collision detection for the kneed beam tuplet numbers has also been
387 added, shifting the offset horizontally if the number is too close to
388 an adjoining note column (but still preserving the number's vertical
389 distance). In the event of a collision -- for example with an
390 accidental -- the tuplet number will be shifted vertically instead. If
391 the tuplet number is itself too large to fit within the available space,
392 the original, @q{bracket-based}, positioning system will be used
395 @lilypond[fragment,quote,relative=1]
397 \override Beam.auto-knee-gap = 3
398 \tuplet 3/2 4 { g8 c'' e, c'8 g,, e'' }
399 \tuplet 3/2 4 { g,,8 e''' g,, g,8 e''' ges,, }
403 The original kneed-beam tuplet behavior is still available with a new,
404 @code{knee-to-beam} property for the @code{TupletNumber} layout object.
406 @lilypond[verbatim,fragment,quote,relative=1]
408 \override Beam.auto-knee-gap = 3
409 \override TupletNumber.knee-to-beam = ##f
410 \override TupletBracket.bracket-visibility = ##t
411 \tuplet 3/2 4 { g8 c'' e, }
412 \once \override TupletBracket.bracket-visibility = ##f
413 \tuplet 3/2 4 { g,,8 c'' e, }
419 @strong{Expressive mark improvements}
424 The ends of hairpins may now be fine-tuned using the @code{shorten-pair}
425 grob property. This previously only affected text-spanners (e.g.
426 @code{TupletBracket} and @code{OttavaBracket}).
429 Positive and negative values offset right and left respectively.
431 @lilypond[quote,verbatim,relative=2]
432 \once \override Hairpin.shorten-pair = #'(0 . 2)
435 \once \override Hairpin.shorten-pair = #'(2 . 0)
436 \once \override Hairpin.stencil = #constante-hairpin
439 \once \override Hairpin.shorten-pair = #'(-1 . -1)
440 \once \override Hairpin.stencil = #flared-hairpin
445 Individual slurs and phrasing slurs may now be started from an explicit
448 @lilypond[quote,verbatim,relative=1]
449 <f a( c>1 | <c') e g(> | <a c) e>
452 @lilypond[quote,verbatim,relative=1]
453 <f( a\( c>1 | <c'\) e\( g> | <a c e\)>
457 A new command @code{\=X} has been added -- where @q{X} can be any
458 non-negative integer or symbol -- so that a specific @q{id} can be
459 assigned to the start and end of slurs and phrasing slurs.
462 This is useful when simultaneous slurs are required or if one slur
463 overlaps another or when nesting short slurs within a longer one.
465 @lilypond[quote,verbatim,relative=2]
466 <a c e\=7\(>1 | <g b d\=£(> |
467 <f\=A( a c\="foo"(> | <c'\="foo")\=A) e\=£) g\=7\)> |
471 Also see @ruser{Expressive marks as curves}.
476 @strong{Repeat notation improvements}
481 The visual style of tremolo slashes (shape, style and slope)
482 is now more finely controlled.
483 @lilypond[quote,relative=2]
485 \override StemTremolo.shape = #'beam-like
487 \override StemTremolo.style = #'constant
493 The music function @code{\unfoldRepeats} can now take an
494 optional argument-list specifying which type(s) of repeated music
495 should be unfolded. Possible entries are @code{percent}, @code{tremolo},
497 If the optional argument-list is unspecified, @code{repeated-music} will be
503 @strong{Staff notation improvements}
508 A new command @code{\magnifyStaff} has been added which scales staff
509 sizes, staff lines, bar lines, beamlets and horizontal spacing generally
510 at the @code{Staff} context level. Staff lines are prevented from being
511 scaled smaller than the default since the thickness of stems, slurs, and
512 the like are all based on the staff line thickness.
515 A new command @code{\magnifyMusic} has been added, which allows
516 the notation size to be changed without changing the staff size,
517 while automatically scaling stems, beams, and horizontal spacing.
519 @lilypond[verbatim,quote]
521 \new Voice \relative {
523 <e' e'>4 <f f'>8. <g g'>16 <f f'>8 <e e'>4 r8
525 \new Voice \relative {
528 \override Score.SpacingSpanner.spacing-increment = #(* 1.2 0.63)
529 r32 c'' a c a c a c r c a c a c a c
530 r c a c a c a c a c a c a c a c
537 A new command, @code{\RemoveAllEmptyStaves}, has been made available, which
538 acts exactly like @code{\RemoveEmptyStaves}, except for also removing empty
539 staves on the first system in a score.
542 A new markup command @code{\justify-line} has been added. Similar to
543 the @code{\fill-line} markup command except that instead of setting
544 @emph{words} in columns, the @code{\justify-line} command balances the
545 whitespace between them ensuring that when there are three or more
546 words in a markup, the whitespace is always consistent.
548 @lilypond[quote,verbatim,papersize=a6]
549 \markup \fill-line {oooooo oooooo oooooo oooooo}
550 \markup \fill-line {ooooooooo oooooooo oo ooo}
553 @lilypond[quote,verbatim,papersize=a6]
554 \markup \justify-line {oooooo oooooo oooooo oooooo}
555 \markup \justify-line {ooooooooo oooooooo oo ooo}
561 @strong{Editorial annotation improvements}
566 It is now possible to add text to analysis brackets through the
567 @code{HorizontalBracketText} object.
568 @lilypond[quote,verbatim]
572 \consists "Horizontal_bracket_engraver"
577 \once \override HorizontalBracketText.text = "a"
578 c''\startGroup d''\stopGroup
579 e''-\tweak HorizontalBracketText.text "a'" \startGroup d''\stopGroup
586 @strong{Text formatting improvements}
591 Support for making it easier to use alternative @q{music} fonts other
592 than the default Emmentaler in LilyPond has been added. See
593 @ruser{Replacing the notation font} for more information.
596 Default text fonts have been changed from
597 @code{Century Schoolbook L}, @code{sans-serif}, and @code{monospace}.
599 For @code{svg} backend:
600 @multitable @columnfractions .15 .30
601 @headitem Family @tab Default font
602 @item @emph{roman} @tab @code{serif}
603 @item @emph{sans} @tab @code{sans-serif}
604 @item @emph{typewriter} @tab @code{monospace}
607 @code{serif}, @code{sans-serif}, and @code{monospace} are
608 @code{generic-family} in SVG and CSS specifications.
611 @multitable @columnfractions .15 .30 .55
612 @headitem Family @tab Default font (alias) @tab Alias definition lists
614 @tab @code{LilyPond Serif}
617 C059, Century SchoolBook URW, Century Schoolbook L,
621 @tab @code{LilyPond Sans Serif}
624 Nimbus Sans, Nimbus Sans L, DejaVu Sans,
626 @item @emph{typewriter}
627 @tab @code{LilyPond Monospace}
630 Nimbus Mono PS, Nimbus Mono, Nimbus Mono L,
635 @code{LilyPond Serif}, @code{LilyPond Sans Serif},
636 and @code{LilyPond Monospace} are font aliases defined
637 in the LilyPond dedicated FontConfig configuration file
638 @code{00-lilypond-fonts.conf}.
639 Where a character dosen't exist in the first font listed,
640 the next font listed will be used instead for that character.
641 For details of alias definitions, please see
642 to @code{00-lilypond-fonts.conf} under the installed directory.
645 When using OpenType fonts, font features can be used.
646 Note: Not all OpenType fonts have all functions.
648 @lilypond[quote,verbatim]
650 \markup { Normal Style: Hello HELLO }
651 \markup { \caps { Small Caps: Hello } }
652 \markup { \override #'(font-features . ("smcp"))
653 { True Small Caps: Hello } }
656 \markup { Normal Number Style: 0123456789 }
657 \markup { \override #'(font-features . ("onum"))
658 { Old Number Style: 0123456789 } }
660 % Stylistic Alternates
661 \markup { \override #'(font-features . ("salt 0"))
662 { Stylistic Alternates 0: εφπρθ } }
663 \markup { \override #'(font-features . ("salt 1"))
664 { Stylistic Alternates 1: εφπρθ } }
667 \markup { \override #'(font-features . ("onum" "smcp" "salt 1"))
668 { Multiple features: Hello 0123456789 εφπρθ } }
672 Two new styles of whiteout are now available. The @code{outline} style
673 approximates the contours of a glyph's outline, and its shape is
674 produced from multiple displaced copies of the glyph. The
675 @code{rounded-box} style produces a rounded rectangle shape. For all
676 three styles, including the default @code{box} style, the whiteout
677 shape's @code{thickness}, as a multiple of staff-line thickness, can be
680 @lilypond[verbatim,quote]
683 \filled-box #'(-1 . 15) #'(-3 . 4) #1
684 \override #'(thickness . 3)
685 \whiteout whiteout-box
689 \filled-box #'(-1 . 24) #'(-3 . 4) #1
690 \override #'(style . rounded-box)
691 \override #'(thickness . 3)
692 \whiteout whiteout-rounded-box
696 \filled-box #'(-1 . 18) #'(-3 . 4) #1
697 \override #'(style . outline)
698 \override #'(thickness . 3)
699 \whiteout whiteout-outline
702 \override Staff.Clef.whiteout-style = #'outline
703 \override Staff.Clef.whiteout = 3
709 A new markup-command, @code{\with-dimensions-from}, makes
710 @code{\with-dimensions} easier to use by taking the new
711 dimensions from a markup object, given as first argument.
712 @lilypond[quote,verbatim]
714 \pattern #5 #Y #0 "x"
715 \pattern #5 #Y #0 \with-dimensions-from "x" "f"
716 \pattern #5 #Y #0 \with-dimensions-from "x" "g"
717 \override #'(baseline-skip . 2)
719 \pattern #5 #X #0 "n"
720 \pattern #5 #X #0 \with-dimensions-from "n" "m"
721 \pattern #5 #X #0 \with-dimensions-from "n" "!"
727 Markup-command @code{\draw-squiggle-line} is now available.
728 Customizing is possible with overrides of @code{thickness}, @code{angularity},
729 @code{height} and @code{orientation}
730 @lilypond[quote,verbatim]
733 \draw-squiggle-line #0.5 #'(3 . 3) ##t
736 \override #'(thickness . 4)
737 \draw-squiggle-line #0.5 #'(3 . -3) ##t
740 \override #'(angularity . -5)
741 \draw-squiggle-line #0.5 #'(-3 . -3) ##t
743 \translate #'(3 . -3)
744 \override #'(angularity . 2)
745 \override #'(height . 0.3)
746 \override #'(orientation . -1)
747 \draw-squiggle-line #0.2 #'(-3 . 3) ##t
752 Markup-commands @code{\undertie} and @code{\overtie} are now available, as well
753 as the generic markup-command @code{\tie}.
754 @lilypond[quote,verbatim]
756 \undertie "undertied"
761 c''1 \prall -\tweak text \markup \tie "131" -1
764 { \voiceOne \m \voiceTwo \m }
771 @subheading New for specialist notation
774 @strong{Vocal music improvements}
779 A new flexible template suitable for a range of choral music, is now
780 provided. This may be used to create simple choral music, with or
781 without piano accompaniment, in two or four staves. Unlike other
782 templates, this template is @q{built-in}, which means it does not
783 need to be copied and edited: instead it is simply @code{\include}'d
784 in the input file. For details, see @rlearning{Built-in templates}.
787 The @code{\addlyrics} function now works with arbitrary contexts
788 incuding @code{Staff}.
791 @code{\lyricsto} and @code{\addLyrics} have been @q{harmonized}. Both
792 now accept the same kind of delimited argument list that @code{\lyrics}
793 and @code{\chords} accept. Backward compatibility has been added so
794 music identifiers (i.e. @code{\mus}) are permitted as arguments. A
795 @code{convert-ly} rule has been added that removes redundant uses of
796 @code{\lyricmode} and rearranges combinations with context starters such
797 that @code{\lyricsto} in general is applied last (i.e. like
798 @code{\lyricmode} would be).
803 @strong{Unfretted and fretted string instrument improvements}
808 A new note head style for Tabulature has been added --
809 @code{TabNoteHead.style = #'slash}.
812 In fret-diagrams the distance between frets and the distance between strings is
813 now independently adjustable. Available are @code{fret-distance} and
814 @code{string-distance} as subproperties of @code{fret-diagram-details}.
815 @lilypond[verbatim,quote]
816 fretMrkp = \markup { \fret-diagram-terse #"x;x;o;2;3;2;" }
819 \override #'(padding . 2)
827 \override #'(fret-diagram-details . ((fret-distance . 2)))
832 \override #'(fret-diagram-details . ((string-distance . 2)))
838 It is now possible to individually color both the dots and parentheses
839 in fret diagrams when using the @code{\fret-diagram-verbose} markup
842 @lilypond[verbatim,quote,relative=1]
845 \override #'(fret-diagram-details . (
846 (finger-code . in-dot))) {
847 \fret-diagram-verbose #'((mute 6)
848 (place-fret 5 3 1 red)
849 (place-fret 4 5 2 inverted)
850 (place-fret 3 5 3 green)
851 (place-fret 2 5 4 blue inverted)
852 (place-fret 1 3 1 violet)
857 \override #'(fret-diagram-details . (
858 (finger-code . below-string))) {
859 \fret-diagram-verbose #'((mute 6)
860 (place-fret 5 3 1 red parenthesized)
861 (place-fret 4 5 2 yellow
864 (place-fret 3 5 3 green)
865 (place-fret 2 5 4 blue )
874 Two new properties have been added for use in
875 @code{fret-diagram-details} when using the @code{\fret-diagram-verbose}
876 markup command; @code{fret-label-horizontal-offset} which affects the
877 @code{fret-label-indication} and @code{paren-padding} which controls the
878 space between the dot and the parentheses surrounding it.
880 @lilypond[verbatim,quote,relative=1]
883 \fret-diagram-verbose #'((mute 6)
887 (place-fret 1 6 4 parenthesized)
892 \override #'(fret-diagram-details . (
893 (fret-label-horizontal-offset . 2)
894 (paren-padding . 0.25))) {
895 \fret-diagram-verbose #'((mute 6)
899 (place-fret 1 6 4 parenthesized)
908 Additional bass strings (for lute tablature) are supported.
909 @lilypond[quote,verbatim]
910 m = { f'4 d' a f d a, g, fis, e, d, c, \bar "|." }
917 tablatureFormat = #fret-letter-tablature-format
921 stringTunings = \stringTuning <a, d f a d' f'>
922 additionalBassStrings = \stringTuning <c, d, e, fis, g,>
923 fretLabels = #'("a" "b" "r" "d" "e" "f" "g" "h" "i" "k")
930 String numbers can now also be used to print roman numerals
931 (e.g. for unfretted string instruments).
932 @lilypond[verbatim,quote,relative=2]
941 @code{TabStaff} is now able to print micro-tones for bendings etc.
942 @lilypond[quote,verbatim]
946 supportNonIntegerFret = ##t
950 mus = \relative { c'4 cih d dih }
953 \new Staff << \clef "G_8" \mus >>
961 @strong{Chord notation improvements}
965 @item @code{\chordmode} can now use @code{< >} and @code{<< >>}
969 It is now possible to override the @code{text} property of
972 @lilypond[verbatim,fragment,quote]
974 \new ChordNames \chordmode {
976 \once \override ChordName.text = #"foo"
986 @subheading New for input and output
989 @strong{Input structure improvements}
994 Blocks introduced with @code{\header} can be stored in variables
995 and used as arguments to music and scheme functions and as the
996 body of @code{#@{@dots{}#@}} constructs. They are represented as
999 While @code{\book}, @code{\bookpart}, @code{\score}, @code{\with},
1000 @code{\layout}, @code{\midi}, @code{\paper} blocks can be passed
1001 around in similar manner, they are represented by different data
1007 @strong{Titles and header improvements}
1012 Page numbers may now be printed in roman numerals, by setting the
1013 @code{page-number-type} paper variable.
1018 @strong{Input file improvements}
1023 A new command @code{\tagGroup} has now been added. This complements
1024 the existing @code{\keepWithTag} and @code{\removeWithTag} commands.
1028 \tagGroup #'(violinI violinII viola cello)
1031 declares a list of @q{tags} that belong to a single @q{tag group}.
1034 \keepWithTag #'violinI
1037 Is now only concerned with @q{tags} from @q{violinI}’s tag group.
1039 Any element of the included music tagged with one or more tags from the
1040 group, but @emph{not} with @var{violinI}, will be removed.
1045 @strong{Output improvements}
1050 LilyPond source files may now be embedded inside the generated PDF files.
1051 This experimental feature is disabled by default and may be regarded as unsafe,
1052 as PDF documents with hidden content tend to present a security risk.
1053 Please note that not all PDF viewers have the ability to handle embedded
1054 documents (if not, the PDF output will appear normally and source files
1055 will remain invisible). This feature only works with the PDF backend.
1058 The @code{output-classic-framework} procedure and the @code{-dclip-systems}
1059 are now available with the @code{SVG} backend.
1062 An argument, @code{-dcrop}, has been added, formatting @code{SVG} and
1063 @code{PDF} output without margins or page-breaks.
1066 A new @code{output-attributes} grob property is now used for svg output
1067 instead of the @code{id} grob property. It allows multiple attributes
1068 to be defined as an association list. For example, @code{#'((id . 123)
1069 (class . foo) (data-whatever . @qq{bar}))} will produce the following
1070 group tag in an SVG file: @code{<g id=@qq{123} class=@qq{foo}
1071 data-whatever=@qq{bar}> @dots{} </g>}.
1074 The PostScript functionality of stroke adjustment is no longer
1075 applied automatically but left to the discretion of the PostScript
1076 device (by default, Ghostscript uses it for resolutions up to
1077 150dpi when generating raster images). When it is enabled, a more
1078 complex drawing algorithm designed to benefit from stroke
1079 adjustment is employed mostly for stems and bar lines.
1081 Stroke adjustment can be forced by specifying the command line
1082 option @samp{-dstrokeadjust} to LilyPond. When generating
1083 @code{PDF} files, this will usually result in markedly better
1084 looking @code{PDF} previews but significantly larger file size.
1085 Print quality at high resolutions will be unaffected.
1088 Added a new @code{make-path-stencil} function that supports all
1089 @code{path} commands both relative and absolute:
1091 @code{lineto}, @code{rlineto}, @code{curveto}, @code{rcurveto},
1092 @code{moveto}, @code{rmoveto}, @code{closepath}. The function also
1093 supports @q{single-letter} syntax used in standard SVG path commands:
1095 @code{L}, @code{l}, @code{C}, @code{c}, @code{M}, @code{m}, @code{Z} and
1096 @code{z}. The new command is also backward-compatible with the original
1097 @code{make-connected-path-stencil} function. Also see
1098 @file{scm/stencil.scm}.
1103 @strong{MIDI improvements}
1108 The most common articulations are now reflected in MIDI output.
1109 Accent and marcato make notes louder; staccato, staccatissimo and
1110 portato make them shorter. Breath marks shorten the previous
1113 This behavior is customizable through the @code{midiLength} and
1114 @code{midiExtraVelocity} properties on @code{ArticulationEvent}.
1115 See @file{script-init.ly} for examples.
1118 Improved MIDI output for breathe marks. After tied notes, breaths take
1119 time @emph{only} from the last note of the tie; e.g.
1120 @code{@{ c4~ c8 \breathe @}} performs as @code{@{ c4~ c16 r @}} instead
1121 of @code{@{ c4 r8 @}}. This is more consistent with articulations and
1122 how humans interpret breaths after ties. It now also makes it easier to
1123 align simultaneous breathe marks over multiple parts, all with different
1127 There is now support for controlling the @q{expression level} of
1128 MIDI channels using the @code{Staff.midiExpression} context property.
1129 This can be used to alter the perceived volume of even sustained notes
1130 (albeit in a very @q{low-level} way) and accepts a number value between
1131 @code{0.0} and @code{1.0}.
1136 midiExpression = #0.6
1137 midiInstrument = #"clarinet"
1142 \set Staff.midiExpression = #0.7 s4\f\<
1143 \set Staff.midiExpression = #0.8 s4
1144 \set Staff.midiExpression = #0.9 s4
1145 \set Staff.midiExpression = #1.0 s4
1147 \set Staff.midiExpression = #0.9 s4\>
1148 \set Staff.midiExpression = #0.8 s4
1149 \set Staff.midiExpression = #0.7 s4
1150 \set Staff.midiExpression = #0.6 s4\!
1158 When outputting MIDI, LilyPond will now store the @code{title}
1159 defined in a score's @code{\header} block (or, if there is no
1160 such definition on the @code{\score} level, the first such
1161 definition found in a @code{\header} block of the score's
1162 enclosing @code{\bookpart}, @code{\book}, or top-level scope)
1163 as the name of the MIDI sequence in the MIDI file. Optionally,
1164 the name of the MIDI sequence can be overridden using the new
1165 @code{midititle} @code{\header} field independently of
1166 @code{title} (for example, in case @code{title} contains markup
1167 code which does not render as plain text in a satisfactory way
1173 @strong{Extracting music improvements}
1178 @code{\displayLilyMusic} and its underlying Scheme functions no
1179 longer omit redundant note durations. This makes it easier to
1180 reliably recognize and format standalone durations in expressions
1190 @subheading New for spacing issues
1193 @strong{Page breaking improvements}
1198 There are two new page breaking functions. @code{ly:one-page-breaking}
1199 automatically adjusts the height of the page to fit the music, so that
1200 everything fits on one page. @code{ly:one-line-auto-height-breaking}
1201 is like @code{ly:one-line-breaking}, placing the music on a single
1202 line and adjusting the page width accordingly, however it also
1203 automatically adjusts the page height to fit the music.
1208 @strong{Vertical and Horizontal spacing improvements}
1213 It is now possible to move systems with reference to their current
1214 position using the @code{extra-offset} subproperty of
1215 @code{NonMusicalPaperColumn.line-break-system-details}. Both vertical
1216 and horizontal changes are possible. This feature is especially useful
1217 for making slight adjustments to the default vertical position of
1218 individual systems. See @ruser{Explicit staff and system positioning} for
1222 Improved visual spacing of small and regular @q{MI} Funk and Walker
1223 noteheads so they are now the same width as other shaped notes in
1224 their respective sets. @code{SOL} noteheads are also now visually
1225 improved when used with both the normal Aiken and Sacred Harp heads, as
1226 well as with the thin variants.
1229 @code{LeftEdge} now has a definable @code{Y-extent} (i.e.vertical). See
1230 @rinternals{LeftEdge}.
1233 Grobs and their parents can now be aligned separately allowing
1234 more flexibility for grob positions. For example the @q{left} edge of a
1235 grob can now be aligned on the @q{center} of its parent.
1238 Improved horizontal alignment when using @code{TextScript},
1239 with @code{DynamicText} or @code{LyricText}.
1245 @subheading New for changing defaults
1250 All of @code{\override}, @code{\revert}, @code{\set}, and
1251 @code{\unset} now work with the @code{\once} prefix for making
1253 @lilypond[quote,verbatim]
1256 \override NoteHead.color = #red
1258 \once \override NoteHead.color = #green
1260 \once \revert NoteHead.color
1262 \revert NoteHead.color
1271 @subheading New for Internal interfaces and functions
1276 The music and grob property @code{spanner-id}, used for distinguishing
1277 simultaneous slurs and phrasing slurs, has been changed from a string to
1278 a @emph{key} which can be either a non-negative integer or symbol (also
1279 see the previous documented expressive mark improvement --
1280 @emph{A new command \=X has been added}).
1283 Context properties named in the @samp{alternativeRestores} property are
1284 restored to their value at the start of the @emph{first} alternative in
1285 all subsequent alternatives.
1287 Currently the default set restores @q{current meter}:
1289 @lilypond[verbatim,fragment,quote,relative=2]
1291 \repeat volta 2 { c2 e4 | }
1293 { \time 4/4 f2 d | }
1300 @q{measure position}:
1302 @lilypond[verbatim,fragment,quote,relative=2]
1304 \repeat volta 2 { c2 e4 | }
1307 \set Timing.measurePosition = #(ly:make-moment -1/2)
1315 and @q{chord changes}:
1317 @lilypond[verbatim,fragment,quote]
1320 \set chordChanges = ##t
1321 \chordmode { c1:m d:m c:m d:m }
1324 \repeat volta 2 { \chordmode { c1:m } }
1326 { \chordmode { d:m } }
1327 { \chordmode { c:m } }
1335 LilyPond functions defined with @code{define-music-function},
1336 @code{define-event-function}, @code{define-scheme-function} and
1337 @code{define-void-function} can now be directly called from Scheme
1338 as if they were genuine Scheme procedures. Argument checking and
1339 matching will still be performed in the same manner as when
1340 calling the function through LilyPond input. This includes the
1341 insertion of defaults for optional arguments not matching their
1342 predicates. Instead of using @code{\default} in the actual
1343 argument list for explicitly skipping a sequence of optional
1344 arguments, @code{*unspecified*} can be employed.
1347 Current input location and parser are now stored in GUILE fluids
1348 and can be referenced via the function calls @code{(*location*)}
1349 and @code{(*parser*)}. Consequently, a lot of functions
1350 previously taking an explicit @code{parser} argument no longer do
1353 Functions defined with @code{define-music-function},
1354 @code{define-event-function}, @code{define-scheme-function} and
1355 @code{define-void-function} no longer use @code{parser} and
1356 @code{location} arguments.
1358 With those particular definitions, LilyPond will try to recognize
1359 legacy use of @code{parser} and @code{location} arguments,
1360 providing backwards-compatible semantics for some time.
1363 Scheme functions and identifiers can now be used as output definitions.
1366 Scheme expressions can now be used as chord constituents.
1369 Music (and scheme and void) functions and markup commands that
1370 just supply the final parameters to a chain of overrides, music
1371 function and markup command calls can now be defined in the form
1372 of just writing the expression cut short with @code{\etc}.
1374 @lilypond[verbatim,quote]
1375 \markup bold-red = \markup \bold \with-color #red \etc
1376 highlight = \tweak font-size 3 \tweak color #red \etc
1378 \markup \bold-red "text"
1379 \markuplist \column-lines \bold-red { One Two }
1381 { c' \highlight d' e'2-\highlight -! }
1385 Dot-separated symbol lists like @code{FretBoard.stencil} were
1386 already supported as of version@tie{}2.18. They may now also
1387 contain unsigned integers, and may alternatively be separated by
1388 commata. This allows usage such as
1389 @lilypond[quote,verbatim]
1390 { \time 2,2,1 5/8 g'8 8 8 8 8 }
1394 \tagGroup violin,oboe,bassoon
1398 Such lists may also be used in expressions for assignments, sets,
1399 and overrides. This allows usage such as
1400 @lilypond[quote,verbatim]
1401 { \unset Timing.beamExceptions
1402 \set Timing.beatStructure = 1,2,1
1407 Association list elements could previously be assigned values
1408 individually (for example, paper variables like
1409 @code{system-system-spacing.basic-distance}). They may now be
1410 also referenced in this manner, as with
1413 \void \displayScheme \system-system-spacing.basic-distance
1417 In combination with the previously mentioned changes, this allows
1418 setting and referencing pseudovariables like @code{violin.1}.
1421 The markup-list-command @code{\table} is now available.
1422 Each column may be aligned differently.
1423 @lilypond[quote,verbatim]
1425 \override #'(padding . 2)
1429 \underline { center-aligned right-aligned center-aligned left-aligned }
1430 one "1" thousandth "0.001"
1431 eleven "11" hundredth "0.01"
1432 twenty "20" tenth "0.1"
1433 thousand "1000" one "1.0"
1439 @code{InstrumentName} now supports @code{text-interface}.
1442 The @code{thin-kern} property of the @code{BarLine} grob has been
1443 renamed to @code{segno-kern}.
1446 @code{KeyCancellation} grobs now ignore cue clefs (like
1447 @code{KeySignature} grobs do).
1450 Add support for @code{\once@tie{}\unset}
1455 For older news, go to
1456 @uref{http://lilypond.org/doc/v2.18/Documentation/changes/},
1457 @uref{http://lilypond.org/doc/v2.16/Documentation/changes/},
1458 or @uref{../,go back} to the Documentation index.