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