]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/changes.tely
Merge tag 'upstream/2.16.0' into debian
[lilypond.git] / Documentation / changes.tely
1 \input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
2 @setfilename lilypond-changes.info
3 @settitle LilyPond Changes
4
5 @include macros.itexi
6
7 @ifhtml
8 @macro inputfileref{DIR,NAME}
9 @uref{../../\DIR\/collated-files.html#\NAME\,@file{\DIR\/\NAME\}}@c
10 @end macro
11 @macro usermanref{NAME}
12 @inforef{\NAME\,,../user/lilypond/lilypond}@c
13 @end macro
14 @end ifhtml
15
16 @ifnothtml
17 @macro inputfileref{DIR,NAME}
18 @file{\DIR\/\NAME\}@c
19 @end macro
20 @macro usermanref{NAME}
21 See user manual, \NAME\
22 @end macro
23 @end ifnothtml
24
25 @macro textanchor{NAME}
26 @html
27 <a name="\NAME\"></a>
28 @end html
29 @end macro
30
31
32 @dircategory GNU LilyPond --- the music typesetter
33 @direntry
34 * LilyPond Changes: (lilypond-changes).   Changes to recent versions.
35 @end direntry
36
37 @documentencoding utf-8
38 @documentlanguage en
39 @afourpaper
40
41 @finalout
42
43 @node Top
44 @top New features in 2.16 since 2.14
45
46 @allowcodebreaks false
47
48 @itemize
49
50 @ignore
51
52 HINTS
53
54 * add new items at the top
55
56 * only show verbatim input for syntax/input changes
57
58 * try to be as brief possible in those cases
59
60 * don't try to provide real-world examples, they often get too big,
61 which scares away people.
62
63 * Write complete sentences.
64
65 * only show user-visible changes.
66
67 @end ignore
68 @item
69 Support for cross-staff stems on chords, using @code{crossStaff}
70 and the @code{Span_stem_engraver}.  This calculates the length of
71 cross-staff stems automatically.
72 @lilypondfile[quote]
73 {cross-staff-stems.ly}
74
75 @item
76 The syntax of words (character sequences recognized without enclosing
77 quotes) and commands (now always a backslash @samp{\} followed by a
78 word) has been unified across all modes: it now consists of alphabetic
79 characters, possibly enclosing isolated dashes @samp{-} and underlines
80 @samp{_}.
81
82 As one consequence, using unquoted text scripts like (literally!)
83 @example
84 @{ c-script c\f_script @}
85 @end example
86 will now tend to result in invalid music.  Omitting quote marks
87 for arbitrary text rather than keywords has never been good practice or
88 even documented, and it is unlikely to have seen significant use.
89
90 Staying with established conventions (like not using dashes or
91 underlines for command names intended to be used inside of music)
92 remains advisable.  The reason for this change is more robust
93 recognition of LilyPond's lexical units for LilyPond itself as well as
94 external tools interpreting its syntax.
95
96 @item
97 Support for Kievan square notation:
98 @lilypond[quote,relative=1,verbatim]
99 \new KievanVoice {
100   \cadenzaOn
101   c d e f g a bes
102   \bar "kievan"
103 }
104 @end lilypond
105
106 @item
107 Augmentation dots now avoid the other voice in two-voice polyphony
108 so that users can move the @code{Dot_column_engraver} to set dots
109 independently for each @code{Voice}.
110 @lilypond[quote]
111 \layout {
112   \context {
113     \Staff
114     \remove Dot_column_engraver
115   } \context {
116     \Voice
117     \consists Dot_column_engraver
118   }
119 }
120 \relative c'' <<
121   { \time 6/8
122     <d f g>4. <d f g> <f, g> b
123   } \\ {
124     <f g b>4. <g b d> <b d> <e, g>
125   } >>
126 @end lilypond
127
128 @item
129 A Scheme function to adjust the control points of curves such as slurs
130 and ties, developed by several users, is now included in LilyPond.
131 @lilypond[quote,verbatim,relative=2]
132 g8->( bes,-.) d4
133 \shape Slur #'((-0.5 . 1.5) (-3 . 0) (0 . 0) (0 . 0))
134 g8->( bes,!-.) d4
135 @end lilypond
136
137 @item
138 Use of @code{\tempo} specifications in @code{\midi} blocks (removed in
139 2.9.16 in favor of explicit @code{tempoWholesPerMinute} settings) has
140 seen a revival: now any kind of property-setting music is turned into
141 context definitions within output specifications, allowing for
142 declarations like
143 @example
144 \layout @{ \accidentalStyle modern @}
145 \midi @{ \tempo 4. = 66 @}
146 @end example
147
148 @item
149 The LilyPond G clef has been redesigned - upper loop is now more balanced,
150 bottom crook sticks out less and the "spine" (main vertical line) is more
151 evenly curved. The old and new versions can be compared by looking at the
152 documentation:
153 @uref{http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#clef-glyphs, old version},
154 @uref{http://lilypond.org/doc/v2.15/Documentation/notation/the-feta-font.html#clef-glyphs, new version}.
155
156 @item
157 Lilypond's stencil commands have been simplified to allow for less code
158 duplication and better height approximations of graphical objects.  The
159 following stencil commands have been eliminated:
160 @itemize
161 @item @code{beam}
162 @item @code{bezier-sandwich}
163 @item @code{bracket}
164 @item @code{dashed-slur}
165 @item @code{dot}
166 @item @code{oval}
167 @item @code{repeat-slash}
168 @item @code{zigzag-line}
169 @end itemize
170
171 @item
172 Flags are now treated as separate objects rather than as stem parts.
173 @lilypond[fragment,quote,relative=2]
174 \override Flag #'color = #red
175 g8
176 @end lilypond
177
178 @item
179 Two alternative methods for bar numbering can be set, especially for
180 when using repeated music;
181
182 @lilypond[fragment,quote,relative=1,noragged-right]
183 \relative c'{
184   \set Score.alternativeNumberingStyle = #'numbers
185   \repeat volta 3 { c4 d e f | }
186     \alternative {
187       { c4 d e f | c2 d \break }
188       { f4 g a b | f4 g a b | f2 a | \break }
189       { c4 d e f | c2 d }
190     }
191   c1 \break
192   \set Score.alternativeNumberingStyle = #'numbers-with-letters
193   \repeat volta 3 { c,4 d e f | }
194     \alternative {
195       { c4 d e f | c2 d \break }
196       { f4 g a b | f4 g a b | f2 a | \break }
197       { c4 d e f | c2 d }
198     }
199   c1
200 }
201 @end lilypond
202
203 @item
204 The following is a fundamental change in LilyPond's music
205 representation: Rhythmic events like @code{LyricEvent} and
206 @code{NoteEvent} are no longer wrapped in @code{EventChord} unless they
207 have been actually entered as part of a chord in the input.  If you
208 manipulate music expressions in Scheme, the new behavior may require
209 changes in your code.  Calling the music function @code{\eventChords} or
210 the Scheme function @code{event-chord-wrap!}  converts to the old
211 representation; using one of those might be easiest for keeping legacy
212 code operative.
213
214 The following three items are consequences of this change.
215
216 @item
217 The repetitive chord entry aid @code{q} has been reimplemented.
218 Repeated chords are now replaced right before interpreting a music
219 expression.  In case the user wants to retain some events of the
220 original chord, he can run the repeat chord replacement function
221 @code{\chordRepeats} manually.
222
223 @item
224 String numbers and right hand fingerings on single notes now appear
225 without having to be written inside of chord brackets.
226
227 @item
228 Music functions now work the same when used inside or outside of chords,
229 including all the possibilities of argument parsing.  Music variables
230 can be used inside of chords: a construct like
231 @lilypond[verbatim,quote,ragged-right]
232 tonic=fis'
233 { <\tonic \transpose c g \tonic> }
234 @end lilypond
235 @noindent
236 now works as expected.  One can use @code{#@{@dots{}#@}} for
237 constructing chord constituents.  @code{\tweak} now works on single
238 notes without needing to wrap them in a chord.  Using it on command
239 events and lyrics is now possible, but not likely to give results yet.
240
241 @item
242 @code{\tweak} now takes an optional layout object specification.  It can
243 be used for tweaking layout objects that are only indirectly caused by
244 the tweaked event, like accidentals, stems, and flags:
245
246 @lilypond[verbatim,quote,ragged-right,relative=2]
247 <\tweak Accidental #'color #red   cis4
248  \tweak Accidental #'color #green es
249                                   g>
250 @end lilypond
251
252 @item
253 Scheme expressions inside of embedded Lilypond (@code{#@{@dots{}#@}})
254 are now executed in lexical closure of the surrounding Scheme code.
255 @code{$} is no longer special in embedded Lilypond.  It can be used
256 unconditionally in Lilypond code for immediate evaluation of Scheme
257 expressions, similar to how @code{ly:export} could previously be used.
258 @code{ly:export} has been removed.  As a consequence, @code{#} is now
259 free to delay evaluation of its argument until the parser actually
260 reduces the containing expression, greatly reducing the potential for
261 premature evaluation.  There are also @q{splicing} operators @code{$@@}
262 and @code{#@@} for interpreting the members of a list individually.
263
264 @item
265 To reduce the necessity for using @code{$}, Scheme expressions written
266 with @code{#} are interpreted as music inside of music lists, and as
267 markups or markup lists inside of markups.
268
269 @item
270 Support for jazz-like chords has been improved: Lydian and altered
271 chords are recognised; separators between chord modifiers are now
272 treated independently of separators between ``slash'' chords and their
273 bass notes (and by default, slashes are now only used for the latter
274 type of separator); additional pitches are no longer prefixed with
275 ``add'' by default; and the ``m'' in minor chords can be customized.
276 @ruser{Customizing chord names} for more information.
277
278 @item
279 The @code{\markuplines} command has been renamed to @code{\markuplist}
280 for a better match with its semantics and general Lilypond
281 nomenclature.
282
283 @item
284 The interface for specifying string tunings in tablature has been
285 simplified considerably and employs the scheme function
286 @code{\stringTuning} for most purposes.
287
288 @item
289 Beams can now have their slopes preserved over line breaks.
290 @lilypond[fragment,quote,relative=2]
291 \override Beam #'breakable = ##t
292 a8[ b c d e f g \bar "" \break f e d c b a]
293 \once \override Beam #'positions = #beam::align-with-broken-parts
294 a8[ b c d e f g \bar "" \break f e d c b a]
295 \once \override Beam #'positions = #beam::slope-like-broken-parts
296 a8[ b c d e f g \bar "" \break f e d c b a]
297 @end lilypond
298 To do this, several callback functions are now deprecated.
299 @itemize
300 @item @code{ly:beam::calc-least-squares-positions}
301 @item @code{ly:beam::slope-damping}
302 @item @code{ly:beam::shift-region-to-valid}
303 @end itemize
304 Furthermore, @code{ly:beam::quanting} now takes an additional argument
305 to help calculations over line breaks.  All of these functions are now
306 automatically called when setting the @code{positions} parameter.
307
308 @item
309 In function arguments music, markups and Scheme expressions (as well as
310 several other syntactic entities) have become mostly interchangeable and
311 are told apart only by evaluating the respective predicate.  In several
312 cases, the predicate is consulted by the parser, like when deciding
313 whether to interpret @code{-3} as a number or a fingering event.
314
315 @item
316 Music functions (and their close relatives) can now be defined with
317 optional arguments.
318
319 @item
320 For defining commands executed only for their side-effects,
321 @code{define-void-function} is now available.
322
323 @item
324 There is a new @code{define-event-function} command in analogy to
325 @code{define-music-function} that can be used for defining music
326 functions acting as post events without requiring a direction specifier
327 (@code{-}, @code{^}, or @code{_}) placed before them.
328 @lilypond[quote,verbatim,ragged-right]
329 dyn=#(define-event-function (parser location arg) (markup?)
330          (make-dynamic-script arg))
331 \relative c' { c\dyn pfsss }
332 @end lilypond
333
334 @item
335 A list of ASCII aliases for special characters can be included.
336 @lilypond[quote,verbatim]
337 \paper {
338   #(include-special-characters)
339 }
340 \markup "&bull; &dagger; &copyright; &OE; &ss; &para;"
341 @end lilypond
342
343 @item
344 There is a new @code{define-scheme-function} command in analogy to
345 @code{define-music-function} that can be used to define functions
346 evaluating to Scheme expressions while accepting arguments in Lilypond
347 syntax.
348
349 @item
350 The construct @code{#@{ @dots{} #@}} can now be used not just for
351 constructing sequential music lists, but also for pitches (distinguished
352 from single note events by the absence of a duration or other
353 information that can't be part of a pitch), single music events, void
354 music expressions, post events, markups (mostly freeing users from
355 having to use the @code{markup} macro), markup lists, number
356 expressions, context definitions and modifications, and a few other
357 things.  If it encloses nothing or only a single music event, it no
358 longer returns a sequential music list but rather a void music
359 expression or just the music event itself, respectively.
360
361 @item
362 Pitches can be used on the right side of assignments.  They are
363 distinguished from single note events by the absence of a duration or
364 other information that can't be part of a pitch.
365
366 @item
367 New command-line option @option{--loglevel=@var{level}} to control how much output
368 LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEBUG.
369
370 @item
371 @code{\once \set} now correctly resets the property value to the previous value.
372 @lilypond[fragment,quote,relative=2]
373   \set fingeringOrientations = #'(left)
374   <e-1>4
375   \once \set fingeringOrientations = #'(right)
376   <e-1>
377   <e-1>-"left"
378 @end lilypond
379
380 @item
381 The alignment of dynamic spanners (hairpins, text crescendo, etc.) is now
382 automatically broken if a different direction is explicitly given.
383 @lilypond[fragment,quote,relative=2]
384 c4_\< c c^\> c c1_\p
385 @end lilypond
386
387
388 @item
389 Appoggiaturas and acciaccaturas now also work inside a slur, not only inside
390 a phrasing slur. Also, a function @code{\slashedGrace} was added that does
391 not use a slur from the acciaccatura note.
392 @lilypond[fragment,quote,relative=2]
393 c4( \appoggiatura e8 d4 \acciaccatura e8 d4 \slashedGrace e8 c4)
394 @end lilypond
395
396
397 @item
398 To suppress the line on a crescendo text spanner (and other similar spanners),
399 LilyPond now fully supports the @code{#'style = #'none} property.
400 @lilypond[fragment,quote,relative=2]
401 \override DynamicTextSpanner #'style = #'none
402 c4\cresc c c g, c'\p
403 @end lilypond
404
405 @item
406 LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!
407
408 @item
409 Glissandi can now span multiple lines.
410
411 @end itemize
412
413 @ifhtml
414 For older news, go to
415 @uref{http://lilypond.org/doc/v2.14/Documentation/changes/},
416 @uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html},
417 or @uref{../,go back} to the Documentation index.
418
419
420 @end ifhtml
421
422 @bye