1 \input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
2 @setfilename lilypond-changes.info
3 @settitle LilyPond Changes
8 @macro inputfileref{DIR,NAME}
9 @uref{../../\DIR\/collated-files.html#\NAME\,@file{\DIR\/\NAME\}}@c
11 @macro usermanref{NAME}
12 @inforef{\NAME\,,../user/lilypond/lilypond}@c
17 @macro inputfileref{DIR,NAME}
20 @macro usermanref{NAME}
21 See user manual, \NAME\
25 @macro textanchor{NAME}
32 @documentencoding utf-8
39 @top New features in 2.16 since 2.14
41 @allowcodebreaks false
49 * add new items at the top
51 * only show verbatim input for syntax/input changes
53 * try to be as brief possible in those cases
55 * don't try to provide real-world examples, they often get too big,
56 which scares away people.
58 * Write complete sentences.
60 * only show user-visible changes.
64 Scheme expressions inside of embedded Lilypond (@code{#@{@dots{}#@}})
65 are now executed in lexical closure of the surrounding Scheme code.
66 @code{$} is no longer special in embedded Lilypond. It can be used
67 unconditionally in Lilypond code for immediate evaluation, similar to
68 how @code{ly:export} could previously be used. @code{ly:export} has
69 been removed. As a consequence, @code{#} is now free to delay
70 evaluation of its argument until the parser actually reduces the
71 containing expression, greatly reducing the potential for premature
75 Support for jazz-like chords has been improved: Lydian and altered
76 chords are recognised; separators between chord modifiers are now
77 treated independently of separators between ``slash'' chords and their
78 bass notes (and by default, slashes are now only used for the latter
79 type of separator); additional pitches are no longer prefixed with
80 ``add'' by default; and the ``m'' in minor chords can be customized.
81 @ruser{Customizing chord names} for more information.
86 The @code{\markuplines} command has been renamed to @code{\markuplist}
87 for a better match with its semantics and general Lilypond
91 The interface for specifying string tunings in tablature has been
92 simplified considerably.
95 Beams can now have their slopes preserved over line breaks.
96 @lilypond[fragment,quote,relative=2]
97 \override Beam #'breakable = ##t
98 a8[ b c d e f g \bar "" \break f e d c b a]
99 \once \override Beam #'positions = #beam::align-with-broken-parts
100 a8[ b c d e f g \bar "" \break f e d c b a]
101 \once \override Beam #'positions = #beam::slope-like-broken-parts
102 a8[ b c d e f g \bar "" \break f e d c b a]
104 To do this, several callback functions are now deprecated.
106 @item @code{ly:beam::calc-least-squares-positions}
107 @item @code{ly:beam::slope-damping}
108 @item @code{ly:beam::shift-region-to-valid}
110 Furthermore, @code{ly:beam::quanting} now takes an additional argument
111 to help calculations over line breaks. All of these functions are now
112 automatically called when setting the @code{positions} parameter.
115 In function arguments music, markups and Scheme expressions (as well
116 as several other syntactic entities) have become mostly
117 interchangeable and are told apart only by evaluating the respective
121 Music functions (and their close relatives) can now be defined with
125 For defining commands executed only for their side-effects,
126 @code{define-void-function} is now available.
129 There is a new @code{define-event-function} command in analogy to
130 @code{define-music-function} that can be used for defining music
131 functions acting as events without requiring a direction specifier
132 (@code{-}, @code{^}, or @code{_}) placed before them.
133 @lilypond[quote,verbatim,raggedright]
134 dyn=#(define-event-function (parser location arg) (markup?)
135 (make-dynamic-script arg))
136 \relative c' { c\dyn pfsss }
140 A list of ASCII aliases for special characters can be included.
141 @lilypond[quote,verbatim]
143 #(include-special-characters)
145 \markup "• † ©right; &OE; &ss; ¶"
149 There is a new @code{define-scheme-function} command in analogy to
150 @code{define-music-function} that can be used to define functions
151 evaluating to Scheme expressions while accepting arguments in Lilypond
155 The construct @code{#@{ @dots{} #@}} can now be used not just for
156 constructing sequential music lists, but also for single music events,
157 void music expressions, post events, markups (mostly freeing users from
158 having to use the @code{markup} macro), markup lists, number
159 expressions, context definitions and modifications, and a few other
160 things. If it encloses nothing or only a single music event, it no
161 longer returns a sequential music list but rather a void music
162 expression or just the music event itself, respectively.
165 New command-line option @option{--loglevel=@var{level}} to control how much output
166 LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEBUG.
169 @code{\set \once} now correctly resets the property value to the previous value.
170 @lilypond[fragment,quote,relative=2]
171 \set fingeringOrientations = #'(left)
173 \once \set fingeringOrientations = #'(right)
180 The alignment of dynamic spanners (hairpins, text crescendo, etc.) is now
181 automatically broken if a different direction is explicitly given.
182 @lilypond[fragment,quote,relative=2]
188 Appoggiaturas and acciaccaturas now also work inside a slur, not only inside
189 a phrasing slur. Also, a function @code{\slashedGrace} was added that does
190 does not use a slur from the acciaccatura note.
191 @lilypond[fragment,quote,relative=2]
192 c4( \appoggiatura e8 d4 \acciaccatura e8 d4 \slashedGrace e8 c4)
197 To suppress the line on a crescendo text spanner (and other similar spanners),
198 LilyPond now fully supports the @code{#'style = #'none} property.
199 @lilypond[fragment,quote,relative=2]
200 \override DynamicTextSpanner #'style = #'none
205 LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!
208 Glissandi can now span multiple lines.
213 For older news, go to
214 @uref{http://lilypond.org/doc/v2.14/Documentation/changes/},
215 @uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html},
216 or @uref{../,go back} to the Documentation index.