]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/changes.tely
Merge branch 'translation' into staging
[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
64 @item
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}.
68 @lilypond[quote]
69 \layout {
70   \context {
71     \Staff
72     \remove Dot_column_engraver
73   } \context {
74     \Voice
75     \consists Dot_column_engraver
76   }
77 }
78 \relative c'' <<
79   { \time 6/8
80     <d f g>4. <d f g> <f, g> b
81   } \\ {
82     <f g b>4. <g b d> <b d> <e, g>
83   } >>
84 @end lilypond
85
86 @item
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]
90 g8->( bes,-.) d4
91 \shape Slur #'((-0.5 . 1.5) (-3 . 0) (0 . 0) (0 . 0))
92 g8->( bes,!-.) d4
93 @end lilypond
94
95 @item
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
100 declarations like
101 @example
102 \layout @{ \accidentalStyle modern @}
103 \midi @{ \tempo 4. = 66 @}
104 @end example
105
106 @item
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
110 documentation:
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}.
113
114 @item
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:
118 @itemize
119 @item @code{beam}
120 @item @code{bezier-sandwich}
121 @item @code{bracket}
122 @item @code{dashed-slur}
123 @item @code{dot}
124 @item @code{oval}
125 @item @code{repeat-slash}
126 @item @code{zigzag-line}
127 @end itemize
128
129 @item
130 Flags are now treated as separate objects rather than as stem parts.
131 @lilypond[fragment,quote,relative=2]
132 \override Flag #'color = #red
133 g8
134 @end lilypond
135
136 @item
137 Two alternative methods for bar numbering can be set, especially for
138 when using repeated music;
139
140 @lilypond[fragment,quote,relative=1,noragged-right]
141 \relative c'{
142   \set Score.alternativeNumberingStyle = #'numbers
143   \repeat volta 3 { c4 d e f | }
144     \alternative {
145       { c4 d e f | c2 d \break }
146       { f4 g a b | f4 g a b | f2 a | \break }
147       { c4 d e f | c2 d }
148     }
149   c1 \break
150   \set Score.alternativeNumberingStyle = #'numbers-with-letters
151   \repeat volta 3 { c,4 d e f | }
152     \alternative {
153       { c4 d e f | c2 d \break }
154       { f4 g a b | f4 g a b | f2 a | \break }
155       { c4 d e f | c2 d }
156     }
157   c1
158 }
159 @end lilypond
160
161 @item
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
170 code operative.
171
172 The following three items are consequences of this change.
173
174 @item
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.
180
181 @item
182 String numbers and right hand fingerings on single notes now appear
183 without having to be written inside of chord brackets.
184
185 @item
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]
190 tonic=fis'
191 { <\tonic \transpose c g \tonic> }
192 @end lilypond
193 @noindent
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.
198
199 @item
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:
203
204 @lilypond[verbatim,quote,ragged-right,relative=2]
205 <\tweak Accidental #'color #red   cis4
206  \tweak Accidental #'color #green es
207                                   g>
208 @end lilypond
209
210 @item
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, similar to
215 how @code{ly:export} could previously be used.  @code{ly:export} has
216 been removed.  As a consequence, @code{#} is now free to delay
217 evaluation of its argument until the parser actually reduces the
218 containing expression, greatly reducing the potential for premature
219 evaluation.
220
221 @item
222 Support for jazz-like chords has been improved: Lydian and altered
223 chords are recognised; separators between chord modifiers are now
224 treated independently of separators between ``slash'' chords and their
225 bass notes (and by default, slashes are now only used for the latter
226 type of separator); additional pitches are no longer prefixed with
227 ``add'' by default; and the ``m'' in minor chords can be customized.
228 @ruser{Customizing chord names} for more information.
229
230 @item
231 The @code{\markuplines} command has been renamed to @code{\markuplist}
232 for a better match with its semantics and general Lilypond
233 nomenclature.
234
235 @item
236 The interface for specifying string tunings in tablature has been
237 simplified considerably and employs the scheme function
238 @code{\stringTuning} for most purposes.
239
240 @item
241 Beams can now have their slopes preserved over line breaks.
242 @lilypond[fragment,quote,relative=2]
243 \override Beam #'breakable = ##t
244 a8[ b c d e f g \bar "" \break f e d c b a]
245 \once \override Beam #'positions = #beam::align-with-broken-parts
246 a8[ b c d e f g \bar "" \break f e d c b a]
247 \once \override Beam #'positions = #beam::slope-like-broken-parts
248 a8[ b c d e f g \bar "" \break f e d c b a]
249 @end lilypond
250 To do this, several callback functions are now deprecated.
251 @itemize
252 @item @code{ly:beam::calc-least-squares-positions}
253 @item @code{ly:beam::slope-damping}
254 @item @code{ly:beam::shift-region-to-valid}
255 @end itemize
256 Furthermore, @code{ly:beam::quanting} now takes an additional argument
257 to help calculations over line breaks.  All of these functions are now
258 automatically called when setting the @code{positions} parameter.
259
260 @item
261 In function arguments music, markups and Scheme expressions (as well as
262 several other syntactic entities) have become mostly interchangeable and
263 are told apart only by evaluating the respective predicate.  In several
264 cases, the predicate is consulted by the parser, like when deciding
265 whether to interpret @code{-3} as a number or a fingering event.
266
267 @item
268 Music functions (and their close relatives) can now be defined with
269 optional arguments.
270
271 @item
272 For defining commands executed only for their side-effects,
273 @code{define-void-function} is now available.
274
275 @item
276 There is a new @code{define-event-function} command in analogy to
277 @code{define-music-function} that can be used for defining music
278 functions acting as post events without requiring a direction specifier
279 (@code{-}, @code{^}, or @code{_}) placed before them.
280 @lilypond[quote,verbatim,ragged-right]
281 dyn=#(define-event-function (parser location arg) (markup?)
282          (make-dynamic-script arg))
283 \relative c' { c\dyn pfsss }
284 @end lilypond
285
286 @item
287 A list of ASCII aliases for special characters can be included.
288 @lilypond[quote,verbatim]
289 \paper {
290   #(include-special-characters)
291 }
292 \markup "&bull; &dagger; &copyright; &OE; &ss; &para;"
293 @end lilypond
294
295 @item
296 There is a new @code{define-scheme-function} command in analogy to
297 @code{define-music-function} that can be used to define functions
298 evaluating to Scheme expressions while accepting arguments in Lilypond
299 syntax.
300
301 @item
302 The construct @code{#@{ @dots{} #@}} can now be used not just for
303 constructing sequential music lists, but also for pitches (distinguished
304 from single note events by the absence of a duration or other
305 information that can't be part of a pitch), single music events, void
306 music expressions, post events, markups (mostly freeing users from
307 having to use the @code{markup} macro), markup lists, number
308 expressions, context definitions and modifications, and a few other
309 things.  If it encloses nothing or only a single music event, it no
310 longer returns a sequential music list but rather a void music
311 expression or just the music event itself, respectively.
312
313 @item
314 Pitches can be used on the right side of assignments.  They are
315 distinguished from single note events by the absence of a duration or
316 other information that can't be part of a pitch.
317
318 @item
319 New command-line option @option{--loglevel=@var{level}} to control how much output
320 LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEBUG.
321
322 @item
323 @code{\once \set} now correctly resets the property value to the previous value.
324 @lilypond[fragment,quote,relative=2]
325   \set fingeringOrientations = #'(left)
326   <e-1>4
327   \once \set fingeringOrientations = #'(right)
328   <e-1>
329   <e-1>-"left"
330 @end lilypond
331
332 @item
333 The alignment of dynamic spanners (hairpins, text crescendo, etc.) is now
334 automatically broken if a different direction is explicitly given.
335 @lilypond[fragment,quote,relative=2]
336 c4_\< c c^\> c c1_\p
337 @end lilypond
338
339
340 @item
341 Appoggiaturas and acciaccaturas now also work inside a slur, not only inside
342 a phrasing slur. Also, a function @code{\slashedGrace} was added that does
343 not use a slur from the acciaccatura note.
344 @lilypond[fragment,quote,relative=2]
345 c4( \appoggiatura e8 d4 \acciaccatura e8 d4 \slashedGrace e8 c4)
346 @end lilypond
347
348
349 @item
350 To suppress the line on a crescendo text spanner (and other similar spanners),
351 LilyPond now fully supports the @code{#'style = #'none} property.
352 @lilypond[fragment,quote,relative=2]
353 \override DynamicTextSpanner #'style = #'none
354 c4\cresc c c g, c'\p
355 @end lilypond
356
357 @item
358 LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!
359
360 @item
361 Glissandi can now span multiple lines.
362
363 @end itemize
364
365 @ifhtml
366 For older news, go to
367 @uref{http://lilypond.org/doc/v2.14/Documentation/changes/},
368 @uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html},
369 or @uref{../,go back} to the Documentation index.
370
371
372 @end ifhtml
373
374 @bye