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 Augmentation dots now avoid the other voice in two-voice polyphony
66 so that users can move the @code{Dot_column_engraver} to set dots
67 independently for each @code{Voice}.
72 \remove Dot_column_engraver
75 \consists Dot_column_engraver
80 <d f g>4. <d f g> <f, g> b
82 <f g b>4. <g b d> <b d> <e, g>
87 A Scheme function to adjust the control points of curves such as slurs
88 and ties, developed by several users, is now included in LilyPond.
89 @lilypond[quote,verbatim,relative=2]
91 \shape Slur #'((-0.5 . 1.5) (-3 . 0) (0 . 0) (0 . 0))
96 Use of @code{\tempo} specifications in @code{\midi} blocks (removed in
97 2.9.16 in favor of explicit @code{tempoWholesPerMinute} settings) has
98 seen a revival: now any kind of property-setting music is turned into
99 context definitions within output specifications, allowing for
102 \layout @{ \accidentalStyle modern @}
103 \midi @{ \tempo 4. = 66 @}
107 The LilyPond G clef has been redesigned - upper loop is now more balanced,
108 bottom crook sticks out less and the "spine" (main vertical line) is more
109 evenly curved. The old and new versions can be compared by looking at the
111 @uref{http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#clef-glyphs, old version},
112 @uref{http://lilypond.org/doc/v2.15/Documentation/notation/the-feta-font.html#clef-glyphs, new version}.
115 Lilypond's stencil commands have been simplified to allow for less code
116 duplication and better height approximations of graphical objects. The
117 following stencil commands have been eliminated:
120 @item @code{bezier-sandwich}
122 @item @code{dashed-slur}
125 @item @code{repeat-slash}
126 @item @code{zigzag-line}
130 Flags are now treated as separate objects rather than as stem parts.
131 @lilypond[fragment,quote,relative=2]
132 \override Flag #'color = #red
137 Two alternative methods for bar numbering can be set, especially for
138 when using repeated music;
140 @lilypond[fragment,quote,relative=1,noragged-right]
142 \set Score.alternativeNumberingStyle = #'numbers
143 \repeat volta 3 { c4 d e f | }
145 { c4 d e f | c2 d \break }
146 { f4 g a b | f4 g a b | f2 a | \break }
150 \set Score.alternativeNumberingStyle = #'numbers-with-letters
151 \repeat volta 3 { c,4 d e f | }
153 { c4 d e f | c2 d \break }
154 { f4 g a b | f4 g a b | f2 a | \break }
162 The following is a fundamental change in LilyPond's music
163 representation: Rhythmic events like @code{LyricEvent} and
164 @code{NoteEvent} are no longer wrapped in @code{EventChord} unless they
165 have been actually entered as part of a chord in the input. If you
166 manipulate music expressions in Scheme, the new behavior may require
167 changes in your code. Calling the music function @code{\eventChords} or
168 the Scheme function @code{event-chord-wrap!} converts to the old
169 representation; using one of those might be easiest for keeping legacy
172 The following three items are consequences of this change.
175 The repetitive chord entry aid @code{q} has been reimplemented.
176 Repeated chords are now replaced right before interpreting a music
177 expression. In case the user wants to retain some events of the
178 original chord, he can run the repeat chord replacement function
179 @code{\chordRepeats} manually.
182 String numbers and right hand fingerings on single notes now appear
183 without having to be written inside of chord brackets.
186 Music functions now work the same when used inside or outside of chords,
187 including all the possibilities of argument parsing. Music variables
188 can be used inside of chords: a construct like
189 @lilypond[verbatim,quote,ragged-right]
191 { <\tonic \transpose c g \tonic> }
194 now works as expected. One can use @code{#@{@dots{}#@}} for
195 constructing chord constituents. @code{\tweak} now works on single
196 notes without needing to wrap them in a chord. Using it on command
197 events and lyrics is now possible, but not likely to give results yet.
200 @code{\tweak} now takes an optional layout object specification. It can
201 be used for tweaking layout objects that are only indirectly caused by
202 the tweaked event, like accidentals, stems, and flags:
204 @lilypond[verbatim,quote,ragged-right,relative=2]
205 <\tweak Accidental #'color #red cis4
206 \tweak Accidental #'color #green es
211 Scheme expressions inside of embedded Lilypond (@code{#@{@dots{}#@}})
212 are now executed in lexical closure of the surrounding Scheme code.
213 @code{$} is no longer special in embedded Lilypond. It can be used
214 unconditionally in Lilypond code for immediate evaluation of Scheme
215 expressions, similar to how @code{ly:export} could previously be used.
216 @code{ly:export} has been removed. As a consequence, @code{#} is now
217 free to delay evaluation of its argument until the parser actually
218 reduces the containing expression, greatly reducing the potential for
219 premature evaluation. There are also @q{splicing} operators @code{$@@}
220 and @code{#@@} for interpreting the members of a list individually.
223 Support for jazz-like chords has been improved: Lydian and altered
224 chords are recognised; separators between chord modifiers are now
225 treated independently of separators between ``slash'' chords and their
226 bass notes (and by default, slashes are now only used for the latter
227 type of separator); additional pitches are no longer prefixed with
228 ``add'' by default; and the ``m'' in minor chords can be customized.
229 @ruser{Customizing chord names} for more information.
232 The @code{\markuplines} command has been renamed to @code{\markuplist}
233 for a better match with its semantics and general Lilypond
237 The interface for specifying string tunings in tablature has been
238 simplified considerably and employs the scheme function
239 @code{\stringTuning} for most purposes.
242 Beams can now have their slopes preserved over line breaks.
243 @lilypond[fragment,quote,relative=2]
244 \override Beam #'breakable = ##t
245 a8[ b c d e f g \bar "" \break f e d c b a]
246 \once \override Beam #'positions = #beam::align-with-broken-parts
247 a8[ b c d e f g \bar "" \break f e d c b a]
248 \once \override Beam #'positions = #beam::slope-like-broken-parts
249 a8[ b c d e f g \bar "" \break f e d c b a]
251 To do this, several callback functions are now deprecated.
253 @item @code{ly:beam::calc-least-squares-positions}
254 @item @code{ly:beam::slope-damping}
255 @item @code{ly:beam::shift-region-to-valid}
257 Furthermore, @code{ly:beam::quanting} now takes an additional argument
258 to help calculations over line breaks. All of these functions are now
259 automatically called when setting the @code{positions} parameter.
262 In function arguments music, markups and Scheme expressions (as well as
263 several other syntactic entities) have become mostly interchangeable and
264 are told apart only by evaluating the respective predicate. In several
265 cases, the predicate is consulted by the parser, like when deciding
266 whether to interpret @code{-3} as a number or a fingering event.
269 Music functions (and their close relatives) can now be defined with
273 For defining commands executed only for their side-effects,
274 @code{define-void-function} is now available.
277 There is a new @code{define-event-function} command in analogy to
278 @code{define-music-function} that can be used for defining music
279 functions acting as post events without requiring a direction specifier
280 (@code{-}, @code{^}, or @code{_}) placed before them.
281 @lilypond[quote,verbatim,ragged-right]
282 dyn=#(define-event-function (parser location arg) (markup?)
283 (make-dynamic-script arg))
284 \relative c' { c\dyn pfsss }
288 A list of ASCII aliases for special characters can be included.
289 @lilypond[quote,verbatim]
291 #(include-special-characters)
293 \markup "• † ©right; &OE; &ss; ¶"
297 There is a new @code{define-scheme-function} command in analogy to
298 @code{define-music-function} that can be used to define functions
299 evaluating to Scheme expressions while accepting arguments in Lilypond
303 The construct @code{#@{ @dots{} #@}} can now be used not just for
304 constructing sequential music lists, but also for pitches (distinguished
305 from single note events by the absence of a duration or other
306 information that can't be part of a pitch), single music events, void
307 music expressions, post events, markups (mostly freeing users from
308 having to use the @code{markup} macro), markup lists, number
309 expressions, context definitions and modifications, and a few other
310 things. If it encloses nothing or only a single music event, it no
311 longer returns a sequential music list but rather a void music
312 expression or just the music event itself, respectively.
315 Pitches can be used on the right side of assignments. They are
316 distinguished from single note events by the absence of a duration or
317 other information that can't be part of a pitch.
320 New command-line option @option{--loglevel=@var{level}} to control how much output
321 LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEBUG.
324 @code{\once \set} now correctly resets the property value to the previous value.
325 @lilypond[fragment,quote,relative=2]
326 \set fingeringOrientations = #'(left)
328 \once \set fingeringOrientations = #'(right)
334 The alignment of dynamic spanners (hairpins, text crescendo, etc.) is now
335 automatically broken if a different direction is explicitly given.
336 @lilypond[fragment,quote,relative=2]
342 Appoggiaturas and acciaccaturas now also work inside a slur, not only inside
343 a phrasing slur. Also, a function @code{\slashedGrace} was added that does
344 not use a slur from the acciaccatura note.
345 @lilypond[fragment,quote,relative=2]
346 c4( \appoggiatura e8 d4 \acciaccatura e8 d4 \slashedGrace e8 c4)
351 To suppress the line on a crescendo text spanner (and other similar spanners),
352 LilyPond now fully supports the @code{#'style = #'none} property.
353 @lilypond[fragment,quote,relative=2]
354 \override DynamicTextSpanner #'style = #'none
359 LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!
362 Glissandi can now span multiple lines.
367 For older news, go to
368 @uref{http://lilypond.org/doc/v2.14/Documentation/changes/},
369 @uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html},
370 or @uref{../,go back} to the Documentation index.