@finalout
@node Top
-@top New features in 2.18 since 2.16
+@top New features in 2.20 since 2.18
@allowcodebreaks false
@end ignore
@item
-Tuplets are now created with the @code{\tuplet} command, which
-takes a fraction @code{@var{t}/@var{n}} to specify that @var{t}
-notes are played in the time usually allowed for @var{n}. One
-@code{\tuplet} command can create several tuplet groups if their
-duration is typed after the fraction.
-@lilypond[quote,verbatim,relative=2]
-\tuplet 3/2 { c8 d e } \tuplet 3/2 { f e d } c2
-\tuplet 3/2 4 { c8 d e f e d } c2
+Four new Clefs have been added. @emph{Double G}, @emph{Tenor G},
+@emph{Varpercussion} and @emph{varC}.
+@lilypond[verbatim,quote,fragment]
+ \override Staff.Clef.full-size-change = ##t
+
+ \clef "GG" c c c c
+ \clef "tenorG" c c c c
+ \clef "varC" c c c c
+ \clef "varpercussion" c c c c
+
+ \break
+ \override Staff.Clef.full-size-change = ##f
+
+ \clef "GG" c c c c
+ \clef "tenorG" c c c c
+ \clef "varC" c c c c
+ \clef "varpercussion" c c c c
@end lilypond
-The @code{\times} command with its inverted fraction order
-@code{@var{n}/@var{t}} is still available.
@item
-Introducing two new markup-commands; @code{\draw-dashed-line} and
-@code{\draw-dotted-line}.
-
-@noindent
-The dashed-line extends to the whole length given by @var{dest}, if
-@code{full-length} is set to @code{#t} (this is the default) without any
-space at the beginning or end. @code{off} will then be altered to fit.
-To insist on the given (or default) values of @code{on}, @code{off} use
-@code{\override #'(full-length . #f)}. Manual settings for @code{on},
-@code{off} and @code{phase} are possible.
-
-@noindent
-The dotted-line always extends to the whole length given by @var{dest},
-without any space at the beginning or end. Manual settings for
-@code{off} are possible to get larger or smaller space between the dots.
-The given (or default) value of @code{off} will be altered to fit the
-line-length.
+Isolated durations in music sequences now stand for unpitched
+notes. This may be useful for specifying rhythms to music or
+scheme functions. When encountered in the final score, the
+pitches are provided by the preceding note or chord. Here are two
+examples where this makes for readable input:
@lilypond[verbatim,quote]
-\markup {
- \draw-dashed-line #'(5.1 . 2.3)
- \override #'(on . 0.3)
- \override #'(off . 0.5)
- \draw-dashed-line #'(5.1 . 2.3)
- \draw-dotted-line #'(5.1 . 2.3)
- \override #'(thickness . 2)
- \override #'(off . 0.2)
- \draw-dotted-line #'(5.1 . 2.3)
+\new DrumStaff \with { \override StaffSymbol.line-count = 1 }
+\drummode {
+ \time 3/4
+ tambourine 8 \tuplet 3/2 { 16 16 16 }
+ 8 \tuplet 3/2 { 16 16 16 } 8 8 |
}
@end lilypond
-@item
-Starting with version@tie{}2.17.10, error messages or the
-@code{textedit} @acronym{URI} used for point-and-click
-functionality specify column numbers starting with@tie{}1 rather
-than@tie{}0. The byte offset (also part of @code{textedit}
-@acronym{URI}s) still starts at@tie{}0.
+@lilypond[verbatim,quote]
+\new Staff { r16 c'16 ~ 8 ~ 4 ~ 2 | }
+@end lilypond
@item
-The @code{\clef} command supports optional octavation:
+Beaming exceptions can now be constructed using the
+@code{\beamExceptions} scheme function. One can now write
+
@lilypond[verbatim,quote,relative=1]
-\clef "treble_(8)"
-c2 c
-\clef "bass^[15]"
-c2 c
+\time #'(2 1) 3/16
+\set Timing.beamExceptions =
+ \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
+c16 c c |
+\repeat unfold 6 { c32 } |
@end lilypond
-@item
-The LilyPond syntax of dot-separated words @code{Voice.Accidental}
-has been made interchangeable with @code{#'(Voice Accidental)}, a
-Scheme list of symbols. As one result, code like
-@example
-\override Voice.TextSpanner #'(bound-details left text) = "rit."
-@end example
-is now equivalent to
-@example
-\override Voice.TextSpanner bound-details.left.text = "rit."
-@end example
-or even
-@example
-\override #'(Voice TextSpanner) bound-details.left.text = "rit."
-@end example
+@noindent
+with multiple exceptions separated with @code{|} bar checks
+(writing the exception pattern without pitches is convenient but
+not mandatory). Previously, setting the beam exceptions would
+have required writing
-@item
-Grob and grob property path no longer need to be specified as two
-separate arguments to commands like @samp{\override} and
-@code{\revert}, allowing for the syntax
@example
-\override Voice.TextSpanner.bound-details.left.text = "rit."
+\set Timing.beamExceptions =
+#'( ;start of alist
+ (end . ;entry for end of beams
+ ( ;start of alist of end points
+ ((1 . 32) . (2 2 2)) ;rule for 1/32 beams -- end each 1/16
+ )))
@end example
-Since complementary music functions like @samp{\overrideProperty}
-cannot support forms with and without separating space at the same
-time, using a single dotted path is now the preferred form.
-Specifying grob path and grob property path separately, currently
-still supported with @samp{\override} and @samp{\revert} for
-compatibility reasons, is deprecated.
@item
-Due to words now being accepted as symbol function arguments, the
-interfaces of @samp{\accidentalStyle}, @samp{\alterBroken},
-@samp{\footnote} and @samp{\tweak} had to be redesigned where
-optional symbol arguments were involved. Please check the
-respective music function documentation for details.
+The most common articulations are now reflected in MIDI output.
+Accent and marcato make notes louder; staccato, staccatissimo and
+portato make them shorter. Breath marks shorten the previous
+note.
-@item
-Several commands now accept symbol lists (conveniently entered as
-dot-separated words) for various kinds of arguments. These
-include @samp{\accidentalStyle}, @samp{\alterBroken},
-@samp{\footnote}, @samp{\hide}, @samp{\omit},
-@samp{\overrideProperty}, @samp{\shape}, and @samp{\tweak}.
+This behavior is customizable through the @code{midiLength} and
+@code{midiExtraVelocity} properties on @code{ArticulationEvent}.
+See @file{script-init.ly} for examples.
@item
-The bar line user interface has changed. Bar glyphs now resemble the
-appearance of the bar line, so a left repeat sign has to be coded
-as @code{.|:}. The command @code{\defineBarLine} provides an easy way
-to define additional bar line styles.
-
-@item
-Accidentals in the key signature may be printed in octaves other
-than their traditional positions, or in multiple octaves.
-@lilypond[quote,relative=0]
-\override Staff.KeySignature #'flat-positions = #'((-5 . 5))
-\override Staff.KeyCancellation #'flat-positions = #'((-5 . 5))
-\clef bass \key es\major es g bes d
-\clef treble \bar "||" \key es\major es g bes d
-\override Staff.KeySignature #'sharp-positions = #'(2)
-\bar "||" \key d\major b fis b2
-@end lilypond
+The PostScript functionality of stroke adjustment is no longer
+applied automatically but left to the discretion of the PostScript
+device (by default, Ghostscript uses it for resolutions up to
+150dpi when generating raster images). When it is enabled, a more
+complex drawing algorithm designed to benefit from stroke
+adjustment is employed mostly for stems and bar lines.
+
+Stroke adjustment can be forced by specifying the command line
+option @samp{-dstrokeadjust} to LilyPond. When generating
+@code{PDF} files, this will usually result in markedly better
+looking @code{PDF} previews but significantly larger file size.
+Print quality at high resolutions will be unaffected.
@end itemize
@ifhtml
For older news, go to
+@uref{http://lilypond.org/doc/v2.18/Documentation/changes/},
@uref{http://lilypond.org/doc/v2.16/Documentation/changes/},
-@uref{http://lilypond.org/doc/v2.14/Documentation/changes/},
or @uref{../,go back} to the Documentation index.