]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/changes.tely
Merge remote branch 'origin/master' into release/unstable
[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.18 since 2.16
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 LilyPond no longer automatically infers a @samp{\defaultchild}
66 context in a context definition with @samp{\accepts} clauses.  Any
67 context definition without an explicit or inherited
68 @samp{\defaultchild} definition counts as a @samp{Bottom} context
69 and will be eligible for rhythmic events and overrides without
70 causing the implicit creation of other contexts.  Be sure to
71 specify a @samp{\defaultchild} for non-@samp{Bottom} contexts when
72 defining them from scratch.
73
74 @item
75 There is now extensive support for both discant and bass accordion
76 register symbols in the @samp{scm accreg} module, see
77 @ruser{Accordion Registers}.
78 @lilypond[verbatim,quote]
79 #(use-modules (scm accreg))
80 \new PianoStaff
81 <<
82   \new Staff \relative
83   { \clef "treble"  \discant "10"
84     r8 s32 f'[ bes f] s e[ a e] s d[ g d] s16 e32[ a]
85     \discant "121"
86     << { r16 <f bes> r <e a> r <d g> } \\
87        { d r a r bes r } >> |
88     <cis e a>1
89   }
90   \new Staff \relative
91   { \clef "treble"  \freeBass "1"
92     r8 d'32 s16. c32 s16. bes32 s16. a32[ cis] s16
93     \clef "bass"  \stdBass "Master"
94     << { r16 <f, bes d>^"b" r <e a c>^"am" r <d g bes>^"gm" |
95          <e a cis>1^"a" } \\
96        { d8_"D" c_"C" bes_"B" | a1_"A" }
97     >>
98   }
99 >>
100 @end lilypond
101
102 @item
103 New commands @code{markLengthOn} and @code{markLengthOff} control
104 the allowance of horizontal space for tempo and rehearsal marks.
105
106 @lilypond[quote,relative=2]
107 \markLengthOn
108 \compressFullBarRests
109 \tempo "Molto vivace" c2 c'
110 \mark\default
111 \tempo "Meno mosso" R1*16
112 \mark\default
113 g,2 g
114 \bar "||"
115 \markLengthOff
116 \tempo "Molto vivace" c2 c'
117 \mark#1
118 \tempo "Meno mosso" R1*16
119 \mark\default
120 g,2 g
121 @end lilypond
122
123 @item
124 Rehearsal marks at the beginning of a line are now placed to the right
125 of the clef and key signature by default.  As in previous versions, the
126 @code{break-alignable-interface} controls the behavior.
127
128 @lilypond[quote,relative=2]
129 \set Score.barNumberVisibility = #all-bar-numbers-visible
130 \set Timing.currentBarNumber = #72
131 \bar"||" \time 3/4 \key e\major \mark#10 \tempo "Adagio" b2.
132 @end lilypond
133
134 @item
135 Decimal numbers can now be written directly in music,
136 without a hash sign.  Together with the previous change
137 in the way object properties are specified, the code to
138 change the length of stems has changed from this:
139 @example
140 \override Stem #'length = #5.6
141 e' f' g' a'
142 @end example
143 to this:
144 @example
145 \override Stem.length = 5.6
146 e' f' g' a'
147 @end example
148
149 One has to write a digit on both sides of the dot -- values like
150 @code{4.} or @code{-.3} are not allowed.
151
152 Decimal fractions are also not accepted in @code{\chordmode}.
153
154 @item
155 A number of shorthands like @code{(}, @code{)}, @code{|},
156 @code{[}, @code{]}, @code{~}, @code{\(}, @code{\)} and others can
157 now freely be redefined like normal commands.  An example would be
158 @lilypond[verbatim,quote]
159 "\\{" = (
160 "\\}" = )
161 "(" = \melisma
162 ")" = \melismaEnd
163
164 \new Staff <<
165   \relative c' {
166     c8 \{ d e f \} % slurred
167     g ( a b c ) % no slur, but with melisma
168     c,1 \bar "|."
169    }
170    \addlyrics { Li -- ly -- pond. }
171 >>
172 @end lilypond
173
174 @item
175 The articulation shorthand for @code{\staccatissimo} has been
176 renamed from @code{-|} to@tie{}@code{-!}.
177
178 @item
179 Tempo change ranges are now written as @code{\tempo 4 = 60 - 68}
180 rather than @code{\tempo 4 = 60 ~ 68}.
181
182 @item
183 Grob @code{OctavateEight} was renamed to @code{ClefModifier}.
184 Related context properties were renamed from @code{xxxOctavationyyy}
185 to @code{xxxTranspositionyyy}.
186
187 @item
188 There is a new @code{\absolute} command explicitly marking music
189 as being entered in absolute pitch.  While this has been the
190 default previously, an explicit @code{\absolute} also prevents
191 reinterpretation when the passage is placed inside of
192 @code{\relative}:
193 @lilypond[verbatim,quote]
194 \relative c { c'4 \absolute { f'' g'' } c }
195 @end lilypond
196
197 @item
198 When @code{\relative} is used without an explicit reference pitch,
199 the reference pitch now is the middle of the first octave, making
200 the first entered pitch indistinguishable from absolute pitch.
201 Previously, omitting the reference pitch would have lead to a
202 default of @code{c'}.  Since that choice was somewhat arbitrary,
203 recommended usage was to always specify the reference pitch.
204
205 @item
206 A new command @code{\single} can be used for converting a property
207 override into a tweak to be applied on a single music expression:
208
209 @lilypond[quote,verbatim,relative=2]
210 <a \single\voiceTwoStyle e' a>1
211 @end lilypond
212
213 @item
214 Two ways of letting graphical objects not appear in the output are
215 overriding its @code{transparent} property with @code{#t}
216 (retaining the original spacing) or overriding its @code{stencil}
217 property with @code{#f} (not using any space at all).  Those two
218 operations now have the shorthands @code{\hide} and @code{\omit},
219 respectively.  They can either be given a music expression to
220 tweak, or the name of a graphical object for which an override
221 should be created (for specifying both, use @code{\single} on the
222 override form):
223
224 @lilypond[quote,verbatim]
225 \new Staff \with { \omit Clef }
226 \relative c'' <a e' \hide a>1
227 @end lilypond
228
229 @item
230 A new command @code{\temporary} can be applied to overrides in
231 order to not have them replace previous property settings.  If a
232 @code{\revert} is applied to the same property subsequently, the
233 previous setting reappears:
234
235 @lilypond[quote,verbatim,relative=2]
236 \override NoteHead.color = #red c4
237 \override NoteHead.color = #green d
238 \revert NoteHead.color e2
239 \override NoteHead.color = #red c4
240 \temporary\override NoteHead.color = #green d
241 \revert NoteHead.color e
242 \revert NoteHead.color c
243 @end lilypond
244
245 This is mainly useful for writing music functions that need to
246 have some property changed just for the duration of the function.
247
248 @item
249 @code{\tag}, @code{\removeWithTag}, and @code{\keepWithTag} can
250 now accept a list of symbols rather than just a single symbol for
251 marking, removing, and keeping music with any of multiple tags.
252 This is particularly important for @code{\keepWithTag} since one
253 cannot achieve the same effect by using multiple consecutive
254 @code{\keepWithTag} commands.
255
256 @item
257 The @samp{-d old-relative} option has been removed.  Not actually
258 accessible from the command line any more, its remaining use was
259 for interpretating @code{\relative} in LilyPond files converted
260 automatically from version@tie{}1.8 or older.  It is unclear how
261 much of this was actually still operative.
262
263 @item
264 The meaning of @code{instrumentTransposition} has been reversed.
265 After
266 @example
267 \set instrumentTransposition = #@{ b #@}
268 @end example
269 a written @code{c'} now sounds like @code{b}.  Previously, this
270 would have been the other way round.  This and the following change
271 should make dealing with transposing instruments more
272 straightforward.
273
274 @item
275 The music generated by @code{\set} and @code{\override} commands
276 is no longer affected by @code{\transpose}.  The main consequence
277 is that @code{\transpose} will transpose audible/@/concert pitch and
278 printed pitch by the same amount even when the transposed music
279 contains @code{\transposition}.  Previously,
280 @example
281 \transpose c' f' \transposition bes'
282 @end example
283 was equivalent to @code{\transposition f'}.  Now it stays
284 equivalent to @code{\transposition bes'}.
285
286 @item
287 When checking for collisions, LilyPond no longer treats objects as
288 rectangles.  Instead, the actual shape of objects is approximated
289 using an integral-like approach.  This generally results in more
290 even and snug positioning of objects and systems:
291
292 @lilypond[relative=1]
293 #(ly:set-option 'debug-skylines #t)
294 \dynamicUp
295 c'4\f a4\f d\f( f)
296 a,4\< c c c\!
297 d4-.\downbow a4^"r'venu..." c \tempo "T1" e
298 @end lilypond
299
300 Previously, the above snippet looked like this:
301
302 @lilypond[relative=1]
303 #(ly:set-option 'debug-skylines #t)
304 \override Hairpin #'vertical-skylines = #'()
305 \override DynamicText #'vertical-skylines = #'()
306 \override TextScript #'vertical-skylines = #'()
307 \override Score.MetronomeMark #'vertical-skylines = #'()
308 \override Staff.Clef #'vertical-skylines = #'()
309 \dynamicUp
310 c'4\f a4\f d\f( f)
311 a,4\< c c c\!
312 d4-.\downbow a4^"r'venu..." c \tempo "T1" e
313 @end lilypond
314
315 Affected objects include @code{Accidentals}, @code{Beams}, @code{Clefs},
316 @code{Dynamics}, @code{FiguredBass}, @code{Flags}, @code{Glissandos},
317 @code{Lyrics}, @code{MetronomeMarks}, @code{OttavaBrackets},
318 @code{Pedals}, @code{RehearsalMarks}, @code{Rests}, @code{Scripts},
319 @code{TextScripts}, @code{Ties}, @code{Tuplets} and @code{VoltaBrackets}.
320
321 @item
322 Tuplets are now created with the @code{\tuplet} command, which
323 takes a fraction @code{@var{t}/@var{n}} to specify that @var{t}
324 notes are played in the time usually allowed for @var{n}. One
325 @code{\tuplet} command can create several tuplet groups if their
326 duration is typed after the fraction.
327 @lilypond[quote,verbatim,relative=2]
328 \tuplet 3/2 { c8 d e } \tuplet 3/2 { f e d } c2
329 \tuplet 3/2 4 { c8 d e f e d } c2
330 @end lilypond
331 The @code{\times} command with its inverted fraction order
332 @code{@var{n}/@var{t}} is still available.
333
334 @item
335 Introducing two new markup-commands; @code{\draw-dashed-line} and
336 @code{\draw-dotted-line}.
337
338 @noindent
339 The dashed-line extends to the whole length given by @var{dest}, if
340 @code{full-length} is set to @code{#t} (this is the default) without any
341 space at the beginning or end.  @code{off} will then be altered to fit.
342 To insist on the given (or default) values of @code{on}, @code{off} use
343 @code{\override #'(full-length . #f)}.  Manual settings for @code{on},
344 @code{off} and @code{phase} are possible.
345
346 @noindent
347 The dotted-line always extends to the whole length given by @var{dest},
348 without any space at the beginning or end.  Manual settings for
349 @code{off} are possible to get larger or smaller space between the dots.
350 The given (or default) value of @code{off} will be altered to fit the
351 line-length.
352
353 @lilypond[verbatim,quote]
354 \markup {
355   \draw-dashed-line #'(5.1 . 2.3)
356   \override #'(on . 0.3)
357   \override #'(off . 0.5)
358   \draw-dashed-line #'(5.1 . 2.3)
359   \draw-dotted-line #'(5.1 . 2.3)
360   \override #'(thickness . 2)
361   \override #'(off . 0.2)
362   \draw-dotted-line #'(5.1 . 2.3)
363 }
364 @end lilypond
365
366 @item
367 Starting with version@tie{}2.17.10, error messages or the
368 @code{textedit} @acronym{URI} used for point-and-click
369 functionality specify column numbers starting with@tie{}1 rather
370 than@tie{}0.  The byte offset (also part of @code{textedit}
371 @acronym{URI}s) still starts at@tie{}0.
372
373 @item
374 The @code{\clef} command supports optional transposition:
375 @lilypond[verbatim,quote,relative=1]
376 \clef "treble_(8)"
377 c2 c
378 \clef "bass^[15]"
379 c2 c
380 @end lilypond
381
382 @item
383 The LilyPond syntax of dot-separated words @code{Voice.Accidental}
384 has been made interchangeable with @code{#'(Voice Accidental)}, a
385 Scheme list of symbols.  As one result, code like
386 @example
387 \override Voice.TextSpanner #'(bound-details left text) = "rit."
388 @end example
389 is now equivalent to
390 @example
391 \override Voice.TextSpanner bound-details.left.text = "rit."
392 @end example
393 or even
394 @example
395 \override #'(Voice TextSpanner) bound-details.left.text = "rit."
396 @end example
397
398 @item
399 Grob and grob property path no longer need to be specified as two
400 separate arguments to commands like @samp{\override} and
401 @code{\revert}, allowing for the syntax
402 @example
403 \override Voice.TextSpanner.bound-details.left.text = "rit."
404 @end example
405 Since complementary music functions like @samp{\overrideProperty}
406 cannot support forms with and without separating space at the same
407 time, using a single dotted path is now the preferred form.
408 Specifying grob path and grob property path separately, currently
409 still supported with @samp{\override} and @samp{\revert} for
410 compatibility reasons, is deprecated.
411
412 @item
413 Due to words now being accepted as symbol function arguments, the
414 interfaces of @samp{\accidentalStyle}, @samp{\alterBroken},
415 @samp{\footnote} and @samp{\tweak} had to be redesigned where
416 optional symbol arguments were involved.  Please check the
417 respective music function documentation for details.
418
419 @item
420 Several commands now accept symbol lists (conveniently entered as
421 dot-separated words) for various kinds of arguments.  These
422 include @samp{\accidentalStyle}, @samp{\alterBroken},
423 @samp{\footnote}, @samp{\hide}, @samp{\omit},
424 @samp{\overrideProperty}, @samp{\shape}, and @samp{\tweak}.
425
426 @item
427 The bar line user interface has changed. Bar glyphs now resemble the
428 appearance of the bar line, so a left repeat sign has to be coded
429 as @code{.|:}. The command @code{\defineBarLine} provides an easy way
430 to define additional bar line styles.
431
432 @item
433 Accidentals in the key signature may be printed in octaves other
434 than their traditional positions, or in multiple octaves.
435 @lilypond[quote,relative=0]
436 \override Staff.KeySignature #'flat-positions = #'((-5 . 5))
437 \override Staff.KeyCancellation #'flat-positions = #'((-5 . 5))
438 \clef bass \key es \major es g bes d
439 \clef treble \bar "||" \key es \major es g bes d
440 \override Staff.KeySignature #'sharp-positions = #'(2)
441 \bar "||" \key d \major b fis b2
442 @end lilypond
443
444 @end itemize
445
446 @ifhtml
447 For older news, go to
448 @uref{http://lilypond.org/doc/v2.16/Documentation/changes/},
449 @uref{http://lilypond.org/doc/v2.14/Documentation/changes/},
450 or @uref{../,go back} to the Documentation index.
451
452
453 @end ifhtml
454
455 @bye