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