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