]> git.donarmstrong.com Git - lilypond.git/blob - NEWS.txt
New upstream version 2.19.80
[lilypond.git] / NEWS.txt
1 New features in 2.20 since 2.18
2 *******************************
3
4 New for musical notation
5 ------------------------
6
7 *Displaying pitch improvements*
8
9    • Pitches that have a sharp or flat in their name now need to be
10      hyphenated;
11
12           \key a-flat \major
13
14      instead of:
15
16           \key aflat \major
17
18      Pitches that contain _double_ sharps or flats in their name,
19      however, do not need a second hyphen.  For example using the Dutch
20      notation ‘cisis’:
21
22           \key c-sharpsharp \major
23
24    • Accidental rules can now be defined _across_ ‘ChoirStaff’ contexts.
25
26    • Two new accidental rules have been added.  Both combine the
27      characteristics of ‘modern-voice’, ‘piano’ and their equivalents:
28      ‘choral’
29
30           image of music
31
32      This is the now the default accidental style for ‘ChoirStaff’.
33
34      ‘choral-cautionary’
35
36           image of music
37
38      The same as ‘choral’ but with the extra accidentals typeset as
39      cautionaries instead.
40
41      Also see *note (lilypond-notation)Automatic accidentals::.
42
43    • Four new clef glyphs are now available; ‘GG’ (double-G), ‘Tenor G’,
44      ‘varC’ plus related tessitura and ‘Varpercussion’:
45
46      Example                Output         Example                Output
47                                                                   
48      ----------------------------------------------------------------------------
49      ‘\clef GG’             image of music ‘\clef tenorG’         image of music
50      ‘\clef varC’           image of music ‘\clef altovarC’       image of music
51      ‘\clef tenorvarC’      image of music ‘\clef baritonevarC’   image of music
52      ‘\clef                 image of music
53      varpercussion’
54
55      Also see _Clef styles_.
56
57    • French note names are now explicitly defined – previously they were
58      aliased to Italian note names.  The D pitch may be entered as
59      either ‘re’ or ‘ré’.
60
61           \language "français"
62           do ré mi fa | sol la si do | ré1
63           image of music
64
65      Double sharps are entered using an ‘x’ suffix.
66
67           \language "français"
68           dob, rebb misb fabsb | sold ladd six dosd | rédsd1
69           image of music
70
71    *Rhythm improvements*
72
73    • Multi-measure rests have length according to their total duration,
74      under the control of ‘MultiMeasureRest.space-increment’.  Note the
75      default value is ‘2.0’.
76
77           \compressFullBarRests
78           R1*2 R1*4 R1*64 R1*16
79           image of music
80
81           \compressFullBarRests
82           \override Staff.MultiMeasureRest.space-increment = 2.5
83           R1*2 R1*4 R1*64 R1*16
84           image of music
85
86    • Improvements to the ‘\partial’ command have been made when used
87      with parallel music and/or multiple contexts.
88
89    • It is now possible to change the time signature mid-measure by
90      using both the ‘\time’ and ‘\partial’ commands together.
91
92           f f f f | f2. \bar "||"
93           \time 3/4 \partial 4
94           f8 8 | f2 f8 f |
95           image of music
96
97    • Isolated durations in music now stand for unpitched notes.  Pitches
98      are taken from the preceding note or chord.  This is especially
99      convenient for specifying rhythms in both music and scheme
100      functions and can help improve the readability of LilyPond source
101      files.
102
103           c64[ 64] 32 16 8^- <g b d>4~ 2 | 1
104           image of music
105
106           \new DrumStaff \with { \override StaffSymbol.line-count = 1 }
107           \drummode {
108             \time 3/4
109             tambourine 8 \tuplet 3/2 { 16 16 16 }
110                        8 \tuplet 3/2 { 16 16 16 } 8 8 |
111           }
112           image of music
113
114    • Beaming exceptions can now be constructed using the simpler
115      ‘\beamExceptions’ scheme function.  Previously, this would have
116      required writing:
117
118           \set Timing.beamExceptions =
119           #'(                         ;start of alist
120              (end .                   ;entry for end of beams
121               (                       ;start of alist of end points
122                ((1 . 32) . (2 2 2))   ;rule for 1/32 beams -- end each 1/16
123               )))
124
125           \time #'(2 1) 3/16
126           c16 c c
127           \repeat unfold 6 { c32 }
128
129      With the new ‘\beamExceptions’ scheme function, this becomes:
130
131           \set Timing.beamExceptions =
132             \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
133
134           \time #'(2 1) 3/16
135           c16 c c |
136           \repeat unfold 6 { c32 } |
137           image of music
138
139      with multiple exceptions separated by bar checks.  Note that
140      writing the exception pattern without pitches is convenient but not
141      mandatory (also see the previous documented rhythm improvement –
142      *note (lilypond-notation)Isolated durations in music now stand for
143      unpitched notes::.
144
145    • The positioning of tuplet numbers for kneed beams has been
146      improved.  Previously, tuplet numbers were placed according to the
147      position of the tuplet bracket, even if the bracket was not
148      printed.  This could lead to tuplet numbers being ‘stranded’.
149
150      Previously:
151
152           image of music
153
154      Now, when the bracket is not drawn, tuplet numbers are positioned
155      closer.
156
157           image of music
158
159    • Collision detection for the kneed beam tuplet numbers has also been
160      added, shifting the offset horizontally if the number is too close
161      to an adjoining note column (but still preserving the number’s
162      vertical distance).  In the event of a collision – for example with
163      an accidental – the tuplet number will be shifted vertically
164      instead.  If the tuplet number is itself too large to fit within
165      the available space, the original, ‘bracket-based’, positioning
166      system will be used instead.
167
168           image of music
169
170      The original kneed-beam tuplet behavior is still available with a
171      new, ‘knee-to-beam’ property for the ‘TupletNumber’ layout object.
172
173           \time 2/4
174           \override Beam.auto-knee-gap = 3
175           \override TupletNumber.knee-to-beam = ##f
176           \override TupletBracket.bracket-visibility = ##t
177           \tuplet 3/2 4 { g8 c'' e, }
178           \once \override TupletBracket.bracket-visibility = ##f
179           \tuplet 3/2 4 { g,,8 c'' e, }
180           image of music
181
182    *Expressive mark improvements*
183
184    • The ends of hairpins may now be fine-tuned using the ‘shorten-pair’
185      grob property.  This previously only affected text-spanners (e.g.
186      ‘TupletBracket’ and ‘OttavaBracket’).
187
188      Positive and negative values offset right and left respectively.
189
190           \once \override Hairpin.shorten-pair = #'(0 . 2)
191           a1\< | a2 a\!
192
193           \once \override Hairpin.shorten-pair = #'(2 . 0)
194           \once \override Hairpin.stencil = #constante-hairpin
195           a1\< | a2 a\!
196
197           \once \override Hairpin.shorten-pair = #'(-1 . -1)
198           \once \override Hairpin.stencil = #flared-hairpin
199           a1\< | a2 a\!
200           image of music
201
202    • Individual slurs and phrasing slurs may now be started from an
203      explicit note within a chord.
204
205           <f a( c>1 | <c') e g(> | <a c) e>
206           image of music
207
208           <f( a\( c>1 | <c'\) e\( g> | <a c e\)>
209           image of music
210
211    • A new command ‘\=X’ has been added – where ‘X’ can be any
212      non-negative integer or symbol – so that a specific ‘id’ can be
213      assigned to the start and end of slurs and phrasing slurs.
214
215      This is useful when simultaneous slurs are required or if one slur
216      overlaps another or when nesting short slurs within a longer one.
217
218           <a c e\=7\(>1 | <g b d\=£(> |
219           <f\=A( a c\="foo"(> | <c'\="foo")\=A) e\=£) g\=7\)> |
220           image of music
221
222      Also see *note (lilypond-notation)Expressive marks as curves::.
223
224    *Repeat notation improvements*
225
226    • The visual style of tremolo slashes (shape, style and slope) is now
227      more finely controlled.
228           image of music
229
230    • The music function ‘\unfoldRepeats’ can now take an optional
231      argument-list specifying which type(s) of repeated music should be
232      unfolded.  Possible entries are ‘percent’, ‘tremolo’, ‘volta’.  If
233      the optional argument-list is unspecified, ‘repeated-music’ will be
234      used, unfolding all.
235
236    *Staff notation improvements*
237
238    • A new command ‘\magnifyStaff’ has been added which scales staff
239      sizes, staff lines, bar lines, beamlets and horizontal spacing
240      generally at the ‘Staff’ context level.  Staff lines are prevented
241      from being scaled smaller than the default since the thickness of
242      stems, slurs, and the like are all based on the staff line
243      thickness.
244
245    • A new command ‘\magnifyMusic’ has been added, which allows the
246      notation size to be changed without changing the staff size, while
247      automatically scaling stems, beams, and horizontal spacing.
248
249           \new Staff <<
250             \new Voice \relative {
251               \voiceOne
252               <e' e'>4 <f f'>8. <g g'>16 <f f'>8 <e e'>4 r8
253             }
254             \new Voice \relative {
255               \voiceTwo
256               \magnifyMusic 0.63 {
257                 \override Score.SpacingSpanner.spacing-increment = #(* 1.2 0.63)
258                 r32 c'' a c a c a c r c a c a c a c
259                 r c a c a c a c a c a c a c a c
260               }
261             }
262           >>
263           image of music
264
265    • A new command, ‘\RemoveAllEmptyStaves’, has been made available,
266      which acts exactly like ‘\RemoveEmptyStaves’, except for also
267      removing empty staves on the first system in a score.
268
269    • A new markup command ‘\justify-line’ has been added.  Similar to
270      the ‘\fill-line’ markup command except that instead of setting
271      _words_ in columns, the ‘\justify-line’ command balances the
272      whitespace between them ensuring that when there are three or more
273      words in a markup, the whitespace is always consistent.
274
275           \markup \fill-line {oooooo oooooo oooooo oooooo}
276           \markup \fill-line {ooooooooo oooooooo oo ooo}
277           image of music
278
279           \markup \justify-line {oooooo oooooo oooooo oooooo}
280           \markup \justify-line {ooooooooo oooooooo oo ooo}
281           image of music
282
283    *Editorial annotation improvements*
284
285    • It is now possible to add text to analysis brackets through the
286      ‘HorizontalBracketText’ object.
287           \layout {
288             \context {
289               \Voice
290               \consists "Horizontal_bracket_engraver"
291             }
292           }
293
294           {
295             \once \override HorizontalBracketText.text = "a"
296             c''\startGroup d''\stopGroup
297             e''-\tweak HorizontalBracketText.text "a'" \startGroup d''\stopGroup
298           }
299           image of music
300
301    *Text formatting improvements*
302
303    • Support for making it easier to use alternative ‘music’ fonts other
304      than the default Emmentaler in LilyPond has been added.  See *note
305      (lilypond-notation)Replacing the notation font:: for more
306      information.
307
308    • Default text fonts have been changed from ‘Century Schoolbook L’,
309      ‘sans-serif’, and ‘monospace’.
310
311      For ‘svg’ backend:
312      Family      Default font
313      -----------------------------------
314      _roman_     ‘serif’
315      _sans_      ‘sans-serif’
316      _typewriter_‘monospace’
317
318      ‘serif’, ‘sans-serif’, and ‘monospace’ are ‘generic-family’ in SVG
319      and CSS specifications.
320
321      For other backends:
322      Family      Default font (alias)   Alias definition lists
323      ----------------------------------------------------------------------------
324      _roman_     ‘LilyPond Serif’       TeX Gyre Schola, C059, Century
325                                         SchoolBook URW, Century Schoolbook L,
326                                         DejaVu Serif, ..., serif
327      _sans_      ‘LilyPond Sans         TeX Gyre Heros, Nimbus Sans, Nimbus
328                  Serif’                 Sans L, DejaVu Sans, ..., sans-serif
329      _typewriter_‘LilyPond Monospace’   TeX Gyre Cursor, Nimbus Mono PS,
330                                         Nimbus Mono, Nimbus Mono L, DejaVu
331                                         Sans Mono, ..., monospace
332
333      ‘LilyPond Serif’, ‘LilyPond Sans Serif’, and ‘LilyPond Monospace’
334      are font aliases defined in the LilyPond dedicated FontConfig
335      configuration file ‘00-lilypond-fonts.conf’.  Where a character
336      dosen’t exist in the first font listed, the next font listed will
337      be used instead for that character.  For details of alias
338      definitions, please see to ‘00-lilypond-fonts.conf’ under the
339      installed directory.
340
341    • When using OpenType fonts, font features can be used.  Note: Not
342      all OpenType fonts have all functions.
343
344           % True small caps
345           \markup { Normal Style: Hello HELLO }
346           \markup { \caps { Small Caps: Hello } }
347           \markup { \override #'(font-features . ("smcp"))
348                     { True Small Caps: Hello } }
349
350           % Number styles
351           \markup { Normal Number Style: 0123456789 }
352           \markup { \override #'(font-features . ("onum"))
353                     { Old Number Style: 0123456789 } }
354
355           % Stylistic Alternates
356           \markup { \override #'(font-features . ("salt 0"))
357                     { Stylistic Alternates 0: εφπρθ } }
358           \markup { \override #'(font-features . ("salt 1"))
359                     { Stylistic Alternates 1: εφπρθ } }
360
361           % Multiple features
362           \markup { \override #'(font-features . ("onum" "smcp" "salt 1"))
363                     { Multiple features: Hello 0123456789 εφπρθ } }
364           image of music
365
366    • Two new styles of whiteout are now available.  The ‘outline’ style
367      approximates the contours of a glyph’s outline, and its shape is
368      produced from multiple displaced copies of the glyph.  The
369      ‘rounded-box’ style produces a rounded rectangle shape.  For all
370      three styles, including the default ‘box’ style, the whiteout
371      shape’s ‘thickness’, as a multiple of staff-line thickness, can be
372      customized.
373
374           \markup {
375             \combine
376               \filled-box #'(-1 . 15) #'(-3 . 4) #1
377               \override #'(thickness . 3)
378               \whiteout whiteout-box
379           }
380           \markup {
381             \combine
382               \filled-box #'(-1 . 24) #'(-3 . 4) #1
383               \override #'(style . rounded-box)
384               \override #'(thickness . 3)
385               \whiteout whiteout-rounded-box
386           }
387           \markup {
388             \combine
389               \filled-box #'(-1 . 18) #'(-3 . 4) #1
390               \override #'(style . outline)
391               \override #'(thickness . 3)
392               \whiteout whiteout-outline
393           }
394           \relative {
395             \override Staff.Clef.whiteout-style = #'outline
396             \override Staff.Clef.whiteout = 3
397             g'1
398           }
399           image of music
400
401    • A new markup-command, ‘\with-dimensions-from’, makes
402      ‘\with-dimensions’ easier to use by taking the new dimensions from
403      a markup object, given as first argument.
404           \markup {
405             \pattern #5 #Y #0 "x"
406             \pattern #5 #Y #0 \with-dimensions-from "x" "f"
407             \pattern #5 #Y #0 \with-dimensions-from "x" "g"
408             \override #'(baseline-skip . 2)
409             \column {
410               \pattern #5 #X #0 "n"
411               \pattern #5 #X #0 \with-dimensions-from "n" "m"
412               \pattern #5 #X #0 \with-dimensions-from "n" "!"
413             }
414           }
415           image of music
416
417    • Markup-command ‘\draw-squiggle-line’ is now available.  Customizing
418      is possible with overrides of ‘thickness’, ‘angularity’, ‘height’
419      and ‘orientation’
420           \markup
421             \overlay {
422               \draw-squiggle-line #0.5 #'(3 . 3) ##t
423
424               \translate #'(3 . 3)
425               \override #'(thickness . 4)
426               \draw-squiggle-line #0.5 #'(3 . -3) ##t
427
428               \translate #'(6 . 0)
429               \override #'(angularity . -5)
430               \draw-squiggle-line #0.5 #'(-3 . -3) ##t
431
432               \translate #'(3 . -3)
433               \override #'(angularity . 2)
434               \override #'(height . 0.3)
435               \override #'(orientation . -1)
436               \draw-squiggle-line #0.2 #'(-3 . 3) ##t
437             }
438           image of music
439
440    • Markup-commands ‘\undertie’ and ‘\overtie’ are now available, as
441      well as the generic markup-command ‘\tie’.
442           \markup {
443             \undertie "undertied"
444             \overtie "overtied"
445           }
446
447           m = {
448             c''1 \prall -\tweak text \markup \tie "131" -1
449           }
450
451           { \voiceOne \m \voiceTwo \m }
452           image of music
453
454 New for specialist notation
455 ---------------------------
456
457 *Vocal music improvements*
458
459    • A new flexible template suitable for a range of choral music, is
460      now provided.  This may be used to create simple choral music, with
461      or without piano accompaniment, in two or four staves.  Unlike
462      other templates, this template is ‘built-in’, which means it does
463      not need to be copied and edited: instead it is simply ‘\include’’d
464      in the input file.  For details, see *note
465      (lilypond-learning)Built-in templates::.
466
467    • The ‘\addlyrics’ function now works with arbitrary contexts
468      incuding ‘Staff’.
469
470    • ‘\lyricsto’ and ‘\addLyrics’ have been ‘harmonized’.  Both now
471      accept the same kind of delimited argument list that ‘\lyrics’ and
472      ‘\chords’ accept.  Backward compatibility has been added so music
473      identifiers (i.e.  ‘\mus’) are permitted as arguments.  A
474      ‘convert-ly’ rule has been added that removes redundant uses of
475      ‘\lyricmode’ and rearranges combinations with context starters such
476      that ‘\lyricsto’ in general is applied last (i.e.  like
477      ‘\lyricmode’ would be).
478
479    *Unfretted and fretted string instrument improvements*
480
481    • A new note head style for Tabulature has been added –
482      ‘TabNoteHead.style = #'slash’.
483
484    • In fret-diagrams the distance between frets and the distance
485      between strings is now independently adjustable.  Available are
486      ‘fret-distance’ and ‘string-distance’ as subproperties of
487      ‘fret-diagram-details’.
488           fretMrkp = \markup { \fret-diagram-terse #"x;x;o;2;3;2;" }
489
490           \markuplist
491           \override #'(padding . 2)
492           \table #'(0 -1) {
493             "default"
494
495             \fretMrkp
496
497             "fret-distance"
498
499             \override #'(fret-diagram-details . ((fret-distance . 2)))
500             \fretMrkp
501
502             "string-distance"
503
504             \override #'(fret-diagram-details . ((string-distance . 2)))
505             \fretMrkp
506           }
507           image of music
508
509    • It is now possible to individually color both the dots and
510      parentheses in fret diagrams when using the ‘\fret-diagram-verbose’
511      markup command.
512
513           \new Voice {
514             c1^\markup {
515               \override #'(fret-diagram-details . (
516                            (finger-code . in-dot))) {
517                 \fret-diagram-verbose #'((mute 6)
518                                          (place-fret 5 3 1 red)
519                                          (place-fret 4 5 2 inverted)
520                                          (place-fret 3 5 3 green)
521                                          (place-fret 2 5 4 blue inverted)
522                                          (place-fret 1 3 1 violet)
523                                          (barre 5 1 3 ))
524               }
525             }
526             c1^\markup {
527               \override #'(fret-diagram-details . (
528                            (finger-code . below-string))) {
529                 \fret-diagram-verbose #'((mute 6)
530                                        (place-fret 5 3 1 red parenthesized)
531                                        (place-fret 4 5 2 yellow
532                                                          default-paren-color
533                                                          parenthesized)
534                                        (place-fret 3 5 3 green)
535                                        (place-fret 2 5 4 blue )
536                                        (place-fret 1 3 1)
537                                        (barre 5 1 3))
538               }
539             }
540           }
541           image of music
542
543    • Two new properties have been added for use in
544      ‘fret-diagram-details’ when using the ‘\fret-diagram-verbose’
545      markup command; ‘fret-label-horizontal-offset’ which affects the
546      ‘fret-label-indication’ and ‘paren-padding’ which controls the
547      space between the dot and the parentheses surrounding it.
548
549           \new Voice {
550             c1^\markup {
551               \fret-diagram-verbose #'((mute 6)
552                                        (place-fret 5 3 1)
553                                        (place-fret 4 5 2)
554                                        (place-fret 3 5 3)
555                                        (place-fret 1 6 4 parenthesized)
556                                        (place-fret 2 3 1)
557                                        (barre 5 2 3))
558             }
559             c1^\markup {
560               \override #'(fret-diagram-details . (
561                            (fret-label-horizontal-offset . 2)
562                            (paren-padding . 0.25))) {
563                 \fret-diagram-verbose #'((mute 6)
564                                          (place-fret 5 3 1)
565                                          (place-fret 4 5 2)
566                                          (place-fret 3 5 3)
567                                          (place-fret 1 6 4 parenthesized)
568                                          (place-fret 2 3 1)
569                                          (barre 5 2 3))
570               }
571             }
572           }
573           image of music
574
575    • Additional bass strings (for lute tablature) are supported.
576           m = { f'4 d' a f d a, g, fis, e, d, c,  \bar "|." }
577
578           \score {
579             \new TabStaff \m
580             \layout {
581               \context {
582                 \Score
583                 tablatureFormat = #fret-letter-tablature-format
584               }
585               \context {
586                 \TabStaff
587                 stringTunings = \stringTuning <a, d f a d' f'>
588                 additionalBassStrings = \stringTuning <c, d, e, fis, g,>
589                 fretLabels = #'("a" "b" "r" "d" "e" "f" "g" "h" "i" "k")
590               }
591             }
592           }
593           image of music
594
595    • String numbers can now also be used to print roman numerals (e.g.
596      for unfretted string instruments).
597           c2\2
598           \romanStringNumbers
599           c\2
600           \arabicStringNumbers
601           c1\3
602           image of music
603
604    • ‘TabStaff’ is now able to print micro-tones for bendings etc.
605           \layout {
606             \context {
607               \Score
608               supportNonIntegerFret = ##t
609             }
610           }
611
612           mus = \relative { c'4 cih d dih }
613
614           <<
615             \new Staff << \clef "G_8" \mus >>
616             \new TabStaff \mus
617           >>
618           image of music
619
620    *Chord notation improvements*
621
622    • ‘\chordmode’ can now use ‘< >’ and ‘<< >>’ constructs.
623
624    • It is now possible to override the ‘text’ property of chord names.
625
626           <<
627           \new ChordNames \chordmode {
628             a' b c:7
629             \once \override ChordName.text = #"foo"
630             d
631           }
632           >>
633           image of music
634
635 New for input and output
636 ------------------------
637
638 *Input structure improvements*
639
640    • Blocks introduced with ‘\header’ can be stored in variables and
641      used as arguments to music and scheme functions and as the body of
642      ‘#{...#}’ constructs.  They are represented as a Guile module.
643
644      While ‘\book’, ‘\bookpart’, ‘\score’, ‘\with’, ‘\layout’, ‘\midi’,
645      ‘\paper’ blocks can be passed around in similar manner, they are
646      represented by different data types.
647
648    *Titles and header improvements*
649
650    • Page numbers may now be printed in roman numerals, by setting the
651      ‘page-number-type’ paper variable.
652
653    *Input file improvements*
654
655    • A new command ‘\tagGroup’ has now been added.  This complements the
656      existing ‘\keepWithTag’ and ‘\removeWithTag’ commands.  For
657      Example:
658
659           \tagGroup #'(violinI violinII viola cello)
660
661      declares a list of ‘tags’ that belong to a single ‘tag group’.
662
663           \keepWithTag #'violinI
664
665      Is now only concerned with ‘tags’ from ‘violinI’’s tag group.
666
667      Any element of the included music tagged with one or more tags from
668      the group, but _not_ with VIOLINI, will be removed.
669
670    *Output improvements*
671
672    • LilyPond source files may now be embedded inside the generated PDF
673      files.  This experimental feature is disabled by default and may be
674      regarded as unsafe, as PDF documents with hidden content tend to
675      present a security risk.  Please note that not all PDF viewers have
676      the ability to handle embedded documents (if not, the PDF output
677      will appear normally and source files will remain invisible).  This
678      feature only works with the PDF backend.
679
680    • The ‘output-classic-framework’ procedure and the ‘-dclip-systems’
681      are now available with the ‘SVG’ backend.
682
683    • An argument, ‘-dcrop’, has been added, formatting ‘SVG’ and ‘PDF’
684      output without margins or page-breaks.
685
686    • A new ‘output-attributes’ grob property is now used for svg output
687      instead of the ‘id’ grob property.  It allows multiple attributes
688      to be defined as an association list.  For example, ‘#'((id . 123)
689      (class . foo) (data-whatever . “bar”))’ will produce the following
690      group tag in an SVG file: ‘<g id=“123” class=“foo”
691      data-whatever=“bar”> ... </g>’.
692
693    • The PostScript functionality of stroke adjustment is no longer
694      applied automatically but left to the discretion of the PostScript
695      device (by default, Ghostscript uses it for resolutions up to
696      150dpi when generating raster images).  When it is enabled, a more
697      complex drawing algorithm designed to benefit from stroke
698      adjustment is employed mostly for stems and bar lines.
699
700      Stroke adjustment can be forced by specifying the command line
701      option ‘-dstrokeadjust’ to LilyPond.  When generating ‘PDF’ files,
702      this will usually result in markedly better looking ‘PDF’ previews
703      but significantly larger file size.  Print quality at high
704      resolutions will be unaffected.
705
706    • Added a new ‘make-path-stencil’ function that supports all ‘path’
707      commands both relative and absolute:
708
709      ‘lineto’, ‘rlineto’, ‘curveto’, ‘rcurveto’, ‘moveto’, ‘rmoveto’,
710      ‘closepath’.  The function also supports ‘single-letter’ syntax
711      used in standard SVG path commands:
712
713      ‘L’, ‘l’, ‘C’, ‘c’, ‘M’, ‘m’, ‘Z’ and ‘z’.  The new command is also
714      backward-compatible with the original ‘make-connected-path-stencil’
715      function.  Also see ‘scm/stencil.scm’.
716
717    *MIDI improvements*
718
719    • The most common articulations are now reflected in MIDI output.
720      Accent and marcato make notes louder; staccato, staccatissimo and
721      portato make them shorter.  Breath marks shorten the previous note.
722
723      This behavior is customizable through the ‘midiLength’ and
724      ‘midiExtraVelocity’ properties on ‘ArticulationEvent’.  See
725      ‘script-init.ly’ for examples.
726
727    • Improved MIDI output for breathe marks.  After tied notes, breaths
728      take time _only_ from the last note of the tie; e.g.  ‘{ c4~ c8
729      \breathe }’ performs as ‘{ c4~ c16 r }’ instead of ‘{ c4 r8 }’.
730      This is more consistent with articulations and how humans interpret
731      breaths after ties.  It now also makes it easier to align
732      simultaneous breathe marks over multiple parts, all with different
733      note lengths.
734
735    • There is now support for controlling the ‘expression level’ of MIDI
736      channels using the ‘Staff.midiExpression’ context property.  This
737      can be used to alter the perceived volume of even sustained notes
738      (albeit in a very ‘low-level’ way) and accepts a number value
739      between ‘0.0’ and ‘1.0’.
740
741           \score {
742             \new Staff \with {
743               midiExpression = #0.6
744               midiInstrument = #"clarinet"
745             }
746             <<
747               { a'1~ a'1 }
748               {
749                 \set Staff.midiExpression = #0.7 s4\f\<
750                 \set Staff.midiExpression = #0.8 s4
751                 \set Staff.midiExpression = #0.9 s4
752                 \set Staff.midiExpression = #1.0 s4
753
754                 \set Staff.midiExpression = #0.9 s4\>
755                 \set Staff.midiExpression = #0.8 s4
756                 \set Staff.midiExpression = #0.7 s4
757                 \set Staff.midiExpression = #0.6 s4\!
758               }
759             >>
760             \midi { }
761           }
762
763    • When outputting MIDI, LilyPond will now store the ‘title’ defined
764      in a score’s ‘\header’ block (or, if there is no such definition on
765      the ‘\score’ level, the first such definition found in a ‘\header’
766      block of the score’s enclosing ‘\bookpart’, ‘\book’, or top-level
767      scope) as the name of the MIDI sequence in the MIDI file.
768      Optionally, the name of the MIDI sequence can be overridden using
769      the new ‘midititle’ ‘\header’ field independently of ‘title’ (for
770      example, in case ‘title’ contains markup code which does not render
771      as plain text in a satisfactory way automatically).
772
773    *Extracting music improvements*
774
775    • ‘\displayLilyMusic’ and its underlying Scheme functions no longer
776      omit redundant note durations.  This makes it easier to reliably
777      recognize and format standalone durations in expressions like
778           { c4 d4 8 }
779
780 New for spacing issues
781 ----------------------
782
783 *Page breaking improvements*
784
785    • There are two new page breaking functions.  ‘ly:one-page-breaking’
786      automatically adjusts the height of the page to fit the music, so
787      that everything fits on one page.
788      ‘ly:one-line-auto-height-breaking’ is like ‘ly:one-line-breaking’,
789      placing the music on a single line and adjusting the page width
790      accordingly, however it also automatically adjusts the page height
791      to fit the music.
792
793    *Vertical and Horizontal spacing improvements*
794
795    • It is now possible to move systems with reference to their current
796      position using the ‘extra-offset’ subproperty of
797      ‘NonMusicalPaperColumn.line-break-system-details’.  Both vertical
798      and horizontal changes are possible.  This feature is especially
799      useful for making slight adjustments to the default vertical
800      position of individual systems.  See *note
801      (lilypond-notation)Explicit staff and system positioning:: for more
802      information.
803
804    • Improved visual spacing of small and regular ‘MI’ Funk and Walker
805      noteheads so they are now the same width as other shaped notes in
806      their respective sets.  ‘SOL’ noteheads are also now visually
807      improved when used with both the normal Aiken and Sacred Harp
808      heads, as well as with the thin variants.
809
810    • ‘LeftEdge’ now has a definable ‘Y-extent’ (i.e.vertical).  See
811      *note (lilypond-internals)LeftEdge::.
812
813    • Grobs and their parents can now be aligned separately allowing more
814      flexibility for grob positions.  For example the ‘left’ edge of a
815      grob can now be aligned on the ‘center’ of its parent.
816
817    • Improved horizontal alignment when using ‘TextScript’, with
818      ‘DynamicText’ or ‘LyricText’.
819
820 New for changing defaults
821 -------------------------
822
823    • All of ‘\override’, ‘\revert’, ‘\set’, and ‘\unset’ now work with
824      the ‘\once’ prefix for making one-time settings.
825           \relative {
826             c'4 d
827             \override NoteHead.color = #red
828             e4 f |
829             \once \override NoteHead.color = #green
830             g4 a
831             \once \revert NoteHead.color
832             b c |
833             \revert NoteHead.color
834             f2 c |
835           }
836           image of music
837
838 New for Internal interfaces and functions
839 -----------------------------------------
840
841    • The music and grob property ‘spanner-id’, used for distinguishing
842      simultaneous slurs and phrasing slurs, has been changed from a
843      string to a _key_ which can be either a non-negative integer or
844      symbol (also see the previous documented expressive mark
845      improvement – _A new command \=X has been added_).
846
847    • Context properties named in the ‘alternativeRestores’ property are
848      restored to their value at the start of the _first_ alternative in
849      all subsequent alternatives.
850
851      Currently the default set restores ‘current meter’:
852
853           \time 3/4
854           \repeat volta 2 { c2 e4 | }
855           \alternative {
856             { \time 4/4 f2 d | }
857             { f2 d4 | }
858           }
859           g2. |
860           image of music
861
862      ‘measure position’:
863
864           \time 3/4
865           \repeat volta 2 { c2 e4 | }
866           \alternative {
867             { \time 4/4
868               \set Timing.measurePosition = #(ly:make-moment -1/2)
869               f2 | }
870             { f2 d4 | }
871           }
872           g2. |
873           image of music
874
875      and ‘chord changes’:
876
877           <<
878             \new ChordNames {
879               \set chordChanges = ##t
880               \chordmode { c1:m d:m c:m d:m }
881             }
882             \new Staff {
883               \repeat volta 2 { \chordmode { c1:m } }
884               \alternative {
885                 { \chordmode { d:m } }
886                 { \chordmode { c:m } }
887               }
888             \chordmode { d:m }
889           }
890           >>
891           image of music
892
893    • LilyPond functions defined with ‘define-music-function’,
894      ‘define-event-function’, ‘define-scheme-function’ and
895      ‘define-void-function’ can now be directly called from Scheme as if
896      they were genuine Scheme procedures.  Argument checking and
897      matching will still be performed in the same manner as when calling
898      the function through LilyPond input.  This includes the insertion
899      of defaults for optional arguments not matching their predicates.
900      Instead of using ‘\default’ in the actual argument list for
901      explicitly skipping a sequence of optional arguments,
902      ‘*unspecified*’ can be employed.
903
904    • Current input location and parser are now stored in GUILE fluids
905      and can be referenced via the function calls ‘(*location*)’ and
906      ‘(*parser*)’.  Consequently, a lot of functions previously taking
907      an explicit ‘parser’ argument no longer do so.
908
909      Functions defined with ‘define-music-function’,
910      ‘define-event-function’, ‘define-scheme-function’ and
911      ‘define-void-function’ no longer use ‘parser’ and ‘location’
912      arguments.
913
914      With those particular definitions, LilyPond will try to recognize
915      legacy use of ‘parser’ and ‘location’ arguments, providing
916      backwards-compatible semantics for some time.
917
918    • Scheme functions and identifiers can now be used as output
919      definitions.
920
921    • Scheme expressions can now be used as chord constituents.
922
923    • Music (and scheme and void) functions and markup commands that just
924      supply the final parameters to a chain of overrides, music function
925      and markup command calls can now be defined in the form of just
926      writing the expression cut short with ‘\etc’.
927
928           \markup bold-red = \markup \bold \with-color #red \etc
929           highlight = \tweak font-size 3 \tweak color #red \etc
930
931           \markup \bold-red "text"
932           \markuplist \column-lines \bold-red { One Two }
933
934           { c' \highlight d' e'2-\highlight -! }
935           image of music
936
937    • Dot-separated symbol lists like ‘FretBoard.stencil’ were already
938      supported as of version 2.18.  They may now also contain unsigned
939      integers, and may alternatively be separated by commata.  This
940      allows usage such as
941           { \time 2,2,1 5/8  g'8 8 8 8 8 }
942           image of music
943
944      and
945           \tagGroup violin,oboe,bassoon
946
947    • Such lists may also be used in expressions for assignments, sets,
948      and overrides.  This allows usage such as
949           { \unset Timing.beamExceptions
950             \set Timing.beatStructure = 1,2,1
951             g'8 8 8 8 8 8 8 8 }
952           image of music
953
954    • Association list elements could previously be assigned values
955      individually (for example, paper variables like
956      ‘system-system-spacing.basic-distance’).  They may now be also
957      referenced in this manner, as with
958           \paper {
959             \void \displayScheme \system-system-spacing.basic-distance
960           }
961
962      In combination with the previously mentioned changes, this allows
963      setting and referencing pseudovariables like ‘violin.1’.
964
965    • The markup-list-command ‘\table’ is now available.  Each column may
966      be aligned differently.
967           \markuplist {
968               \override #'(padding . 2)
969               \table
970                 #'(0 1 0 -1)
971                 {
972                   \underline { center-aligned right-aligned center-aligned left-aligned }
973                   one "1" thousandth "0.001"
974                   eleven "11" hundredth "0.01"
975                   twenty "20" tenth "0.1"
976                   thousand "1000" one "1.0"
977                 }
978           }
979           image of music
980
981    • ‘InstrumentName’ now supports ‘text-interface’.
982
983    • The ‘thin-kern’ property of the ‘BarLine’ grob has been renamed to
984      ‘segno-kern’.
985
986    • ‘KeyCancellation’ grobs now ignore cue clefs (like ‘KeySignature’
987      grobs do).
988
989    • Add support for ‘\once \unset’
990