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