NEWS

# New features in 2.12 since 2.10

This document is also available in PDF. It is part of the LilyPond Documentation.

- Fret diagrams can now have variable string thickness:

- A new fret diagram orientation, opposing-landscape, is available:

- Unbeamed 128th notes are now supported:

- Extending LilyPond’s existing support for microtones, there are now arrowed accidentals for the notation of microtonal alterations. To use them, redefine the `glyph-name-alist` property of `Accidental` as in the following example which uses quartertones to typeset arrowed accidentals. Alternatively, it is possible to define separate names for all notes with arrowed accidentals (see `ly/makam.ly` for boilerplate code).

- Straight flags (used in old scores of e.g. Bach, but also in different form in modern scores of e.g. Stockhausen) are now implemented:

- `\bookpart` blocks may be used to split a book into several parts, separated by a page break, in order to ease the page breaking, or to use different `\paper` settings in different parts.

  >     \bookpart {
  >       \header {
  >         title = "Book title"
  >         subtitle = "First part"
  >       }
  >       \score { … }
  >       …
  >     }
  >     \bookpart {
  >       \header {
  >         subtitle = "Second part"
  >       }
  >       \score { … }
  >       …
  >     }

- Nested contexts of the same type are now allowed. This deprecates `InnerStaffGroup` and `InnerChoirStaff`.

- Percent repeat counters can be shown at regular intervals using the context property `repeatCountVisibility`.

- In addition to the already existing `showLastLength` property, `showFirstLength` can now be set as well, rendering only the first measures of a piece. Both properties may be set at the same time:

- The file extension for MIDI can be set using the command-line program default `midi-extension`. For Windows, the default extension has been changed to `.mid`.
- Two variations on the default double repeat bar line are now available.

- Four automatic accidentals rules have been added: `neo-modern`, `neo-modern-cautionary`, `dodecaphonic` and `teaching`. The following example illustrates `neo-modern` rule.

- Flags can now be generated with Scheme-code using the `'flag` `Stem` grob property. Existing scores will work without change.

- Harp pedalling diagrams were added:

- Predefined, user-configurable, transposable fret diagrams are now available in the `FretBoards` context:

- The following syntax changes were made, in chronological order. In addition, fret diagram properties have been moved to `fret-diagram-details`, and the `#'style` property is used to select solid/dashed lines instead of `#'dash-fraction`.

  >     'break-align-symbol -> 'break-align-symbols
  >     scripts.caesura -> scripts.caesura.curved
  >     \setEasyHeads -> \easyHeadsOn
  >     \easyHeadsOff (new command)
  >     \fatText -> \textLengthOn
  >     \emptyText -> \textLengthOff
  >     \set hairpinToBarline -> \override Hairpin #'to-barline
  >     \compressMusic -> \scaleDurations
  >     \octave -> \octaveCheck
  >     \arpeggioUp -> \arpeggioArrowUp
  >     \arpeggioDown -> \arpeggioArrowDown
  >     \arpeggioNeutral -> \arpeggioNormal
  >     \setTextCresc -> \crescTextCresc
  >     \setTextDecresc -> \dimTextDecresc
  >     \setTextDecr -> \dimTextDecr
  >     \setTextDim -> \dimTextDim
  >     \setHairpinCresc -> \crescHairpin
  >     \setHairpinDecresc -> \dimHairpin
  >     \sustainUp -> \sustainOff
  >     \sustainDown -> \sustainOn
  >     \sostenutoDown -> \sostenutoOn
  >     \sostenutoUp -> \sostenutoOff
  >     'infinite-spacing-height -> 'extra-spacing-height
  >     #(set-octavation oct) -> \ottava #oct
  >     \put-adjacent markup axis dir markup -> \put-adjacent axis dir markup markup
  >     \pointAndClickOn (new command)
  >     \pointAndClickOff (new command)
  >     \center-align -> \center-column
  >     \hcenter -> \center-align
  >     printallheaders -> print-all-headers
  >     \bigger -> \larger (already existing command)
  >     systemSeparatorMarkup -> system-separator-markup

  Moreover, some files in the `ly/` directory have been renamed; the *-init.ly filenames are now only used for files that are automatically included, while such files as `makam-init.ly` or `gregorian-init.ly` have been renamed to `makam.ly` or `gregorian.ly`.

- The “tex” and “texstr” backends have been removed. Font are now accessed via the fontconfig library; the Pango library is used to display text strings.
- Metronome marks can now also contain a textual description. The duration and count (if given) are shown in parentheses after the text.

- In figured bass you can now also use a backslash through a number to indicate a raised 6th step.

- Arpeggios may now use “parenthesis” style brackets:

- Single-system scores are now naturally spaced instead of being stretched to fill the line width. This can be changed by setting `ragged-right = ##f`.
- Enclosing text within boxes with rounded corners is now possible, using the `\rounded-box` markup command.
- `lilypond-book` can run any program instead of `latex` to guess the line width, thanks to `--latex-program` command line option.
- Underlining is now possible with the `\underline` markup command.
- It is now possible to specify, using the `page-count` variable in the paper block, the number of pages that will be used.
- A new page breaking function, `ly:minimal-breaking`, is dedicated to books with many pages or a lot of text.
- A table of contents is included using `\markuplines \table-of-contents`. Elements are added to it using the `\tocItem` command.
- Text spreading over several pages is entered using the `\markuplines` keyword. Builtin markup list commands, such as `\justified-lines` or `\wordwrap-lines` may be used, and new ones created using the `define-markup-list-command` Scheme macro.
- Particular points of a book may be marked with the `\label` command. Then, the page where these points are placed can be referred to using the `\page-ref` markup command.
- Page breaking and page turning commands (`\pageBreak`, `\noPageBreak`, etc.) can be used at top-level, between scores and top-level markups.
- The following options are now changed as a `-d` sub-option: `--backend`, `--safe`, `--preview` and `--no-pages` (which became `-dno-print-pages`). The `-b` option does not exist any more.
- Improved testing procedures now catch changes in CPU and memory performance, page layout, MIDI results and warnings. This helps to reduce the number of regression errors during development, resulting in more stable releases.

  See INSTALL.html#Testing-LilyPond for more information.

- Nested properties, such as `'details` in `Slur`, can be reverted as well. The syntax for this is

  >     \revert Slur #'(details closeness-factor)

- All line spanners are more flexible now in the configuration of their end points. This includes glissando, voice followers, text crescendos and other text spanners. The old syntax for setting text on line spanners is no longer valid.

  This feature was sponsored by Trevor Bača.

- The environment variable `LILYPONDPREFIX` has been renamed `LILYPOND_DATADIR`.
- Notes or rests, such as a typical end note, that fill an entire measure are preceded by some more space.

- All `\score`s in a lilypond-book fragment are now inserted into the document. Also, toplevel markups don’t result in an entire page.
- Alterations (such as a sharp or flat) may now be arbitrary fractions. This allows some forms of microtonal music. For example, Turkish makam music uses 1/9th tone alterations.

- Tie directions may be set with `^~` and `_~`.
- Tablature now supports harmonics and slides:

  This feature was sponsored by Mike Amundsen

- Horizontal spacing now follows object outlines more accurately. This allows tighter horizontal spacing.

- Objects that belong outside of the staff are now positioned automatically to avoid collisions.

- Staves are spaced vertically using a skyline algorithm. This helps prevent uneven vertical spacing.

For older news, go to http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS.html, or go back to the Documentation index.

Other languages: español.

#### New features in 2.12 since 2.10