@finalout
@node Top
-@top New features in 2.13 since 2.12
+@top New features in 2.20 since 2.18
@allowcodebreaks false
-@itemize @bullet
+@itemize
@ignore
* only show user-visible changes.
@end ignore
-
-@item
-Dots can be added to the table of contents items using:
-@example
-\paper @{
- tocItemMarkup = \tocItemWithDotsMarkup
-@}
-@end example
-
-@item
-New markup commands @code{\pattern} and @code{\fill-with-pattern} are available.
-@lilypond
-\markup \column {
- \pattern #3 #Y #0.3 \flat
- \null
- \pattern #7 #X #2 \flat
- \override #'(line-width . 40) \fill-with-pattern #1 #CENTER . left right
-}
-@end lilypond
-
-@item
-A minimal composer toolkit of modal transformations is provided.
-A motif may be @notation{transposed}, @notation{inverted} and/or
-converted to its @notation{retrograde} within any scale.
-
-@lilypond
-pentatonicScale = \relative a' { a c d f g }
-motif = \relative c'' { d8 c f,4 <a f'> <a f'> }
-
-\new Staff <<
- {
- \partial 4
- \pentatonicScale
- \motif
- \modalTranspose c a, \pentatonicScale \motif
- \modalInversion d'' a' \pentatonicScale \motif
- \retrograde \motif
- }
- {
- \partial 4
- s4^"pentatonic scale"
- s1
- s1^"motif"
- s1^"transposition"
- s1^"inversion"
- s1^"retrograde"
- }
->>
-@end lilypond
-
-@item
-Black mensural notation has minimal support.
-
-@item
-Support for obliqua shapes within white mensural ligatures enhanced.
-@lilypond
-\context MensuralStaff
-{
- \clef "petrucci-c3"
- \[
- \override NoteHead #'style = #'semipetrucci
- c'\maxima
- \override NoteHead #'style = #'blackpetrucci
- a\breve
- \revert NoteHead #'style
- \override NoteHead #'ligature-flexa = ##t
- \override NoteHead #'flexa-width = #3
- g
- g'
- \override NoteHead #'flexa-width = #5
- c'
- d'
- \revert NoteHead #'style
- c'\longa
- \]
-}
-@end lilypond
-
@item
-Compound time signatures are now supported by the @code{\compoundMeter} command,
-which can be used instead of @code{\time}:
-@lilypond
-\relative c'' {
- \compoundMeter #'(3 1 8)
- c8 c c c
- \compoundMeter #'((2 8) (5 8))
- c8 c c c c c c
- \compoundMeter #'((1 2 3 8) (1 4) (3 8))
- c8 c c c c c c4 c8 c c
+A new flexible template suitable for a range of choral music, is now
+provided. This may be used to create simple choral music, with or
+without piano accompaniment, in two or four staves. Unlike other
+templates, this template is @q{built-in}, which means it does not
+need to be copied and edited: instead it is simply @code{\include}'d
+in the input file. For details, see @rlearning{Built-in templates}.
+
+@item
+The positioning of tuplet numbers for kneed beams has been significantly
+improved. Previously, tuplet numbers were placed according to the
+position of the tuplet bracket, even if it was not printed. This could
+lead to stranded tuplet numbers. Now they are now positioned
+closer to the kneed-beam when an appropriate beam segment exists for its
+placement and when the the bracket is not drawn.
+
+Collision detection is also added, offsetting horizontally if too close
+to an adjoining note column but preserving the number's vertical
+distance from the kneed beam. If the number itself is too large to
+fit in the available space the original, bracket-based, positioning
+system is used instead; and in the event of a collision (e.g. with an
+accidental) the tuplet number is moved vertically away instead.
+
+@lilypond[verbatim,fragment,quote,relative=1]
+\time 3/4
+\override Beam.auto-knee-gap = 3
+\tuplet 3/2 4 {
+ g8 c'' e,
+ c'8 g,, e''
+ g,,8 e''' c,,
}
@end lilypond
-@item
-Lyrics above a staff must have their @code{staff-affinity} set to
-@code{DOWN} or must have their @code{alignAboveContext} property
-set in order to be properly aligned. For more information, see
-@ruser{Placing lyrics vertically}.
-
-@item
-@code{stringTunings} property values have changed from a list of
-semitones above middle C to a list of LilyPond pitch values.
-convert-ly will handle the change automatically where the value
-of @code{stringTunings} is set to a Scheme constant value.
-
-New commands @code{makeStringTuning} and @code{contextStringTuning}
-allow the creation of string tunings in the form of a Lilypond
-chord construct.
-
-@item
-By using @code{\cueDuringWithClef}, cue notes can now also have their own
-clef, which is correctly reset at the end of the cue notes. At the begin
-of each line, the standard clef is still displayed, but the cue clef is
-shown after the time/key signature in smaller size.
-@lilypond
-vI = \relative c'' { \clef "treble" \repeat unfold 40 g4 }
-\addQuote vIQuote { \vI }
-
-Solo = \relative c {
- \clef "bass"
- \cueDuringWithClef #"vIQuote" #DOWN #"treble" { R1 } |
- c4 \cueDuringWithClef #"vIQuote" #DOWN #"treble" {
- r4 r2 |
- r4
- } c4 c2 |
- \cueDuringWithClef #"vIQuote" #DOWN "soprano" { R1*2 \break R1 } |
- c1
-}
+@noindent
+The original kneed-beam tuplet behavior is still available through an
+@code{\override} via a new, @code{knee-to-beam} property.
-\score {
- <<
- \new Staff \new Voice \Solo
- >>
+@lilypond[verbatim,fragment,quote,relative=1]
+\time 3/4
+\override Beam.auto-knee-gap = 3
+\override TupletNumber.knee-to-beam = ##f
+\tuplet 3/2 4 {
+ g8 c'' e,
+ c'8 g,, e''
+ g,,8 e''' c,,
}
@end lilypond
-
-@item
-Note names can be selected with a new
-@code{@bs{}language "italiano"} command, which
-can be used in safe mode. The old
-@code{@bs{}include "italiano.ly"} syntax is
-still supported for now, but will be deprecated
-in the future.
-
-@item
-autobeaming is now disabled by @code{\cadenzaOn} and enabled by
-@code{\cadenzaOff}. Beaming in cadenzas should be indicated manually.
-Also, if a cadenza is used in a piece with autobeaming disabled, it
-will need to be disabled again after the cadenza.
-
@item
-The user is now able to specify the name of the predefined fretboard
-table. This allows the use of multiple tables, with switching between them
-based on user input.
+@code{\lyricsto} and @code{\addLyrics} have been @q{harmonized}. Both
+now accept the same kind of delimited argument list that @code{\lyrics}
+and @code{\chords} accept. Backward compatibility has been added so
+music identifiers (i.e. @code{\mus}) are permitted as arguments. A
+@code{convert-ly} rule has been added that removes redundant uses of
+@code{\lyricmode} and rearranges combinations with context starters such
+that @code{\lyricsto} in general is applied last (i.e. like
+@code{\lyricmode} would be).
@item
-The part-combiner's decision to combine/not combine notes can now be customized
-@lilypond[quote,relative=2]
-\partcombine
-\relative c' { c2 \partcombineApart c | \partcombineChordsOnce e' e }
-\relative c' { c2 \partcombineApart c | c c }
-@end lilypond
+Scheme functions and identifiers can now be used as output definitions.
@item
-Tablature staves show fret numbers only by default. To get the
-former style, @code{\tabFullNotation} is provided.
+Scheme expressions can now be used as chord constituents.
@item
-Funk-style and Walker-style shape notes have been added.
+Improved visual spacing of small and regular @q{MI} Funk and Walker
+noteheads so they are now the same width as other shaped notes in
+their respective sets. @code{SOL} noteheads are also now visually
+improved when used with both the normal Aiken and Sacred Harp heads, as
+well as with the thin variants.
@item
-Rests will no longer keep a staff alive if @code{\RemoveEmptyStaffContext}
-is used.
+@code{LeftEdge} now has a definable @code{Y-extent} (i.e.vertical). See
+@rinternals{LeftEdge}.
@item
-New option @code{-dinclude-settings=INCLUDEFILE.ly}, which causes lilypond
-to include the given file before the score is processed. This allows the
-user to change global settings without the need to change the score itself.
-That way, several different editions/version (e.g. different page sizes)
-can be generated from a file without having to modify the score for each
-version.
+Added a new @code{make-path-stencil} function that supports all
+@code{path} commands both relative and absolute:
-@item
-The autobeaming settings syntax has been changed. beatLength,
-beatGrouping, beamSettings, and measureGrouping have all been eliminated.
-Autobeaming is now controlled by baseMoment, beatStructure, and
-beamExceptions. Default settings for each of these properties can be
-stored for any time signature in time-signature-settings, so that
-when the time signature is changed, the autobeaming will automatically
-change. The new syntax should be much easier and require fewer
-overrides.
+@code{lineto}, @code{rlineto}, @code{curveto}, @code{rcurveto},
+@code{moveto}, @code{rmoveto}, @code{closepath}. The function also
+supports @q{single-letter} syntax used in standard SVG path commands:
-@item
-The SVG backend has optional support for
-@uref{http://www.w3.org/Submission/WOFF, WOFF fonts}. Using the Scheme
-option @code{-d svg-woff} together with the SVG backend selection
-@code{-d backend=svg}, produces SVG output with CSS WOFF font selection.
+@code{L}, @code{l}, @code{C}, @code{c}, @code{M}, @code{m}, @code{Z} and
+@code{z}. The new command is also backward-compatible with the original
+@code{make-connected-path-stencil} function. Also see
+@file{scm/stencil.scm}.
@item
-The LilyPond G clef has been rotated 1.5 degrees clockwise for improved
-balance. The old and new versions can be compared by looking at the
-documentation:
-@uref{http://lilypond.org/doc/v2.12/Documentation/user/lilypond/The-Feta-font.html#Clef-glyphs,
-old version},
-@uref{http://lilypond.org/doc/v2.13/Documentation/notation/the-feta-font.html#Clef-glyphs,
-new version}.
+Context properties named in the @samp{alternativeRestores} property are
+restored to their value at the start of the @emph{first} alternative in
+all subsequent alternatives.
+Currently the default set restores @q{current meter};
-@item
-Text crescendo spanners can now be added directly using @code{\cresc},
-@code{\dim} and @code{\decresc}.
-@lilypond[quote,relative=2]
-c4\cresc c c c\f |
-c4\dim c c c\!
+@lilypond[verbatim,fragment,quote,relative=2]
+\time 3/4
+\repeat volta 2 { c2 e4 | }
+\alternative {
+ { \time 4/4 f2 d | }
+ { f2 d4 | }
+}
+g2. |
@end lilypond
+@noindent
+@q{measure position};
-@item
-The documented syntax of @samp{lilypond} environments in the @LaTeX{}
-mode of @command{lilypond-book} has been changed to conform with
-standard @LaTeX{} syntax: options now come after the environment name:
-@example
-\begin@{lilypond@}[@var{options}] @dots{}
-@end example
-
-The previous syntax with options after @samp{\begin} is still accepted
-by @command{lilypond-book} but deprecated. Something like
-@example
-sed -i '/begin\[/s/begin\(\[[^]]*]\)\(@{lilypond@}\)/begin\2\1/'
-@end example
-
-might do the trick for conversion.
-
-@item
-Aesthetics of shape note heads have been enhanced. Variable line thicknesses
-have been implemented. All note widths have been made consistent.
-Minor shape note commands that use the relative major key for scale steps
-have been added.
-
-@item
-A variant of the Segno sign is provided:
-@lilypond[quote,relative=2]
-c4 d e f \bar "S"
-g4 f e d
+@lilypond[verbatim,fragment,quote,relative=2]
+\time 3/4
+\repeat volta 2 { c2 e4 | }
+\alternative {
+ { \time 4/4
+ \set Timing.measurePosition = #(ly:make-moment -1/2)
+ f2 | }
+ { f2 d4 | }
+}
+g2. |
@end lilypond
-@item
-Context modifications (@code{\with} blocks) can be stored in variables and
-inserted into contexts or other @code{\with} blocks:
-@lilypond[quote,verbatim]
-coloredheads = \with { \override NoteHead #'color = #red }
-noclef = \with { \remove "Clef_engraver" }
-\score {
- \new Staff {
- \new Voice \with { \coloredheads } \relative c' { c4 e g c }
+@noindent
+and @q{chord changes};
+
+@lilypond[verbatim,fragment,quote]
+<<
+ \new ChordNames {
+ \set chordChanges = ##t
+ \chordmode { c1:m d:m c:m d:m }
}
- \layout {
- \context {
- \Staff
- \noclef
+ \new Staff {
+ \repeat volta 2 { \chordmode { c1:m } }
+ \alternative {
+ { \chordmode { d:m } }
+ { \chordmode { c:m } }
}
- }
+ \chordmode { d:m }
}
+>>
@end lilypond
@item
-A half-open articulation was added:
-@lilypond[quote,relative=2]
-c4\halfopen
-@end lilypond
-This is sometimes used to indicate half-open hi-hats.
-
-@item
-The Unicode Bidirectional Algorithm is now fully supported for
-single-line markup due to enhanced integration with Pango.
+Improved MIDI output for breathe marks. After tied notes, breaths take
+time @emph{only} from the last note of the tie; e.g.
+@code{@{ c4~ c8 \breathe @}} performs as @code{@{ c4~ c16 r @}} instead
+of @code{@{ c4 r8 @}}. This is more consistent with articulations and
+how humans interpret breaths after ties. It now also makes it easier to
+align simultaneous breathe marks over multiple parts, all with different
+note lengths.
@item
-LilyPond is now licensed under the GNU GPL v3+.
+A new note head style for Tabulature has been added;
+@code{TabNoteHead.style = #'slash}.
@item
-In tablature, frets can be indicated with labels other than numbers:
+Four new Clefs have been added. @emph{Double G}, @emph{Tenor G},
+@emph{Varpercussion} and @emph{varC}.
+@lilypond[verbatim,quote,fragment]
+ \override Staff.Clef.full-size-change = ##t
-@lilypond[verbatim,quote,relative=1]
-\new TabStaff
-\with {
- stringTunings = #`(,(ly:make-pitch 1 3 NATURAL)
- ,(ly:make-pitch 1 1 NATURAL)
- ,(ly:make-pitch 0 5 NATURAL)
- ,(ly:make-pitch 0 3 NATURAL)
- ,(ly:make-pitch 0 1 NATURAL)
- ,(ly:make-pitch -1 5 NATURAL))
- tablatureFormat = #fret-letter-tablature-format
-}
-\new TabVoice {
- \set fretLabels = #`(,(markup #:with-color red "a")
- "b"
- ,(markup #:italic #:smaller "c"))
- <f d>4. <bes>8 <g e>4
-}
-@end lilypond
+ \clef "GG" c c c c
+ \clef "tenorG" c c c c
+ \clef "varC" c c c c
+ \clef "varpercussion" c c c c
-@item
-Layout objects can be printed over a white background, which whites-out objects
-in lower layers which lie beneath:
+ \break
+ \override Staff.Clef.full-size-change = ##f
-@lilypond[verbatim,quote,relative=1]
-\time 3/4
-\override Staff.StaffSymbol #'layer = #4
-\once \override Tie #'layer = #2
-b'2.~
-\once \override Staff.TimeSignature #'whiteout = ##t
-\once \override Staff.TimeSignature #'layer = #3
-\time 5/4
-b4
+ \clef "GG" c c c c
+ \clef "tenorG" c c c c
+ \clef "varC" c c c c
+ \clef "varpercussion" c c c c
@end lilypond
@item
-Chords can be repeated using the @code{q} shortcut:
+Isolated durations in music sequences now stand for unpitched
+notes. This may be useful for specifying rhythms to music or
+scheme functions. When encountered in the final score, the
+pitches are provided by the preceding note or chord. Here are two
+examples where this makes for readable input:
-@lilypond[verbatim,quote,relative=2]
-<c e g>8.-^ q16 q4-^
+@lilypond[verbatim,quote]
+\new DrumStaff \with { \override StaffSymbol.line-count = 1 }
+\drummode {
+ \time 3/4
+ tambourine 8 \tuplet 3/2 { 16 16 16 }
+ 8 \tuplet 3/2 { 16 16 16 } 8 8 |
+}
@end lilypond
-@item
-With two-sided mode, margins for odd and even pages can be set using
-@code{inner-margin} and @code{outer-margin}:
-
-@example
-\paper @{
- two-sided = ##t
- inner-margin = 10 \mm
- outer-margin = 20 \mm
-@}
-@end example
-
-@item
-Paper margin defaults, as specified in @file{ly/paper@/-defaults-init.ly}, apply
-to the default paper size (a4) and are automatically scaled according to the
-paper size chosen.
-
-@item
-All combinations of @code{left-margin}, @code{right-margin} and
-@code{line-width} work now. There is no more need to set @code{line-width}
-manually unless you explicitly want to.
-
-@item
-Support for using an alternative music font, such as Gonville, is now
-added.
-
-@item
-In addition to the existing @code{\hspace} markup command,
-a new @code{\vspace} command has been added to provide an easy
-and flexible way to add vertical space in markups.
-
-@item
-The direction of manual beams can be set with @code{^[} and @code{_[}.
-
-@item
-A version of the breve note head has been added with two vertical lines on each side.
-@lilypond[quote,relative=2]
-\time 4/2
-\override Staff.NoteHead #'style = #'altdefault
-c\breve | b\breve
+@lilypond[verbatim,quote]
+\new Staff { r16 c'16 ~ 8 ~ 4 ~ 2 | }
@end lilypond
@item
-Instrument names and vocal names now take into account the extent of
-system start delimiters in other staves for their positioning,
-resulting in improved default alignment for left-, center- and
-right-aligned names.
-@lilypond[quote,indent=18\mm]
-<<
- \new StaffGroup <<
- \new GrandStaff <<
- \new Staff {
- \set Staff.instrumentName = #"Piccolo"
- c''1
- }
- \new Staff {
- \set Staff.instrumentName = #"Flute"
- c''1
- }
- >>
- \new Staff {
- \set Staff.instrumentName = #"Bassoon"
- \clef tenor
- c'1
- }
- >>
- \new PianoStaff <<
- \set PianoStaff.instrumentName = #"Piano"
- \context Staff = "up" {
- c'1
- }
- \context Staff = "down" {
- \clef bass
- c1
- }
- >>
->>
-@end lilypond
+Beaming exceptions can now be constructed using the
+@code{\beamExceptions} scheme function. One can now write
-@item
-Braces in markup can now be selected by point size using the markup commands
-@code{\left-brace} and @code{\right-brace}.
-@lilypond[quote]
-\markup {
- \left-brace #35
- \hspace #2
- \right-brace #45
-}
+@lilypond[verbatim,quote,relative=1]
+\time #'(2 1) 3/16
+\set Timing.beamExceptions =
+ \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
+c16 c c |
+\repeat unfold 6 { c32 } |
@end lilypond
-@item
-Intermediate .ps files which are created by LilyPond
-during compilation are now deleted by default. To keep them,
-add the following line to your input files:
+@noindent
+with multiple exceptions separated with @code{|} bar checks
+(writing the exception pattern without pitches is convenient but
+not mandatory). Previously, setting the beam exceptions would
+have required writing
+
@example
-#(ly:set-option 'delete-intermediate-files #f)
+\set Timing.beamExceptions =
+#'( ;start of alist
+ (end . ;entry for end of beams
+ ( ;start of alist of end points
+ ((1 . 32) . (2 2 2)) ;rule for 1/32 beams -- end each 1/16
+ )))
@end example
@item
-Dashed and dotted slurs, phrasing slurs, and ties
-have been made variable thickness, and
-partially dashed slurs are now available:
-@lilypond[quote,relative=2]
-\slurDashed
-c4( d e f) |
-\slurDotted
-g4( f e d) |
-\slurHalfDashed
-c4( d e f)
-@end lilypond
+The most common articulations are now reflected in MIDI output.
+Accent and marcato make notes louder; staccato, staccatissimo and
+portato make them shorter. Breath marks shorten the previous
+note.
-@item
-An eyeglasses markup was added, indicating strongly to look at the
-conductor for instructions:
-@lilypond[quote,relative=2]
-\mark \markup { \eyeglasses }
-c4_\markup { \eyeglasses }
-@end lilypond
+This behavior is customizable through the @code{midiLength} and
+@code{midiExtraVelocity} properties on @code{ArticulationEvent}.
+See @file{script-init.ly} for examples.
@item
-A snap-pizzicato (also known as Bartok-pizzicato) articulation was added:
-@lilypond[quote,relative=2]
-c4\snappizzicato
-@end lilypond
+The PostScript functionality of stroke adjustment is no longer
+applied automatically but left to the discretion of the PostScript
+device (by default, Ghostscript uses it for resolutions up to
+150dpi when generating raster images). When it is enabled, a more
+complex drawing algorithm designed to benefit from stroke
+adjustment is employed mostly for stems and bar lines.
-@item
-Tuplet number formatting functions are now available to print other fractions
-and to add notes to the number or fraction:
-@lilypond[quote,relative=2]
-\once \override TupletNumber #'text =
- #(tuplet-number::non-default-tuplet-denominator-text 7)
-\times 2/3 { c4. c4. c4. c4. }
-
-\once \override TupletNumber #'text =
- #(tuplet-number::non-default-tuplet-fraction-text 12 7)
-\times 2/3 { c4. c4. c4. c4. }
-\once \override TupletNumber #'text =
- #(tuplet-number::append-note-wrapper
- (tuplet-number::non-default-tuplet-fraction-text 12 7) "8")
-\times 2/3 { c4. c4. c4. c4. }
-
-\once \override TupletNumber #'text =
- #(tuplet-number::append-note-wrapper tuplet-number::calc-denominator-text "4")
-\times 2/3 { c8 c8 c8 c8 c8 c8 }
-\once \override TupletNumber #'text =
- #(tuplet-number::append-note-wrapper tuplet-number::calc-fraction-text "4")
-\times 2/3 { c8 c8 c8 c8 c8 c8 }
-
-\once \override TupletNumber #'text =
- #(tuplet-number::fraction-with-notes "4." "8")
-\times 2/3 { c4. c4. c4. c4. }
-\once \override TupletNumber #'text =
- #(tuplet-number::non-default-fraction-with-notes 12 "8" 4 "4")
-\times 2/3 { c4. c4. c4. c4. }
-@end lilypond
-
-@item
-FretBoards now have a chordChanges property to keep repeated FretBoard objects
-from being typeset.
-
-@item
-The vertical spacing engine has been drastically changed, making
-it more flexible and easier to control.
-The spacing between staves within a system can now change
-to better use the space on the page.
-User-defined contexts may participate in this flexible spacing,
-depending on how their @code{staff-affinity} is defined.
-Some page formatting variables (@code{page-top-space},
-@code{between-system-space -padding}, and
-@code{before- between- after-title-space}) have been replaced
-by flexible vertical dimensions.
+Stroke adjustment can be forced by specifying the command line
+option @samp{-dstrokeadjust} to LilyPond. When generating
+@code{PDF} files, this will usually result in markedly better
+looking @code{PDF} previews but significantly larger file size.
+Print quality at high resolutions will be unaffected.
@end itemize
-
-
@ifhtml
For older news, go to
-@uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html},
-@uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS.html},
+@uref{http://lilypond.org/doc/v2.18/Documentation/changes/},
+@uref{http://lilypond.org/doc/v2.16/Documentation/changes/},
or @uref{../,go back} to the Documentation index.