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.
65 Use of @code{\tempo} specifications in @code{\midi} blocks (removed in
66 2.9.16 in favor of explicit @code{tempoWholesPerMinute} settings) has
67 seen a revival: now any kind of property-setting music is turned into
68 context definitions within of output specifications, allowing for
71 \layout @{ \accidentalStyle modern @}
72 \midi @{ \tempo 4. = 66 @}
76 The LilyPond G clef has been redesigned - upper loop is now more balanced,
77 bottom crook sticks out less and the "spine" (main vertical line) is more
78 evenly curved. The old and new versions can be compared by looking at the
80 @uref{http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#clef-glyphs, old version},
81 @uref{http://lilypond.org/doc/v2.15/Documentation/notation/the-feta-font.html#clef-glyphs, new version}.
84 Lilypond's stencil commands have been simplified to allow for less code
85 duplication and better height approximations of graphical objects. The
86 following stencil commands have been eliminated:
89 @item @code{bezier-sandwich}
91 @item @code{dashed-slur}
94 @item @code{repeat-slash}
95 @item @code{zigzag-line}
99 Flags are now treated as separate objects rather than as stem parts.
100 @lilypond[fragment,quote,relative=2]
101 \override Flag #'color = #red
106 Two alternative methods for bar numbering can be set, especially for
107 when using repeated music;
109 @lilypond[fragment,quote,relative=1,noragged-right]
111 \set Score.alternativeNumberingStyle = #'numbers
112 \repeat volta 3 { c4 d e f | }
114 { c4 d e f | c2 d \break }
115 { f4 g a b | f4 g a b | f2 a | \break }
119 \set Score.alternativeNumberingStyle = #'numbers-with-letters
120 \repeat volta 3 { c,4 d e f | }
122 { c4 d e f | c2 d \break }
123 { f4 g a b | f4 g a b | f2 a | \break }
131 The following is a fundamental change in LilyPond's music
132 representation: Rhythmic events like @code{LyricEvent} and
133 @code{NoteEvent} are no longer wrapped in @code{EventChord} unless they
134 have been actually entered as part of a chord in the input. If you
135 manipulate music expressions in Scheme, the new behavior may require
136 changes in your code. Calling the music function @code{\eventChords} or
137 the Scheme function @code{event-chord-wrap!} converts to the old
138 representation; using one of those might be easiest for keeping legacy
141 The following three items are consequences of this change.
144 The repetitive chord entry aid @code{q} has been reimplemented.
145 Repeated chords are now replaced right before interpreting a music
146 expression. In case the user wants to retain some events of the
147 original chord, he can run the repeat chord replacement function
148 @code{\chordRepeats} manually.
151 String numbers and right hand fingerings on single notes now appear
152 without having to be written inside of chord brackets.
155 Music functions now work the same when used inside or outside of chords,
156 including all the possibilities of argument parsing. Music variables
157 can be used inside of chords: a construct like
158 @lilypond[verbatim,quote,ragged-right]
160 { <\tonic \transpose c g \tonic> }
163 now works as expected. One can use @code{#@{@dots{}#@}} for
164 constructing chord constituents. @code{\tweak} now works on single
165 notes without needing to wrap them in a chord. Using it on command
166 events and lyrics is now possible, but not likely to give results yet.
169 @code{\tweak} now takes an optional layout object specification. It can
170 be used for tweaking layout objects that are only indirectly caused by
171 the tweaked event, like accidentals, stems, and flags:
173 @lilypond[verbatim,quote,ragged-right,relative=2]
174 <\tweak Accidental #'color #red cis4
175 \tweak Accidental #'color #green es
180 Scheme expressions inside of embedded Lilypond (@code{#@{@dots{}#@}})
181 are now executed in lexical closure of the surrounding Scheme code.
182 @code{$} is no longer special in embedded Lilypond. It can be used
183 unconditionally in Lilypond code for immediate evaluation, similar to
184 how @code{ly:export} could previously be used. @code{ly:export} has
185 been removed. As a consequence, @code{#} is now free to delay
186 evaluation of its argument until the parser actually reduces the
187 containing expression, greatly reducing the potential for premature
191 Support for jazz-like chords has been improved: Lydian and altered
192 chords are recognised; separators between chord modifiers are now
193 treated independently of separators between ``slash'' chords and their
194 bass notes (and by default, slashes are now only used for the latter
195 type of separator); additional pitches are no longer prefixed with
196 ``add'' by default; and the ``m'' in minor chords can be customized.
197 @ruser{Customizing chord names} for more information.
200 The @code{\markuplines} command has been renamed to @code{\markuplist}
201 for a better match with its semantics and general Lilypond
205 The interface for specifying string tunings in tablature has been
206 simplified considerably and employs the scheme function
207 @code{\stringTuning} for most purposes.
210 Beams can now have their slopes preserved over line breaks.
211 @lilypond[fragment,quote,relative=2]
212 \override Beam #'breakable = ##t
213 a8[ b c d e f g \bar "" \break f e d c b a]
214 \once \override Beam #'positions = #beam::align-with-broken-parts
215 a8[ b c d e f g \bar "" \break f e d c b a]
216 \once \override Beam #'positions = #beam::slope-like-broken-parts
217 a8[ b c d e f g \bar "" \break f e d c b a]
219 To do this, several callback functions are now deprecated.
221 @item @code{ly:beam::calc-least-squares-positions}
222 @item @code{ly:beam::slope-damping}
223 @item @code{ly:beam::shift-region-to-valid}
225 Furthermore, @code{ly:beam::quanting} now takes an additional argument
226 to help calculations over line breaks. All of these functions are now
227 automatically called when setting the @code{positions} parameter.
230 In function arguments music, markups and Scheme expressions (as well as
231 several other syntactic entities) have become mostly interchangeable and
232 are told apart only by evaluating the respective predicate. In several
233 cases, the predicate is consulted by the parser, like when deciding
234 whether to interpret @code{-3} as a number or a fingering event.
237 Music functions (and their close relatives) can now be defined with
241 For defining commands executed only for their side-effects,
242 @code{define-void-function} is now available.
245 There is a new @code{define-event-function} command in analogy to
246 @code{define-music-function} that can be used for defining music
247 functions acting as post events without requiring a direction specifier
248 (@code{-}, @code{^}, or @code{_}) placed before them.
249 @lilypond[quote,verbatim,ragged-right]
250 dyn=#(define-event-function (parser location arg) (markup?)
251 (make-dynamic-script arg))
252 \relative c' { c\dyn pfsss }
256 A list of ASCII aliases for special characters can be included.
257 @lilypond[quote,verbatim]
259 #(include-special-characters)
261 \markup "• † ©right; &OE; &ss; ¶"
265 There is a new @code{define-scheme-function} command in analogy to
266 @code{define-music-function} that can be used to define functions
267 evaluating to Scheme expressions while accepting arguments in Lilypond
271 The construct @code{#@{ @dots{} #@}} can now be used not just for
272 constructing sequential music lists, but also for pitches (distinguished
273 from single note events by the absence of a duration or other
274 information that can't be part of a pitch), single music events, void
275 music expressions, post events, markups (mostly freeing users from
276 having to use the @code{markup} macro), markup lists, number
277 expressions, context definitions and modifications, and a few other
278 things. If it encloses nothing or only a single music event, it no
279 longer returns a sequential music list but rather a void music
280 expression or just the music event itself, respectively.
283 Pitches can be used on the right side of assignments. They are
284 distinguished from single note events by the absence of a duration or
285 other information that can't be part of a pitch.
288 New command-line option @option{--loglevel=@var{level}} to control how much output
289 LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEBUG.
292 @code{\once \set} now correctly resets the property value to the previous value.
293 @lilypond[fragment,quote,relative=2]
294 \set fingeringOrientations = #'(left)
296 \once \set fingeringOrientations = #'(right)
302 The alignment of dynamic spanners (hairpins, text crescendo, etc.) is now
303 automatically broken if a different direction is explicitly given.
304 @lilypond[fragment,quote,relative=2]
310 Appoggiaturas and acciaccaturas now also work inside a slur, not only inside
311 a phrasing slur. Also, a function @code{\slashedGrace} was added that does
312 not use a slur from the acciaccatura note.
313 @lilypond[fragment,quote,relative=2]
314 c4( \appoggiatura e8 d4 \acciaccatura e8 d4 \slashedGrace e8 c4)
319 To suppress the line on a crescendo text spanner (and other similar spanners),
320 LilyPond now fully supports the @code{#'style = #'none} property.
321 @lilypond[fragment,quote,relative=2]
322 \override DynamicTextSpanner #'style = #'none
327 LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!
330 Glissandi can now span multiple lines.
335 For older news, go to
336 @uref{http://lilypond.org/doc/v2.14/Documentation/changes/},
337 @uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html},
338 or @uref{../,go back} to the Documentation index.