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