1 New features in 2.18 since 2.16
2 *******************************
4 * The PostScript functionality of stroke adjustment is no longer
5 applied automatically but left to the discretion of the PostScript
6 device (by default, Ghostscript uses it for resolutions up to
7 150dpi when generating raster images). When it is enabled, a more
8 complex drawing algorithm designed to benefit from stroke
9 adjustment is employed mostly for stems and bar lines.
11 Stroke adjustment can be forced by specifying the command line
12 option `-dstrokeadjust' to LilyPond. When generating `PDF' files,
13 this will usually result in markedly better looking `PDF' previews
14 but significantly larger file size. Print quality at high
15 resolutions will be unaffected.
17 * There is now a new context type called `NullVoice' which, while not
18 appearing in the printed output, can be used to align lyrics.
19 This can be particularly convenient when used in parallel with a
20 `\partcombine' construct.
22 soprano = \relative c' { c e g c }
23 alto = \relative c' { a c e g }
24 verse = \lyricmode { This is my song }
28 \partcombine \soprano \alto
29 \new NullVoice = "aligner" \soprano
30 \new Lyrics \lyricsto "aligner" \verse
37 * Several articulations can be put into a single variable or
38 returned from an event function:
40 sempreStacc = -. ^\markup \italic sempre
41 \relative { c''4\sempreStacc c c c }
45 * The baseline of score markups is now taken from the reference
46 point (usually the middle of the staff) of the first bottom system
47 rather than the top of the bounding rectangle. The following
50 violin: \score { \new Staff { <g d' a' e''>1 }
51 \layout { indent=0 } } ,
52 cello: \score { \new Staff { \clef "bass" <c, g, d a> }
53 \layout { indent=0 } }
58 previously looked like
63 without a reliable way to get both scores to line up.
65 * LilyPond no longer automatically infers a `\defaultchild' context
66 in a context definition with `\accepts' clauses. Any context
67 definition without an explicit or inherited `\defaultchild'
68 definition counts as a `Bottom' context and will be eligible for
69 rhythmic events and overrides without causing the implicit
70 creation of other contexts. Be sure to specify a `\defaultchild'
71 for non-`Bottom' contexts when defining them from scratch.
73 * There is now extensive support for both discant and bass accordion
74 register symbols in the `scm accreg' module, see *note Accordion
75 Registers: (lilypond-notation)Accordion Registers.
77 #(use-modules (scm accreg))
81 { \clef "treble" \discant "10"
82 r8 s32 f'[ bes f] s e[ a e] s d[ g d] s16 e32[ a]
84 << { r16 <f bes> r <e a> r <d g> } \\
85 { d r a r bes r } >> |
89 { \clef "treble" \freeBass "1"
90 r8 d'32 s16. c32 s16. bes32 s16. a32[ cis] s16
91 \clef "bass" \stdBass "Master"
92 << { r16 <f, bes d>^"b" r <e a c>^"am" r <d g bes>^"gm" |
94 { d8_"D" c_"C" bes_"B" | a1_"A" }
101 * New commands `markLengthOn' and `markLengthOff' control the
102 allowance of horizontal space for tempo and rehearsal marks.
107 * Rehearsal marks at the beginning of a line are now placed to the
108 right of the clef and key signature by default. As in previous
109 versions, the `break-alignable-interface' controls the behavior.
114 * Decimal numbers can now be written directly in music, without a
115 hash sign. Together with the previous change in the way object
116 properties are specified, the code to change the length of stems
117 has changed from this:
118 \override Stem #'length = #5.6
121 \override Stem.length = 5.6
124 One has to write a digit on both sides of the dot - values like
125 `4.' or `-.3' are not allowed.
127 Decimal fractions are also not accepted in `\chordmode'.
129 * A number of shorthands like `(', `)', `|', `[', `]', `~', `\(',
130 `\)' and others can now freely be redefined like normal commands.
140 c8 \{ d e f \} % slurred
141 g ( a b c ) % no slur, but with melisma
144 \addlyrics { Li -- ly -- pond. }
149 * The articulation shorthand for `\staccatissimo' has been renamed
152 * Tempo change ranges are now written as `\tempo 4 = 60 - 68' rather
153 than `\tempo 4 = 60 ~ 68'.
155 * Grob `OctavateEight' was renamed to `ClefModifier'. Related
156 context properties were renamed from `xxxOctavationyyy' to
157 `xxxTranspositionyyy'.
159 * There is a new `\absolute' command explicitly marking music as
160 being entered in absolute pitch. While this has been the default
161 previously, an explicit `\absolute' also prevents reinterpretation
162 when the passage is placed inside of `\relative':
164 \relative c { c'4 \absolute { f'' g'' } c }
168 * When `\relative' is used without an explicit reference pitch, the
169 reference pitch now is the middle of the first octave, making the
170 first entered pitch indistinguishable from absolute pitch.
171 Previously, omitting the reference pitch would have lead to a
172 default of `c''. Since that choice was somewhat arbitrary,
173 recommended usage was to always specify the reference pitch.
175 * A new command `\single' can be used for converting a property
176 override into a tweak to be applied on a single music expression:
178 <a \single\voiceTwoStyle e' a>1
182 * Two ways of letting graphical objects not appear in the output are
183 overriding its `transparent' property with `#t' (retaining the
184 original spacing) or overriding its `stencil' property with `#f'
185 (not using any space at all). Those two operations now have the
186 shorthands `\hide' and `\omit', respectively. They can either be
187 given a music expression to tweak, or the name of a graphical
188 object for which an override should be created (for specifying
189 both, use `\single' on the override form):
191 \new Staff \with { \omit Clef }
192 \relative c'' <a e' \hide a>1
196 * A new command `\temporary' can be applied to overrides in order to
197 not have them replace previous property settings. If a `\revert'
198 is applied to the same property subsequently, the previous setting
201 \override NoteHead.color = #red c4
202 \override NoteHead.color = #green d
203 \revert NoteHead.color e2
204 \override NoteHead.color = #red c4
205 \temporary\override NoteHead.color = #green d
206 \revert NoteHead.color e
207 \revert NoteHead.color c
211 This is mainly useful for writing music functions that need to
212 have some property changed just for the duration of the function.
214 * `\tag', `\removeWithTag', and `\keepWithTag' can now accept a list
215 of symbols rather than just a single symbol for marking, removing,
216 and keeping music with any of multiple tags. This is particularly
217 important for `\keepWithTag' since one cannot achieve the same
218 effect by using multiple consecutive `\keepWithTag' commands.
220 * The `-d old-relative' option has been removed. Not actually
221 accessible from the command line any more, its remaining use was
222 for interpretating `\relative' in LilyPond files converted
223 automatically from version 1.8 or older. It is unclear how much
224 of this was actually still operative.
226 * The meaning of `instrumentTransposition' has been reversed. After
227 \set instrumentTransposition = #{ b #}
228 a written `c'' now sounds like `b'. Previously, this would have
229 been the other way round. This and the following change should
230 make dealing with transposing instruments more straightforward.
232 * The music generated by `\set' and `\override' commands is no
233 longer affected by `\transpose'. The main consequence is that
234 `\transpose' will transpose audible/concert pitch and printed
235 pitch by the same amount even when the transposed music contains
236 `\transposition'. Previously,
237 \transpose c' f' \transposition bes'
238 was equivalent to `\transposition f''. Now it stays equivalent to
239 `\transposition bes''.
241 * When checking for collisions, LilyPond no longer treats objects as
242 rectangles. Instead, the actual shape of objects is approximated
243 using an integral-like approach. This generally results in more
244 even and snug positioning of objects and systems:
248 Previously, the above snippet looked like this:
252 Affected objects include `Accidentals', `Beams', `Clefs',
253 `Dynamics', `FiguredBass', `Flags', `Glissandos', `Lyrics',
254 `MetronomeMarks', `OttavaBrackets', `Pedals', `RehearsalMarks',
255 `Rests', `Scripts', `TextScripts', `Ties', `Tuplets' and
258 * Tuplets are now created with the `\tuplet' command, which takes a
259 fraction `T/N' to specify that T notes are played in the time
260 usually allowed for N. One `\tuplet' command can create several
261 tuplet groups if their duration is typed after the fraction.
263 \tuplet 3/2 { c8 d e } \tuplet 3/2 { f e d } c2
264 \tuplet 3/2 4 { c8 d e f e d } c2
268 The `\times' command with its inverted fraction order `N/T' is
271 * Introducing two new markup-commands; `\draw-dashed-line' and
274 The dashed-line extends to the whole length given by DEST, if
275 `full-length' is set to `#t' (this is the default) without any
276 space at the beginning or end. `off' will then be altered to fit.
277 To insist on the given (or default) values of `on', `off' use
278 `\override #'(full-length . #f)'. Manual settings for `on', `off'
279 and `phase' are possible.
281 The dotted-line always extends to the whole length given by DEST,
282 without any space at the beginning or end. Manual settings for
283 `off' are possible to get larger or smaller space between the dots.
284 The given (or default) value of `off' will be altered to fit the
288 \draw-dashed-line #'(5.1 . 2.3)
289 \override #'(on . 0.3)
290 \override #'(off . 0.5)
291 \draw-dashed-line #'(5.1 . 2.3)
292 \draw-dotted-line #'(5.1 . 2.3)
293 \override #'(thickness . 2)
294 \override #'(off . 0.2)
295 \draw-dotted-line #'(5.1 . 2.3)
300 * Starting with version 2.17.10, error messages or the `textedit'
301 URI used for point-and-click functionality specify column numbers
302 starting with 1 rather than 0. The byte offset (also part of
303 `textedit' URIs) still starts at 0.
305 * The `\clef' command supports optional transposition:
314 * The LilyPond syntax of dot-separated words `Voice.Accidental' has
315 been made interchangeable with `#'(Voice Accidental)', a Scheme
316 list of symbols. As one result, code like
317 \override Voice.TextSpanner #'(bound-details left text) = "rit."
319 \override Voice.TextSpanner bound-details.left.text = "rit."
321 \override #'(Voice TextSpanner) bound-details.left.text = "rit."
323 * Grob and grob property path no longer need to be specified as two
324 separate arguments to commands like `\override' and `\revert',
325 allowing for the syntax
326 \override Voice.TextSpanner.bound-details.left.text = "rit."
327 Since complementary music functions like `\overrideProperty'
328 cannot support forms with and without separating space at the same
329 time, using a single dotted path is now the preferred form.
330 Specifying grob path and grob property path separately, currently
331 still supported with `\override' and `\revert' for compatibility
332 reasons, is deprecated.
334 * Due to words now being accepted as symbol function arguments, the
335 interfaces of `\accidentalStyle', `\alterBroken', `\footnote' and
336 `\tweak' had to be redesigned where optional symbol arguments were
337 involved. Please check the respective music function
338 documentation for details.
340 * Several commands now accept symbol lists (conveniently entered as
341 dot-separated words) for various kinds of arguments. These
342 include `\accidentalStyle', `\alterBroken', `\footnote', `\hide',
343 `\omit', `\overrideProperty', `\shape', and `\tweak'.
345 * The bar line user interface has changed. Bar glyphs now resemble
346 the appearance of the bar line, so a left repeat sign has to be
347 coded as `.|:'. The command `\defineBarLine' provides an easy way
348 to define additional bar line styles.
350 * Accidentals in the key signature may be printed in octaves other
351 than their traditional positions, or in multiple octaves.