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