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