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