\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
@setfilename lilypond-changes.info
@settitle LilyPond Changes
@include macros.itexi
@ifhtml
@macro inputfileref{DIR,NAME}
@uref{../../\DIR\/collated-files.html#\NAME\,@file{\DIR\/\NAME\}}@c
@end macro
@macro usermanref{NAME}
@inforef{\NAME\,,../user/lilypond/lilypond}@c
@end macro
@end ifhtml
@ifnothtml
@macro inputfileref{DIR,NAME}
@file{\DIR\/\NAME\}@c
@end macro
@macro usermanref{NAME}
See user manual, \NAME\
@end macro
@end ifnothtml
@macro textanchor{NAME}
@html
@end html
@end macro
@documentencoding utf-8
@documentlanguage en
@afourpaper
@finalout
@node Top
@top New features in 2.18 since 2.16
@allowcodebreaks false
@itemize
@ignore
HINTS
* add new items at the top
* only show verbatim input for syntax/input changes
* try to be as brief possible in those cases
* don't try to provide real-world examples, they often get too big,
which scares away people.
* Write complete sentences.
* only show user-visible changes.
@end ignore
@item
A new command @code{\single} can be used for converting a property
override into a tweak to be applied on a single music expression:
@lilypond[quote,verbatim,relative=2]
1
@end lilypond
@item
Two ways of letting graphical objects not appear in the output are
overriding its @code{transparent} property with @code{#t}
(retaining the original spacing) or overriding its @code{stencil}
property with @code{#f} (not using any space at all). Those two
operations now have the shorthands @code{\hide} and @code{\omit},
respectively. They can either be given a music expression to
tweak, or the name of a graphical object for which an override
should be created (for specifying both, use @code{\single} on the
override form):
@lilypond[quote,verbatim]
\new Staff \with { \omit Clef }
\relative c'' 1
@end lilypond
@item
A new command @code{\temporary} can be applied to overrides in
order to not have them replace previous property settings. If a
@code{\revert} is applied to the same property subsequently, the
previous setting reappears:
@lilypond[quote,verbatim,relative=2]
\override NoteHead.color = #red c4
\override NoteHead.color = #green d
\revert NoteHead.color e2
\override NoteHead.color = #red c4
\temporary\override NoteHead.color = #green d
\revert NoteHead.color e
\revert NoteHead.color c
@end lilypond
This is mainly useful for writing music functions that need to
have some property changed just for the duration of the function.
@item
@code{\tag}, @code{\removeWithTag}, and @code{\keepWithTag} can
now accept a list of symbols rather than just a single symbol for
marking, removing, and keeping music with any of multiple tags.
This is particularly important for @code{\keepWithTag} since one
cannot achieve the same effect by using multiple consecutive
@code{\keepWithTag} commands.
@item
The @samp{-d old-relative} option has been removed. Not actually
accessible from the command line any more, its remaining use was
for interpretating @code{\relative} in LilyPond files converted
automatically from version@tie{}1.8 or older. It is unclear how
much of this was actually still operative.
@item
The meaning of @code{instrumentTransposition} has been reversed.
After
@example
\set instrumentTransposition = #@{ b #@}
@end example
a written @code{c'} now sounds like @code{b}. Previously, this
would have been the other way round. This and the following change
should make dealing with transposing instruments more
straightforward.
@item
The music generated by @code{\set} and @code{\override} commands
is no longer affected by @code{\transpose}. The main consequence
is that @code{\transpose} will transpose audible/@/concert pitch and
printed pitch by the same amount even when the transposed music
contains @code{\transposition}. Previously,
@example
\transpose c' f' \transposition bes'
@end example
was equivalent to @code{\transposition f'}. Now it stays
equivalent to @code{\transposition bes'}.
@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
@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.
@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)
}
@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.
@item
The @code{\clef} command supports optional octavation:
@lilypond[verbatim,quote,relative=1]
\clef "treble_(8)"
c2 c
\clef "bass^[15]"
c2 c
@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
@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."
@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.
@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}.
@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
@end itemize
@ifhtml
For older news, go to
@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.
@end ifhtml
@bye