]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/changes.tely
New upstream version 2.19.80
[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
44 @ignore
45
46 HINTS
47 * add new items at the top
48 * only show verbatim input for syntax/input changes
49 * try to be as brief possible in those cases
50 * don't try to provide real-world examples, they often get too big,
51 which scares away people.
52 * Write complete sentences.
53 * only show user-visible changes.
54
55 @end ignore
56
57
58
59 @subheading New for musical notation
60
61
62 @strong{Displaying pitch improvements}
63
64 @itemize
65
66 @item
67 Pitches that have a sharp or flat in their name now need to be
68 hyphenated;
69
70 @example
71 \key a-flat \major
72 @end example
73
74 @noindent
75 instead of:
76
77 @example
78 \key aflat \major
79 @end example
80
81 @noindent
82 Pitches that contain @emph{double} sharps or flats in their name,
83 however, do not need a second hyphen. For example using the Dutch
84 notation @code{cisis}:
85
86 @example
87 \key c-sharpsharp \major
88 @end example
89
90 @item
91 Accidental rules can now be defined @emph{across} @code{ChoirStaff}
92 contexts.
93
94 @item
95 Two new accidental rules have been added.  Both combine the
96 characteristics of @code{modern-voice}, @code{piano} and their
97 equivalents:
98 @code{choral}
99
100 @lilypond[quote]
101 musicA = {
102   <<
103     \relative { cis''8 fis, bes4 <a cis>8 f bis4 | cis2. <c, g'>4 | }
104     \\
105     \relative { ais'2 cis, | fis8 b a4 cis2 | }
106   >>
107 }
108
109 musicB = { \clef bass \new Voice { \voiceTwo \relative {
110       <fis a cis>8[ <fis a cis> \change Staff = up
111       cis' cis \change Staff = down
112       <fis, a> <fis a>] \showStaffSwitch \change Staff = up
113       dis'4 | \change Staff = down
114       <fis, a cis>4 gis <f a d>2 |
115     }
116   }
117 }
118
119 \new ChoirStaff { << \context Staff = "up" {
120   \accidentalStyle choral \musicA }
121   \context Staff = "down" { \musicB } >>
122 }
123 @end lilypond
124
125 @noindent
126 This is the now the default accidental style for @code{ChoirStaff}.
127
128 @code{choral-cautionary}
129
130 @lilypond[quote]
131 musicA = {
132   <<
133   \relative { cis''8 fis, bes4 <a cis>8 f bis4 |
134   cis2. <c, g'>4 | }
135   \\
136   \relative { ais'2 cis, | fis8 b a4 cis2 | }
137   >>
138 }
139
140 musicB = { \clef bass \new Voice { \voiceTwo \relative {
141       <fis a cis>8[ <fis a cis> \change Staff = up
142       cis' cis \change Staff = down
143       <fis, a> <fis a>] \showStaffSwitch \change Staff = up
144       dis'4 | \change Staff = down
145       <fis, a cis>4 gis <f a d>2 |
146     }
147   }
148 }
149
150 \new ChoirStaff { << \context Staff = "up" {
151   \accidentalStyle choral-cautionary \musicA }
152   \context Staff = "down" { \musicB } >>
153 }
154 @end lilypond
155
156 @noindent
157 The same as @code{choral} but with the extra accidentals typeset as
158 cautionaries instead.
159
160 @noindent
161 Also see @ruser{Automatic accidentals}.
162
163 @item
164 Four new clef glyphs are now available; @q{GG} (double-G),
165 @q{Tenor G}, @q{varC} plus related tessitura and
166 @q{Varpercussion}:
167
168 @multitable @columnfractions .30 .2 .30 .2
169
170 @headitem
171 Example
172 @tab
173 Output
174 @tab
175 Example
176 @tab
177 Output
178
179 @item
180 @code{\clef GG}
181 @tab
182 @lilypond[line-width=3\cm,notime,ragged-right,relative=1]
183 \clef GG c1
184 @end lilypond
185 @tab
186 @code{\clef tenorG}
187 @tab
188 @lilypond[line-width=3\cm,notime,ragged-right,relative=1]
189 \clef tenorG c1
190 @end lilypond
191
192 @item
193 @code{\clef varC}
194 @tab
195 @lilypond[line-width=3\cm,notime,ragged-right,relative=1]
196 \clef varC c1
197 @end lilypond
198 @tab
199 @code{\clef altovarC}
200 @tab
201 @lilypond[line-width=3\cm,notime,ragged-right,relative=1]
202 \clef altovarC c1
203 @end lilypond
204
205 @item
206 @code{\clef tenorvarC}
207 @tab
208 @lilypond[line-width=3\cm,notime,ragged-right,relative=1]
209 \clef tenorvarC c1
210 @end lilypond
211 @tab
212 @code{\clef baritonevarC}
213 @tab
214 @lilypond[line-width=3\cm,notime,ragged-right,relative=1]
215 \clef baritonevarC c1
216 @end lilypond
217
218 @item
219 @code{\clef varpercussion}
220 @tab
221 @lilypond[line-width=3\cm,notime,ragged-right,relative=1]
222 \clef varpercussion c1
223 @end lilypond
224
225 @end multitable
226
227 @noindent
228 Also see @emph{Clef styles}.
229
230 @item
231 French note names are now explicitly defined -- previously they were
232 aliased to Italian note names.  The @var{d} pitch may be entered as
233 either  @code{re} or @code{ré}.
234
235 @lilypond[fragment,verbatim,quote,ragged-right,relative=1]
236 \language "français"
237 do ré mi fa | sol la si do | ré1
238 @end lilypond
239
240 @noindent
241 Double sharps are entered using an @code{x} suffix.
242
243 @lilypond[fragment,verbatim,quote,ragged-right,relative=2]
244 \language "français"
245 dob, rebb misb fabsb | sold ladd six dosd | rédsd1
246 @end lilypond
247
248 @end itemize
249
250
251 @strong{Rhythm improvements}
252
253 @itemize
254
255 @item
256 Multi-measure rests have length according to their total duration,
257 under the control of @code{MultiMeasureRest.space-increment}.  Note the
258 default value is @code{2.0}.
259
260 @lilypond[fragment,verbatim,quote]
261 \compressFullBarRests
262 R1*2 R1*4 R1*64 R1*16
263 @end lilypond
264
265 @lilypond[fragment,verbatim,quote]
266 \compressFullBarRests
267 \override Staff.MultiMeasureRest.space-increment = 2.5
268 R1*2 R1*4 R1*64 R1*16
269 @end lilypond
270
271 @item
272 Improvements to the @code{\partial} command have been made when used
273 with parallel music and/or multiple contexts.
274
275 @item
276 It is now possible to change the time signature mid-measure by using
277 both the @code{\time} and @code{\partial} commands together.
278
279 @lilypond[verbatim,quote,relative=1]
280 f f f f | f2. \bar "||"
281 \time 3/4 \partial 4
282 f8 8 | f2 f8 f |
283 @end lilypond
284
285 @item
286 Isolated durations in music now stand for unpitched notes.  Pitches are
287 taken from the preceding note or chord.  This is especially convenient
288 for specifying rhythms in both music and scheme functions and can help
289 improve the readability of LilyPond source files.
290
291 @lilypond[verbatim,quote,fragment,relative=2]
292 c64[ 64] 32 16 8^- <g b d>4~ 2 | 1
293 @end lilypond
294
295 @lilypond[verbatim,quote]
296 \new DrumStaff \with { \override StaffSymbol.line-count = 1 }
297 \drummode {
298   \time 3/4
299   tambourine 8 \tuplet 3/2 { 16 16 16 }
300              8 \tuplet 3/2 { 16 16 16 } 8 8 |
301 }
302 @end lilypond
303
304 @item
305 Beaming exceptions can now be constructed using the simpler
306 @code{\beamExceptions} scheme function. Previously, this would have
307 required writing:
308
309 @example
310 \set Timing.beamExceptions =
311 #'(                         ;start of alist
312    (end .                   ;entry for end of beams
313     (                       ;start of alist of end points
314      ((1 . 32) . (2 2 2))   ;rule for 1/32 beams -- end each 1/16
315     )))
316
317 \time #'(2 1) 3/16
318 c16 c c
319 \repeat unfold 6 @{ c32 @}
320 @end example
321
322 @noindent
323 With the new @code{\beamExceptions} scheme function, this becomes:
324
325 @lilypond[verbatim,quote,relative=1]
326 \set Timing.beamExceptions =
327   \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
328
329 \time #'(2 1) 3/16
330 c16 c c |
331 \repeat unfold 6 { c32 } |
332 @end lilypond
333
334 @noindent
335 with multiple exceptions separated by bar checks.  Note that writing the
336 exception pattern without pitches is convenient but not mandatory (also
337 see the previous documented rhythm improvement --
338 @ruser{Isolated durations in music now stand for unpitched notes}.
339
340 @item
341 The positioning of tuplet numbers for kneed beams has been improved.
342 Previously, tuplet numbers were placed according to the position of the
343 tuplet bracket, even if the bracket was not printed.  This could lead to
344 tuplet numbers being @q{stranded}.
345
346 @noindent
347 Previously:
348
349 @lilypond[fragment,quote,relative=1]
350 % This is a contrived example to simulate the previous behaviour
351 \time 3/4
352 \override Beam.auto-knee-gap = 3
353 \override TupletNumber.knee-to-beam = ##f
354 \once \override TupletBracket.bracket-visibility = ##t
355 \tuplet 3/2 4 { g8 c'' e, }
356 \tuplet 3/2 4 { g,,8 c'' e, }
357 \once \override TupletBracket.bracket-visibility = ##t
358 \tuplet 3/2 4 { c'8 g,, e'' }
359 \tuplet 3/2 4 { c'8 g,, e'' }
360 \once \override TupletBracket.bracket-visibility = ##t
361 \tuplet 2/2 4 { g,8[ e''] }
362 \tuplet 2/2 4 { g,,8[ e''] }
363 @end lilypond
364
365 @noindent
366 Now, when the bracket is not drawn, tuplet numbers are positioned
367 closer.
368
369 @lilypond[fragment,quote,relative=1]
370 % This is a contrived example to simulate the previous behaviour
371 \time 3/4
372 \override Beam.auto-knee-gap = 3
373 \override TupletBracket.bracket-visibility = ##t
374 \tuplet 3/2 4 { g8 c'' e, }
375 \once \override TupletBracket.bracket-visibility = ##f
376 \tuplet 3/2 4 { g,,8 c'' e, }
377 \tuplet 3/2 4 { c'8 g,, e'' }
378 \once \override TupletBracket.bracket-visibility = ##f
379 \tuplet 3/2 4 { c'8 g,, e'' }
380 \tuplet 2/2 4 { g,8[ e''] }
381 \once \override TupletBracket.bracket-visibility = ##f
382 \tuplet 2/2 4 { g,,8[ e''] }
383 @end lilypond
384
385 @item
386 Collision detection for the kneed beam tuplet numbers has also been
387 added, shifting the offset horizontally if the number is too close to
388 an adjoining note column (but still preserving the number's vertical
389 distance).  In the event of a collision -- for example with an
390 accidental -- the tuplet number will be shifted vertically instead.  If
391 the tuplet number is itself too large to fit within the available space,
392 the original, @q{bracket-based}, positioning system will be used
393 instead.
394
395 @lilypond[fragment,quote,relative=1]
396 \time 2/4
397 \override Beam.auto-knee-gap = 3
398 \tuplet 3/2 4 { g8 c'' e, c'8 g,, e'' }
399 \tuplet 3/2 4 { g,,8 e''' g,, g,8 e''' ges,, }
400 @end lilypond
401
402 @noindent
403 The original kneed-beam tuplet behavior is still available with a new,
404 @code{knee-to-beam} property for the @code{TupletNumber} layout object.
405
406 @lilypond[verbatim,fragment,quote,relative=1]
407 \time 2/4
408 \override Beam.auto-knee-gap = 3
409 \override TupletNumber.knee-to-beam = ##f
410 \override TupletBracket.bracket-visibility = ##t
411 \tuplet 3/2 4 { g8 c'' e, }
412 \once \override TupletBracket.bracket-visibility = ##f
413 \tuplet 3/2 4 { g,,8 c'' e, }
414 @end lilypond
415
416 @end itemize
417
418
419 @strong{Expressive mark improvements}
420
421 @itemize
422
423 @item
424 The ends of hairpins may now be fine-tuned using the @code{shorten-pair}
425 grob property.  This previously only affected text-spanners (e.g.
426 @code{TupletBracket} and @code{OttavaBracket}).
427
428 @noindent
429 Positive and negative values offset right and left respectively.
430
431 @lilypond[quote,verbatim,relative=2]
432 \once \override Hairpin.shorten-pair = #'(0 . 2)
433 a1\< | a2 a\!
434
435 \once \override Hairpin.shorten-pair = #'(2 . 0)
436 \once \override Hairpin.stencil = #constante-hairpin
437 a1\< | a2 a\!
438
439 \once \override Hairpin.shorten-pair = #'(-1 . -1)
440 \once \override Hairpin.stencil = #flared-hairpin
441 a1\< | a2 a\!
442 @end lilypond
443
444 @item
445 Individual slurs and phrasing slurs may now be started from an explicit
446 note within a chord.
447
448 @lilypond[quote,verbatim,relative=1]
449 <f a( c>1 | <c') e g(> | <a c) e>
450 @end lilypond
451
452 @lilypond[quote,verbatim,relative=1]
453 <f( a\( c>1 | <c'\) e\( g> | <a c e\)>
454 @end lilypond
455
456 @item
457 A new command @code{\=X} has been added -- where @q{X} can be any
458 non-negative integer or symbol -- so that a specific @q{id} can be
459 assigned to the start and end of slurs and phrasing slurs.
460
461 @noindent
462 This is useful when simultaneous slurs are required or if one slur
463 overlaps another or when nesting short slurs within a longer one.
464
465 @lilypond[quote,verbatim,relative=2]
466 <a c e\=7\(>1 | <g b d\=£(> |
467 <f\=A( a c\="foo"(> | <c'\="foo")\=A) e\=£) g\=7\)> |
468 @end lilypond
469
470 @noindent
471 Also see @ruser{Expressive marks as curves}.
472
473 @end itemize
474
475
476 @strong{Repeat notation improvements}
477
478 @itemize
479
480 @item
481 The visual style of tremolo slashes (shape, style and slope)
482 is now more finely controlled.
483 @lilypond[quote,relative=2]
484   a8:32 b: c: d:
485   \override StemTremolo.shape = #'beam-like
486   a: b: c: d:
487   \override StemTremolo.style = #'constant
488   a: b: c: d:
489   g,2
490 @end lilypond
491
492 @item
493 The music function @code{\unfoldRepeats} can now take an
494 optional argument-list specifying which type(s) of repeated music
495 should be unfolded.  Possible entries are @code{percent}, @code{tremolo},
496 @code{volta}.
497 If the optional argument-list is unspecified, @code{repeated-music} will be
498 used, unfolding all.
499
500 @end itemize
501
502
503 @strong{Staff notation improvements}
504
505 @itemize
506
507 @item
508 A new command @code{\magnifyStaff} has been added which scales staff
509 sizes, staff lines, bar lines, beamlets and horizontal spacing generally
510 at the @code{Staff} context level.  Staff lines are prevented from being
511 scaled smaller than the default since the thickness of stems, slurs, and
512 the like are all based on the staff line thickness.
513
514 @item
515 A new command @code{\magnifyMusic} has been added, which allows
516 the notation size to be changed without changing the staff size,
517 while automatically scaling stems, beams, and horizontal spacing.
518
519 @lilypond[verbatim,quote]
520 \new Staff <<
521   \new Voice \relative {
522     \voiceOne
523     <e' e'>4 <f f'>8. <g g'>16 <f f'>8 <e e'>4 r8
524   }
525   \new Voice \relative {
526     \voiceTwo
527     \magnifyMusic 0.63 {
528       \override Score.SpacingSpanner.spacing-increment = #(* 1.2 0.63)
529       r32 c'' a c a c a c r c a c a c a c
530       r c a c a c a c a c a c a c a c
531     }
532   }
533 >>
534 @end lilypond
535
536 @item
537 A new command, @code{\RemoveAllEmptyStaves}, has been made available, which
538 acts exactly like @code{\RemoveEmptyStaves}, except for also removing empty
539 staves on the first system in a score.
540
541 @item
542 A new markup command @code{\justify-line} has been added.  Similar to
543 the @code{\fill-line} markup command except that instead of setting
544 @emph{words} in columns, the @code{\justify-line} command balances the
545 whitespace between them ensuring that when there are three or more
546 words in a markup, the whitespace is always consistent.
547
548 @lilypond[quote,verbatim,papersize=a6]
549 \markup \fill-line {oooooo oooooo oooooo oooooo}
550 \markup \fill-line {ooooooooo oooooooo oo ooo}
551 @end lilypond
552
553 @lilypond[quote,verbatim,papersize=a6]
554 \markup \justify-line {oooooo oooooo oooooo oooooo}
555 \markup \justify-line {ooooooooo oooooooo oo ooo}
556 @end lilypond
557
558 @end itemize
559
560
561 @strong{Editorial annotation improvements}
562
563 @itemize
564
565 @item
566 It is now possible to add text to analysis brackets through the
567 @code{HorizontalBracketText} object.
568 @lilypond[quote,verbatim]
569 \layout {
570   \context {
571     \Voice
572     \consists "Horizontal_bracket_engraver"
573   }
574 }
575
576 {
577   \once \override HorizontalBracketText.text = "a"
578   c''\startGroup d''\stopGroup
579   e''-\tweak HorizontalBracketText.text "a'" \startGroup d''\stopGroup
580 }
581 @end lilypond
582
583 @end itemize
584
585
586 @strong{Text formatting improvements}
587
588 @itemize
589
590 @item
591 Support for making it easier to use alternative @q{music} fonts other
592 than the default Emmentaler in LilyPond has been added.  See
593 @ruser{Replacing the notation font} for more information.
594
595 @item
596 Default text fonts have been changed from
597 @code{Century Schoolbook L}, @code{sans-serif}, and @code{monospace}.
598
599 For @code{svg} backend:
600 @multitable @columnfractions .15 .30
601 @headitem Family @tab Default font
602 @item @emph{roman} @tab @code{serif}
603 @item @emph{sans} @tab @code{sans-serif}
604 @item @emph{typewriter} @tab @code{monospace}
605 @end multitable
606
607 @code{serif}, @code{sans-serif}, and @code{monospace} are
608 @code{generic-family} in SVG and CSS specifications.
609
610 For other backends:
611 @multitable @columnfractions .15 .30 .55
612 @headitem Family @tab Default font (alias) @tab Alias definition lists
613 @item @emph{roman}
614 @tab @code{LilyPond Serif}
615 @tab
616 TeX Gyre Schola,
617 C059, Century SchoolBook URW, Century Schoolbook L,
618 DejaVu Serif,
619 ..., serif
620 @item @emph{sans}
621 @tab @code{LilyPond Sans Serif}
622 @tab
623 TeX Gyre Heros,
624 Nimbus Sans, Nimbus Sans L, DejaVu Sans,
625 ..., sans-serif
626 @item @emph{typewriter}
627 @tab @code{LilyPond Monospace}
628 @tab
629 TeX Gyre Cursor,
630 Nimbus Mono PS, Nimbus Mono, Nimbus Mono L,
631 DejaVu Sans Mono,
632 ..., monospace
633 @end multitable
634
635 @code{LilyPond Serif}, @code{LilyPond Sans Serif},
636 and @code{LilyPond Monospace} are font aliases defined
637 in the LilyPond dedicated FontConfig configuration file
638 @code{00-lilypond-fonts.conf}.
639 Where a character dosen't exist in the first font listed,
640 the next font listed will be used instead for that character.
641 For details of alias definitions, please see
642 to @code{00-lilypond-fonts.conf} under the installed directory.
643
644 @item
645 When using OpenType fonts, font features can be used.
646 Note: Not all OpenType fonts have all functions.
647
648 @lilypond[quote,verbatim]
649 % True small caps
650 \markup { Normal Style: Hello HELLO }
651 \markup { \caps { Small Caps: Hello } }
652 \markup { \override #'(font-features . ("smcp"))
653           { True Small Caps: Hello } }
654
655 % Number styles
656 \markup { Normal Number Style: 0123456789 }
657 \markup { \override #'(font-features . ("onum"))
658           { Old Number Style: 0123456789 } }
659
660 % Stylistic Alternates
661 \markup { \override #'(font-features . ("salt 0"))
662           { Stylistic Alternates 0: εφπρθ } }
663 \markup { \override #'(font-features . ("salt 1"))
664           { Stylistic Alternates 1: εφπρθ } }
665
666 % Multiple features
667 \markup { \override #'(font-features . ("onum" "smcp" "salt 1"))
668           { Multiple features: Hello 0123456789 εφπρθ } }
669 @end lilypond
670
671 @item
672 Two new styles of whiteout are now available.  The @code{outline} style
673 approximates the contours of a glyph's outline, and its shape is
674 produced from multiple displaced copies of the glyph.  The
675 @code{rounded-box} style produces a rounded rectangle shape.  For all
676 three styles, including the default @code{box} style, the whiteout
677 shape's @code{thickness}, as a multiple of staff-line thickness, can be
678 customized.
679
680 @lilypond[verbatim,quote]
681 \markup {
682   \combine
683     \filled-box #'(-1 . 15) #'(-3 . 4) #1
684     \override #'(thickness . 3)
685     \whiteout whiteout-box
686 }
687 \markup {
688   \combine
689     \filled-box #'(-1 . 24) #'(-3 . 4) #1
690     \override #'(style . rounded-box)
691     \override #'(thickness . 3)
692     \whiteout whiteout-rounded-box
693 }
694 \markup {
695   \combine
696     \filled-box #'(-1 . 18) #'(-3 . 4) #1
697     \override #'(style . outline)
698     \override #'(thickness . 3)
699     \whiteout whiteout-outline
700 }
701 \relative {
702   \override Staff.Clef.whiteout-style = #'outline
703   \override Staff.Clef.whiteout = 3
704   g'1
705 }
706 @end lilypond
707
708 @item
709 A new markup-command, @code{\with-dimensions-from}, makes
710 @code{\with-dimensions} easier to use by taking the new
711 dimensions from a markup object, given as first argument.
712 @lilypond[quote,verbatim]
713 \markup {
714   \pattern #5 #Y #0 "x"
715   \pattern #5 #Y #0 \with-dimensions-from "x" "f"
716   \pattern #5 #Y #0 \with-dimensions-from "x" "g"
717   \override #'(baseline-skip . 2)
718   \column {
719     \pattern #5 #X #0 "n"
720     \pattern #5 #X #0 \with-dimensions-from "n" "m"
721     \pattern #5 #X #0 \with-dimensions-from "n" "!"
722   }
723 }
724 @end lilypond
725
726 @item
727 Markup-command @code{\draw-squiggle-line} is now available.
728 Customizing is possible with overrides of @code{thickness}, @code{angularity},
729 @code{height} and @code{orientation}
730 @lilypond[quote,verbatim]
731 \markup
732   \overlay {
733     \draw-squiggle-line #0.5 #'(3 . 3) ##t
734
735     \translate #'(3 . 3)
736     \override #'(thickness . 4)
737     \draw-squiggle-line #0.5 #'(3 . -3) ##t
738
739     \translate #'(6 . 0)
740     \override #'(angularity . -5)
741     \draw-squiggle-line #0.5 #'(-3 . -3) ##t
742
743     \translate #'(3 . -3)
744     \override #'(angularity . 2)
745     \override #'(height . 0.3)
746     \override #'(orientation . -1)
747     \draw-squiggle-line #0.2 #'(-3 . 3) ##t
748   }
749 @end lilypond
750
751 @item
752 Markup-commands @code{\undertie} and @code{\overtie} are now available, as well
753 as the generic markup-command @code{\tie}.
754 @lilypond[quote,verbatim]
755 \markup {
756   \undertie "undertied"
757   \overtie "overtied"
758 }
759
760 m = {
761   c''1 \prall -\tweak text \markup \tie "131" -1
762 }
763
764 { \voiceOne \m \voiceTwo \m }
765 @end lilypond
766
767 @end itemize
768
769
770
771 @subheading New for specialist notation
772
773
774 @strong{Vocal music improvements}
775
776 @itemize
777
778 @item
779 A new flexible template suitable for a range of choral music, is now
780 provided.  This may be used to create simple choral music, with or
781 without piano accompaniment, in two or four staves. Unlike other
782 templates, this template is @q{built-in}, which means it does not
783 need to be copied and edited: instead it is simply @code{\include}'d
784 in the input file.  For details, see @rlearning{Built-in templates}.
785
786 @item
787 The @code{\addlyrics} function now works with arbitrary contexts
788 incuding @code{Staff}.
789
790 @item
791 @code{\lyricsto} and @code{\addLyrics} have been @q{harmonized}.  Both
792 now accept the same kind of delimited argument list that @code{\lyrics}
793 and @code{\chords} accept.  Backward compatibility has been added so
794 music identifiers (i.e. @code{\mus}) are permitted as arguments.  A
795 @code{convert-ly} rule has been added that removes redundant uses of
796 @code{\lyricmode} and rearranges combinations with context starters such
797 that @code{\lyricsto} in general is applied last (i.e. like
798 @code{\lyricmode} would be).
799
800 @end itemize
801
802
803 @strong{Unfretted and fretted string instrument improvements}
804
805 @itemize
806
807 @item
808 A new note head style for Tabulature has been added --
809 @code{TabNoteHead.style = #'slash}.
810
811 @item
812 In fret-diagrams the distance between frets and the distance between strings is
813 now independently adjustable.  Available are @code{fret-distance} and
814 @code{string-distance} as subproperties of @code{fret-diagram-details}.
815 @lilypond[verbatim,quote]
816 fretMrkp = \markup { \fret-diagram-terse #"x;x;o;2;3;2;" }
817
818 \markuplist
819 \override #'(padding . 2)
820 \table #'(0 -1) {
821   "default"
822
823   \fretMrkp
824
825   "fret-distance"
826
827   \override #'(fret-diagram-details . ((fret-distance . 2)))
828   \fretMrkp
829
830   "string-distance"
831
832   \override #'(fret-diagram-details . ((string-distance . 2)))
833   \fretMrkp
834 }
835 @end lilypond
836
837 @item
838 It is now possible to individually color both the dots and parentheses
839 in fret diagrams when using the @code{\fret-diagram-verbose} markup
840 command.
841
842 @lilypond[verbatim,quote,relative=1]
843 \new Voice {
844   c1^\markup {
845     \override #'(fret-diagram-details . (
846                  (finger-code . in-dot))) {
847       \fret-diagram-verbose #'((mute 6)
848                                (place-fret 5 3 1 red)
849                                (place-fret 4 5 2 inverted)
850                                (place-fret 3 5 3 green)
851                                (place-fret 2 5 4 blue inverted)
852                                (place-fret 1 3 1 violet)
853                                (barre 5 1 3 ))
854     }
855   }
856   c1^\markup {
857     \override #'(fret-diagram-details . (
858                  (finger-code . below-string))) {
859       \fret-diagram-verbose #'((mute 6)
860                              (place-fret 5 3 1 red parenthesized)
861                              (place-fret 4 5 2 yellow
862                                                default-paren-color
863                                                parenthesized)
864                              (place-fret 3 5 3 green)
865                              (place-fret 2 5 4 blue )
866                              (place-fret 1 3 1)
867                              (barre 5 1 3))
868     }
869   }
870 }
871 @end lilypond
872
873 @item
874 Two new properties have been added for use in
875 @code{fret-diagram-details} when using the @code{\fret-diagram-verbose}
876 markup command; @code{fret-label-horizontal-offset} which affects the
877 @code{fret-label-indication} and @code{paren-padding} which controls the
878 space between the dot and the parentheses surrounding it.
879
880 @lilypond[verbatim,quote,relative=1]
881 \new Voice {
882   c1^\markup {
883     \fret-diagram-verbose #'((mute 6)
884                              (place-fret 5 3 1)
885                              (place-fret 4 5 2)
886                              (place-fret 3 5 3)
887                              (place-fret 1 6 4 parenthesized)
888                              (place-fret 2 3 1)
889                              (barre 5 2 3))
890   }
891   c1^\markup {
892     \override #'(fret-diagram-details . (
893                  (fret-label-horizontal-offset . 2)
894                  (paren-padding . 0.25))) {
895       \fret-diagram-verbose #'((mute 6)
896                                (place-fret 5 3 1)
897                                (place-fret 4 5 2)
898                                (place-fret 3 5 3)
899                                (place-fret 1 6 4 parenthesized)
900                                (place-fret 2 3 1)
901                                (barre 5 2 3))
902     }
903   }
904 }
905 @end lilypond
906
907 @item
908 Additional bass strings (for lute tablature) are supported.
909 @lilypond[quote,verbatim]
910 m = { f'4 d' a f d a, g, fis, e, d, c,  \bar "|." }
911
912 \score {
913   \new TabStaff \m
914   \layout {
915     \context {
916       \Score
917       tablatureFormat = #fret-letter-tablature-format
918     }
919     \context {
920       \TabStaff
921       stringTunings = \stringTuning <a, d f a d' f'>
922       additionalBassStrings = \stringTuning <c, d, e, fis, g,>
923       fretLabels = #'("a" "b" "r" "d" "e" "f" "g" "h" "i" "k")
924     }
925   }
926 }
927 @end lilypond
928
929 @item
930 String numbers can now also be used to print roman numerals
931 (e.g. for unfretted string instruments).
932 @lilypond[verbatim,quote,relative=2]
933 c2\2
934 \romanStringNumbers
935 c\2
936 \arabicStringNumbers
937 c1\3
938 @end lilypond
939
940 @item
941 @code{TabStaff} is now able to print micro-tones for bendings etc.
942 @lilypond[quote,verbatim]
943 \layout {
944   \context {
945     \Score
946     supportNonIntegerFret = ##t
947   }
948 }
949
950 mus = \relative { c'4 cih d dih }
951
952 <<
953   \new Staff << \clef "G_8" \mus >>
954   \new TabStaff \mus
955 >>
956 @end lilypond
957
958 @end itemize
959
960
961 @strong{Chord notation improvements}
962
963 @itemize
964
965 @item @code{\chordmode} can now use @code{< >} and @code{<< >>}
966 constructs.
967
968 @item
969 It is now possible to override the @code{text} property of
970 chord names.
971
972 @lilypond[verbatim,fragment,quote]
973 <<
974 \new ChordNames \chordmode {
975   a' b c:7
976   \once \override ChordName.text = #"foo"
977   d
978 }
979 >>
980 @end lilypond
981
982 @end itemize
983
984
985
986 @subheading New for input and output
987
988
989 @strong{Input structure improvements}
990
991 @itemize
992
993 @item
994 Blocks introduced with @code{\header} can be stored in variables
995 and used as arguments to music and scheme functions and as the
996 body of @code{#@{@dots{}#@}} constructs.  They are represented as
997 a Guile module.
998
999 While @code{\book}, @code{\bookpart}, @code{\score}, @code{\with},
1000 @code{\layout}, @code{\midi}, @code{\paper} blocks can be passed
1001 around in similar manner, they are represented by different data
1002 types.
1003
1004 @end itemize
1005
1006
1007 @strong{Titles and header improvements}
1008
1009 @itemize
1010
1011 @item
1012 Page numbers may now be printed in roman numerals, by setting the
1013 @code{page-number-type} paper variable.
1014
1015 @end itemize
1016
1017
1018 @strong{Input file improvements}
1019
1020 @itemize
1021
1022 @item
1023 A new command @code{\tagGroup} has now been added.  This complements
1024 the existing @code{\keepWithTag} and @code{\removeWithTag} commands.
1025 For Example:
1026
1027 @example
1028 \tagGroup #'(violinI violinII viola cello)
1029 @end example
1030
1031 declares a list of @q{tags} that belong to a single @q{tag group}.
1032
1033 @example
1034 \keepWithTag #'violinI
1035 @end example
1036
1037 Is now only concerned with @q{tags} from @q{violinI}’s tag group.
1038
1039 Any element of the included music tagged with one or more tags from the
1040 group, but @emph{not} with @var{violinI}, will be removed.
1041
1042 @end itemize
1043
1044
1045 @strong{Output improvements}
1046
1047 @itemize
1048
1049 @item
1050 LilyPond source files may now be embedded inside the generated PDF files.
1051 This experimental feature is disabled by default and may be regarded as unsafe,
1052 as PDF documents with hidden content tend to present a security risk.
1053 Please note that not all PDF viewers have the ability to handle embedded
1054 documents (if not, the PDF output will appear normally and source files
1055 will remain invisible).  This feature only works with the PDF backend.
1056
1057 @item
1058 The @code{output-classic-framework} procedure and the @code{-dclip-systems}
1059 are now available with the @code{SVG} backend.
1060
1061 @item
1062 An argument, @code{-dcrop}, has been added, formatting @code{SVG} and
1063 @code{PDF} output without margins or page-breaks.
1064
1065 @item
1066 A new @code{output-attributes} grob property is now used for svg output
1067 instead of the @code{id} grob property.  It allows multiple attributes
1068 to be defined as an association list.  For example, @code{#'((id . 123)
1069 (class . foo) (data-whatever . @qq{bar}))} will produce the following
1070 group tag in an SVG file: @code{<g id=@qq{123} class=@qq{foo}
1071 data-whatever=@qq{bar}> @dots{} </g>}.
1072
1073 @item
1074 The PostScript functionality of stroke adjustment is no longer
1075 applied automatically but left to the discretion of the PostScript
1076 device (by default, Ghostscript uses it for resolutions up to
1077 150dpi when generating raster images).  When it is enabled, a more
1078 complex drawing algorithm designed to benefit from stroke
1079 adjustment is employed mostly for stems and bar lines.
1080
1081 Stroke adjustment can be forced by specifying the command line
1082 option @samp{-dstrokeadjust} to LilyPond.  When generating
1083 @code{PDF} files, this will usually result in markedly better
1084 looking @code{PDF} previews but significantly larger file size.
1085 Print quality at high resolutions will be unaffected.
1086
1087 @item
1088 Added a new @code{make-path-stencil} function that supports all
1089 @code{path} commands both relative and absolute:
1090
1091 @code{lineto}, @code{rlineto}, @code{curveto}, @code{rcurveto},
1092 @code{moveto}, @code{rmoveto}, @code{closepath}.  The function also
1093 supports @q{single-letter} syntax used in standard SVG path commands:
1094
1095 @code{L}, @code{l}, @code{C}, @code{c}, @code{M}, @code{m}, @code{Z} and
1096 @code{z}.  The new command is also backward-compatible with the original
1097 @code{make-connected-path-stencil} function.  Also see
1098 @file{scm/stencil.scm}.
1099
1100 @end itemize
1101
1102
1103 @strong{MIDI improvements}
1104
1105 @itemize
1106
1107 @item
1108 The most common articulations are now reflected in MIDI output.
1109 Accent and marcato make notes louder; staccato, staccatissimo and
1110 portato make them shorter. Breath marks shorten the previous
1111 note.
1112
1113 This behavior is customizable through the @code{midiLength} and
1114 @code{midiExtraVelocity} properties on @code{ArticulationEvent}.
1115 See @file{script-init.ly} for examples.
1116
1117 @item
1118 Improved MIDI output for breathe marks.  After tied notes, breaths take
1119 time @emph{only} from the last note of the tie; e.g.
1120 @code{@{ c4~ c8 \breathe @}} performs as @code{@{ c4~ c16 r @}} instead
1121 of @code{@{ c4 r8 @}}.  This is more consistent with articulations and
1122 how humans interpret breaths after ties.  It now also makes it easier to
1123 align simultaneous breathe marks over multiple parts, all with different
1124 note lengths.
1125
1126 @item
1127 There is now support for controlling the @q{expression level} of
1128 MIDI channels using the @code{Staff.midiExpression} context property.
1129 This can be used to alter the perceived volume of even sustained notes
1130 (albeit in a very @q{low-level} way) and accepts a number value between
1131 @code{0.0} and @code{1.0}.
1132
1133 @example
1134 \score @{
1135   \new Staff \with @{
1136     midiExpression = #0.6
1137     midiInstrument = #"clarinet"
1138   @}
1139   <<
1140     @{ a'1~ a'1 @}
1141     @{
1142       \set Staff.midiExpression = #0.7 s4\f\<
1143       \set Staff.midiExpression = #0.8 s4
1144       \set Staff.midiExpression = #0.9 s4
1145       \set Staff.midiExpression = #1.0 s4
1146
1147       \set Staff.midiExpression = #0.9 s4\>
1148       \set Staff.midiExpression = #0.8 s4
1149       \set Staff.midiExpression = #0.7 s4
1150       \set Staff.midiExpression = #0.6 s4\!
1151     @}
1152   >>
1153   \midi @{ @}
1154 @}
1155 @end example
1156
1157 @item
1158 When outputting MIDI, LilyPond will now store the @code{title}
1159 defined in a score's @code{\header} block (or, if there is no
1160 such definition on the @code{\score} level, the first such
1161 definition found in a @code{\header} block of the score's
1162 enclosing @code{\bookpart}, @code{\book}, or top-level scope)
1163 as the name of the MIDI sequence in the MIDI file.  Optionally,
1164 the name of the MIDI sequence can be overridden using the new
1165 @code{midititle} @code{\header} field independently of
1166 @code{title} (for example, in case @code{title} contains markup
1167 code which does not render as plain text in a satisfactory way
1168 automatically).
1169
1170 @end itemize
1171
1172
1173 @strong{Extracting music improvements}
1174
1175 @itemize
1176
1177 @item
1178 @code{\displayLilyMusic} and its underlying Scheme functions no
1179 longer omit redundant note durations.  This makes it easier to
1180 reliably recognize and format standalone durations in expressions
1181 like
1182 @example
1183 @{ c4 d4 8 @}
1184 @end example
1185
1186 @end itemize
1187
1188
1189
1190 @subheading New for spacing issues
1191
1192
1193 @strong{Page breaking improvements}
1194
1195 @itemize
1196
1197 @item
1198 There are two new page breaking functions.  @code{ly:one-page-breaking}
1199 automatically adjusts the height of the page to fit the music, so that
1200 everything fits on one page.  @code{ly:one-line-auto-height-breaking}
1201 is like @code{ly:one-line-breaking}, placing the music on a single
1202 line and adjusting the page width accordingly, however it also
1203 automatically adjusts the page height to fit the music.
1204
1205 @end itemize
1206
1207
1208 @strong{Vertical and Horizontal spacing improvements}
1209
1210 @itemize
1211
1212 @item
1213 It is now possible to move systems with reference to their current
1214 position using the @code{extra-offset} subproperty of
1215 @code{NonMusicalPaperColumn.line-break-system-details}.  Both vertical
1216 and horizontal changes are possible.  This feature is especially useful
1217 for making slight adjustments to the default vertical position of
1218 individual systems. See @ruser{Explicit staff and system positioning} for
1219 more information.
1220
1221 @item
1222 Improved visual spacing of small and regular @q{MI} Funk and Walker
1223 noteheads so they are now the same width as other shaped notes in
1224 their respective sets.  @code{SOL} noteheads are also now visually
1225 improved when used with both the normal Aiken and Sacred Harp heads, as
1226 well as with the thin variants.
1227
1228 @item
1229 @code{LeftEdge} now has a definable @code{Y-extent} (i.e.vertical).  See
1230 @rinternals{LeftEdge}.
1231
1232 @item
1233 Grobs and their parents can now be aligned separately allowing
1234 more flexibility for grob positions.  For example the @q{left} edge of a
1235 grob can now be aligned on the @q{center} of its parent.
1236
1237 @item
1238 Improved horizontal alignment when using @code{TextScript},
1239 with @code{DynamicText} or @code{LyricText}.
1240
1241 @end itemize
1242
1243
1244
1245 @subheading New for changing defaults
1246
1247 @itemize
1248
1249 @item
1250 All of @code{\override}, @code{\revert}, @code{\set}, and
1251 @code{\unset} now work with the @code{\once} prefix for making
1252 one-time settings.
1253 @lilypond[quote,verbatim]
1254 \relative {
1255   c'4 d
1256   \override NoteHead.color = #red
1257   e4 f |
1258   \once \override NoteHead.color = #green
1259   g4 a
1260   \once \revert NoteHead.color
1261   b c |
1262   \revert NoteHead.color
1263   f2 c |
1264 }
1265 @end lilypond
1266
1267 @end itemize
1268
1269
1270
1271 @subheading New for Internal interfaces and functions
1272
1273 @itemize
1274
1275 @item
1276 The music and grob property @code{spanner-id}, used for distinguishing
1277 simultaneous slurs and phrasing slurs, has been changed from a string to
1278 a @emph{key} which can be either a non-negative integer or symbol (also
1279 see the previous documented expressive mark improvement --
1280 @emph{A new command \=X has been added}).
1281
1282 @item
1283 Context properties named in the @samp{alternativeRestores} property are
1284 restored to their value at the start of the @emph{first} alternative in
1285 all subsequent alternatives.
1286
1287 Currently the default set restores @q{current meter}:
1288
1289 @lilypond[verbatim,fragment,quote,relative=2]
1290 \time 3/4
1291 \repeat volta 2 { c2 e4 | }
1292 \alternative {
1293   { \time 4/4 f2 d | }
1294   { f2 d4 | }
1295 }
1296 g2. |
1297 @end lilypond
1298
1299 @noindent
1300 @q{measure position}:
1301
1302 @lilypond[verbatim,fragment,quote,relative=2]
1303 \time 3/4
1304 \repeat volta 2 { c2 e4 | }
1305 \alternative {
1306   { \time 4/4
1307     \set Timing.measurePosition = #(ly:make-moment -1/2)
1308     f2 | }
1309   { f2 d4 | }
1310 }
1311 g2. |
1312 @end lilypond
1313
1314 @noindent
1315 and @q{chord changes}:
1316
1317 @lilypond[verbatim,fragment,quote]
1318 <<
1319   \new ChordNames {
1320     \set chordChanges = ##t
1321     \chordmode { c1:m d:m c:m d:m }
1322   }
1323   \new Staff {
1324     \repeat volta 2 { \chordmode { c1:m } }
1325     \alternative {
1326       { \chordmode { d:m } }
1327       { \chordmode { c:m } }
1328     }
1329   \chordmode { d:m }
1330 }
1331 >>
1332 @end lilypond
1333
1334 @item
1335 LilyPond functions defined with @code{define-music-function},
1336 @code{define-event-function}, @code{define-scheme-function} and
1337 @code{define-void-function} can now be directly called from Scheme
1338 as if they were genuine Scheme procedures.  Argument checking and
1339 matching will still be performed in the same manner as when
1340 calling the function through LilyPond input.  This includes the
1341 insertion of defaults for optional arguments not matching their
1342 predicates.  Instead of using @code{\default} in the actual
1343 argument list for explicitly skipping a sequence of optional
1344 arguments, @code{*unspecified*} can be employed.
1345
1346 @item
1347 Current input location and parser are now stored in GUILE fluids
1348 and can be referenced via the function calls @code{(*location*)}
1349 and @code{(*parser*)}.  Consequently, a lot of functions
1350 previously taking an explicit @code{parser} argument no longer do
1351 so.
1352
1353 Functions defined with @code{define-music-function},
1354 @code{define-event-function}, @code{define-scheme-function} and
1355 @code{define-void-function} no longer use @code{parser} and
1356 @code{location} arguments.
1357
1358 With those particular definitions, LilyPond will try to recognize
1359 legacy use of @code{parser} and @code{location} arguments,
1360 providing backwards-compatible semantics for some time.
1361
1362 @item
1363 Scheme functions and identifiers can now be used as output definitions.
1364
1365 @item
1366 Scheme expressions can now be used as chord constituents.
1367
1368 @item
1369 Music (and scheme and void) functions and markup commands that
1370 just supply the final parameters to a chain of overrides, music
1371 function and markup command calls can now be defined in the form
1372 of just writing the expression cut short with @code{\etc}.
1373
1374 @lilypond[verbatim,quote]
1375 \markup bold-red = \markup \bold \with-color #red \etc
1376 highlight = \tweak font-size 3 \tweak color #red \etc
1377
1378 \markup \bold-red "text"
1379 \markuplist \column-lines \bold-red { One Two }
1380
1381 { c' \highlight d' e'2-\highlight -! }
1382 @end lilypond
1383
1384 @item
1385 Dot-separated symbol lists like @code{FretBoard.stencil} were
1386 already supported as of version@tie{}2.18.  They may now also
1387 contain unsigned integers, and may alternatively be separated by
1388 commata.  This allows usage such as
1389 @lilypond[quote,verbatim]
1390 { \time 2,2,1 5/8  g'8 8 8 8 8 }
1391 @end lilypond
1392 and
1393 @example
1394 \tagGroup violin,oboe,bassoon
1395 @end example
1396
1397 @item
1398 Such lists may also be used in expressions for assignments, sets,
1399 and overrides.  This allows usage such as
1400 @lilypond[quote,verbatim]
1401 { \unset Timing.beamExceptions
1402   \set Timing.beatStructure = 1,2,1
1403   g'8 8 8 8 8 8 8 8 }
1404 @end lilypond
1405
1406 @item
1407 Association list elements could previously be assigned values
1408 individually (for example, paper variables like
1409 @code{system-system-spacing.basic-distance}).  They may now be
1410 also referenced in this manner, as with
1411 @example
1412 \paper @{
1413   \void \displayScheme \system-system-spacing.basic-distance
1414 @}
1415 @end example
1416
1417 In combination with the previously mentioned changes, this allows
1418 setting and referencing pseudovariables like @code{violin.1}.
1419
1420 @item
1421 The markup-list-command @code{\table} is now available.
1422 Each column may be aligned differently.
1423 @lilypond[quote,verbatim]
1424 \markuplist {
1425     \override #'(padding . 2)
1426     \table
1427       #'(0 1 0 -1)
1428       {
1429         \underline { center-aligned right-aligned center-aligned left-aligned }
1430         one "1" thousandth "0.001"
1431         eleven "11" hundredth "0.01"
1432         twenty "20" tenth "0.1"
1433         thousand "1000" one "1.0"
1434       }
1435 }
1436 @end lilypond
1437
1438 @item
1439 @code{InstrumentName} now supports @code{text-interface}.
1440
1441 @item
1442 The @code{thin-kern} property of the @code{BarLine} grob has been
1443 renamed to @code{segno-kern}.
1444
1445 @item
1446 @code{KeyCancellation} grobs now ignore cue clefs (like
1447 @code{KeySignature} grobs do).
1448
1449 @item
1450 Add support for @code{\once@tie{}\unset}
1451
1452 @end itemize
1453
1454 @ifhtml
1455 For older news, go to
1456 @uref{http://lilypond.org/doc/v2.18/Documentation/changes/},
1457 @uref{http://lilypond.org/doc/v2.16/Documentation/changes/},
1458 or @uref{../,go back} to the Documentation index.
1459
1460 @end ifhtml
1461
1462 @bye