1 \input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
6 @macro inputfileref{DIR,NAME}
7 @uref{../../\DIR\/collated-files.html#\NAME\,@file{\DIR\/\NAME\}}@c
9 @macro usermanref{NAME}
10 @inforef{\NAME\,,../user/lilypond/lilypond}@c
15 @macro inputfileref{DIR,NAME}
18 @macro usermanref{NAME}
19 See user manual, \NAME\
23 @macro textanchor{NAME}
30 @documentencoding utf-8
36 @top New features in 2.12 since 2.10
39 This document is also available in @uref{NEWS.pdf,PDF}. It is part of
40 the @uref{../,LilyPond Documentation}.
52 * only show verbatim input for syntax/input changes
54 * try to be as brief possible in those cases
56 * don't try to provide real-world examples, they often get too big,
57 which scares away people.
59 * Write complete sentences.
61 * only show user-visible changes.
65 Fret diagrams can now have variable string thickness:
67 \include "predefined-guitar-fretboards.ly"
75 \override FretBoard #'fret-diagram-details
76 #'string-thickness-factor = #0.3
85 A new fret diagram orientation, opposing-landscape, is available:
87 \include "predefined-guitar-fretboards.ly"
95 \override FretBoard #'fret-diagram-details
96 #'orientation = #'opposing-landscape
105 Unbeamed 128th notes are now supported:
113 Extending LilyPond's existing support for microtones, there are
114 now arrowed accidentals for the notation of microtonal alterations.
115 To use them, redefine the @code{glyph-name-alist} property of
116 @code{Accidental} as in the following example which uses quartertones
117 to typeset arrowed accidentals. Alternatively, it is possible to
118 define separate names for all notes with arrowed accidentals (see
119 @code{ly/makam.ly} for boilerplate code).
122 microAccs = #'((0 . "accidentals.natural")
123 (-1/2 . "accidentals.flat")
124 (1/2 . "accidentals.sharp")
126 (1 . "accidentals.doublesharp")
127 (-1 . "accidentals.flatflat")
129 (3/4 . "accidentals.sharp.arrowup")
130 (1/4 . "accidentals.sharp.arrowdown")
131 (-1/4 . "accidentals.flat.arrowup")
132 (-3/4 . "accidentals.flat.arrowdown"))
135 #(set-accidental-style 'modern)
136 \override Accidental #'glyph-name-alist = #microAccs
142 Straight flags (used in old scores of e.g. Bach, but also in different form in
143 modern scores of e.g. Stockhausen) are now implemented:
146 \override Stem #'flag = #modern-straight-flag
147 c,16 \acciaccatura {c'8} d4 d32
149 \override Stem #'flag = #old-straight-flag
150 c,16 \acciaccatura {c'8} d4 d32
155 @code{\bookpart} blocks may be used to split a book into several parts,
156 separated by a page break, in order to ease the page breaking, or to use
157 different @code{\paper} settings in different parts.
163 subtitle = "First part"
170 subtitle = "Second part"
178 Nested contexts of the same type are now allowed.
179 This deprecates @code{InnerStaffGroup} and @code{InnerChoirStaff}.
180 @lilypond[quote,relative=1]
191 Percent repeat counters can be shown at regular intervals using the
192 context property @code{repeatCountVisibility}.
193 @lilypond[quote,relative=1]
195 \set countPercentRepeats = ##t
196 \set repeatCountVisibility = #(every-nth-repeat-count-visible 2)
197 \repeat percent 6 { c4 d e f }
202 In addition to the already existing @code{showLastLength} property,
203 @code{showFirstLength} can now be set as well, rendering only the first
204 measures of a piece. Both properties may be set at the same time:
206 showFirstLength = R1*2
207 showLastLength = R1*3
208 \relative c' { c1 d e f g a b c }
212 The file extension for MIDI can be set using the command-line
213 program default @code{midi-extension}. For Windows, the default
214 extension has been changed to @code{.mid}.
217 Two variations on the default double repeat bar line are now available.
220 \set Score.doubleRepeatType = #":|.:"
233 Four automatic accidentals rules have been added: @code{neo-modern},
234 @code{neo-modern-cautionary}, @code{dodecaphonic} and @code{teaching}.
235 The following example illustrates @code{neo-modern} rule.
240 cis'8 fis, d'4 <a cis>8 f bis4 |
252 #(set-accidental-style 'neo-modern)
258 Flags can now be generated with Scheme-code using the @code{'flag}
259 @code{Stem} grob property. Existing scores will work without change.
266 #(define (inverted-flag stem-grob)
267 (let* ((dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u"))
268 (flag (retrieve-glyph-flag "" dir "" stem-grob))
269 (line-thickness (ly:staff-symbol-line-thickness stem-grob))
270 (stem-thickness (ly:grob-property stem-grob 'thickness))
271 (stem-width (* line-thickness stem-thickness))
272 (stroke-style (ly:grob-property stem-grob 'stroke-style))
273 (stencil (if (null? stroke-style) flag
274 (add-stroke-glyph flag stem-grob dir stroke-style "")))
275 (rotated-flag (ly:stencil-rotate-absolute stencil 180 0 0)))
276 (ly:stencil-translate rotated-flag (cons (- (/ stem-width 2)) 0))))
278 #(define-public (weight-flag stem-grob)
279 (let* ((log (- (ly:grob-property stem-grob 'duration-log) 2))
280 (is-up (eqv? (ly:grob-property stem-grob 'direction) UP))
281 (yext (if is-up (cons (* log -0.8) 0) (cons 0 (* log 0.8))))
282 (flag-stencil (make-filled-box-stencil '(-0.4 . 0.4) yext))
283 (stroke-style (ly:grob-property stem-grob 'stroke-style))
284 (stroke-stencil (if (equal? stroke-style "grace")
285 (make-line-stencil 0.2 -0.9 -0.4 0.9 -0.4)
287 (ly:stencil-add flag-stencil stroke-stencil)))
291 \override Stem #'flag = #weight-flag
294 \override Stem #'flag = #inverted-flag
300 Harp pedalling diagrams were added:
303 \markup { \harp-pedal #"^v-|vv-o^" }
307 Predefined, user-configurable, transposable fret diagrams
308 are now available in the @code{FretBoards} context:
310 \include "predefined-guitar-fretboards.ly"
328 The following syntax changes were made, in chronological order. In
329 addition, fret diagram properties have been moved to
330 @code{fret-diagram-details}, and the @code{#'style} property is
331 used to select solid/dashed lines instead of @code{#'dash-fraction}.
334 'break-align-symbol -> 'break-align-symbols
335 scripts.caesura -> scripts.caesura.curved
336 \setEasyHeads -> \easyHeadsOn
337 \easyHeadsOff (new command)
338 \fatText -> \textLengthOn
339 \emptyText -> \textLengthOff
340 \set hairpinToBarline -> \override Hairpin #'to-barline
341 \compressMusic -> \scaleDurations
342 \octave -> \octaveCheck
343 \arpeggioUp -> \arpeggioArrowUp
344 \arpeggioDown -> \arpeggioArrowDown
345 \arpeggioNeutral -> \arpeggioNormal
346 \setTextCresc -> \crescTextCresc
347 \setTextDecresc -> \dimTextDecresc
348 \setTextDecr -> \dimTextDecr
349 \setTextDim -> \dimTextDim
350 \setHairpinCresc -> \crescHairpin
351 \setHairpinDecresc -> \dimHairpin
352 \sustainUp -> \sustainOff
353 \sustainDown -> \sustainOn
354 \sostenutoDown -> \sostenutoOn
355 \sostenutoUp -> \sostenutoOff
356 'infinite-spacing-height -> 'extra-spacing-height
357 #(set-octavation oct) -> \ottava #oct
358 \put-adjacent markup axis dir markup -> \put-adjacent axis dir markup markup
359 \pointAndClickOn (new command)
360 \pointAndClickOff (new command)
361 \center-align -> \center-column
362 \hcenter -> \center-align
363 printallheaders -> print-all-headers
364 \bigger -> \larger (already existing command)
365 systemSeparatorMarkup -> system-separator-markup
369 Moreover, some files in the @code{ly/} directory have been renamed;
370 the *-init.ly filenames are now only used for files that are automatically
371 included, while such files as @code{makam-init.ly} or @code{gregorian-init.ly}
372 have been renamed to @code{makam.ly} or @code{gregorian.ly}.
375 The ``tex'' and ``texstr'' backends have been removed. Font are now
376 accessed via the fontconfig library; the Pango library is used to display
380 Metronome marks can now also contain a textual description. The
381 duration and count (if given) are shown in parentheses after the text.
388 \tempo "Andante" 4 = 120
401 In figured bass you can now also use a backslash through a number to
402 indicate a raised 6th step.
405 \new FiguredBass \figuremode { < 6\\ 5\\ > < 6/ > }
409 Arpeggios may now use ``parenthesis'' style brackets:
411 @lilypond[quote,relative=1]
412 \override Arpeggio #'stencil = #ly:arpeggio::brew-chord-slur
414 % Note: does not work for cross-staff arpeggios.
415 \override Arpeggio #'X-extent = #ly:grob::stencil-width
416 <c g' c>2\arpeggio ~ c
420 Single-system scores are now naturally spaced instead of being
421 stretched to fill the line width. This can be changed by setting
422 @code{ragged-right = ##f}.
425 Enclosing text within boxes with rounded corners is now possible,
426 using the @code{\rounded-box} markup command.
429 @command{lilypond-book} can run any program instead of @command{latex}
430 to guess the line width, thanks to @code{--latex-program} command line
434 Underlining is now possible with the @code{\underline} markup command.
437 It is now possible to specify, using the @code{page-count} variable in
438 the paper block, the number of pages that will be used.
441 A new page breaking function, @code{ly:minimal-breaking}, is dedicated
442 to books with many pages or a lot of text.
445 A table of contents is included using @code{\markuplines \table-of-contents}.
446 Elements are added to it using the @code{\tocItem} command.
449 Text spreading over several pages is entered using the
450 @code{\markuplines} keyword. Builtin markup list commands, such as
451 @code{\justified-lines} or @code{\wordwrap-lines} may be used, and new
452 ones created using the @code{define-markup-list-command} Scheme macro.
455 Particular points of a book may be marked with the @code{\label}
456 command. Then, the page where these points are placed can be
457 referred to using the @code{\page-ref} markup command.
460 Page breaking and page turning commands (@code{\pageBreak},
461 @code{\noPageBreak}, etc.) can be used at top-level, between scores and
465 The following options are now changed as a @code{-d} sub-option:
466 @code{--backend}, @code{--safe}, @code{--preview} and
467 @code{--no-pages} (which became @code{-dno-print-pages}). The @code{-b}
468 option does not exist any more.
471 Improved testing procedures now catch changes in CPU and memory
472 performance, page layout, MIDI results and warnings. This helps to
473 reduce the number of regression errors during development, resulting
474 in more stable releases.
476 See @uref{INSTALL.html#Testing-LilyPond} for more information.
479 Nested properties, such as @code{'details} in @code{Slur}, can be
480 reverted as well. The syntax for this is
483 \revert Slur #'(details closeness-factor)
487 All line spanners are more flexible now in the configuration of
488 their end points. This includes glissando, voice followers, text
489 crescendos and other text spanners. The old syntax for setting
490 text on line spanners is no longer valid.
494 \override Glissando #'(bound-details right text) = \markup { \center-align \bold down }
495 \override Glissando #'(bound-details right Y) = #-4
496 \override Glissando #'(bound-details right padding) = #0.0
497 \override Glissando #'(bound-details left arrow) = ##t
498 \override Glissando #'(bound-details left padding) = #3.0
499 \override Glissando #'style = #'trill
500 \override Glissando #'springs-and-rods = #ly:spanner::set-spacing-rods
501 \override Glissando #'minimum-length = #12
507 This feature was sponsored by Trevor Bača.
510 The environment variable @code{LILYPONDPREFIX} has been renamed
511 @code{LILYPOND_DATADIR}.
514 Notes or rests, such as a typical end note, that fill an entire
515 measure are preceded by some more space.
517 @lilypond[quote,relative=1]
526 All @code{\score}s in a lilypond-book fragment are now inserted
527 into the document. Also, toplevel markups don't result in an entire
531 Alterations (such as a sharp or flat) may now be arbitrary
532 fractions. This allows some forms of microtonal music. For example,
533 Turkish makam music uses 1/9th tone alterations.
535 @lilypondfile[quote]{makam-example.ly}
538 Tie directions may be set with @code{^~} and @code{_~}.
541 Tablature now supports harmonics and slides:
543 @lilypond[quote,relative=1]
545 <c g'\harmonic>4 d\2\glissando e2\2
549 This feature was sponsored by Mike Amundsen
552 Horizontal spacing now follows object outlines more accurately.
553 This allows tighter horizontal spacing.
563 Objects that belong outside of the staff are now positioned
564 automatically to avoid collisions.
566 @lilypond[quote,relative=1]
568 \once \override TextScript #'self-alignment-X = #CENTER
569 a,4^"this doesn't collide with the c"
570 b4^"this goes above the previous markup"
571 a8_"this goes below the dynamic"
576 Staves are spaced vertically using a skyline algorithm. This helps
577 prevent uneven vertical spacing.
579 @lilypond[quote,ragged-right]
581 %% todo: fix 'landscape PDF.
582 #(set-default-paper-size "a6")
591 a'4 b' c'' d'' \break
592 \repeat unfold 2 { a'4 b' c'' d''}
604 For older news, go to
605 @uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS.html},
606 or @uref{../,go back} to the Documentation index.