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