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