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