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