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