@setfilename lilypond-changes.info
@settitle LilyPond Changes
+@include macros.itexi
+
@ifhtml
@macro inputfileref{DIR,NAME}
@uref{../../\DIR\/collated-files.html#\NAME\,@file{\DIR\/\NAME\}}@c
@node Top
@top New features in 2.13 since 2.12
-@ifhtml
-This document is also available in @uref{changes.pdf,PDF}. It is part of
-the @uref{lilypond/manuals.html,LilyPond Documentation}.
-@end ifhtml
-
@allowcodebreaks false
@itemize @bullet
@end ignore
+@item
+The Articulate script by Peter Chubb, which is GPLv3 licensed, is now
+a part of the distribution. It allows easy generation of improved
+MIDI files that perform non-legato by default, legato slurs, staccato,
+tempo markings, trills, etc.
+
+@example
+\include "articulate.ly"
+\articulate <<
+ all the rest of the score...
+>>
+@end example
+
+@item
+Single beat repeats for sixteenth or shorter notes and beat repeats for
+measures containing notes of varying durations are now supported.
+
+@lilypond[fragment,relative=2]
+\repeat percent 2 { c16 d }
+\repeat percent 2 { c32 e }
+\repeat percent 2 { c64 f }
+\repeat percent 2 { c128 g' }
+@end lilypond
+
+
+@item
+Lilypond now engraves woodwind fingering charts.
+
+@lilypond
+\relative c' {
+ \textLengthOn
+ des1^\markup {
+ \woodwind-diagram #'bassoon #'((lh . (thumb-cis))
+ (cc . (one two three five six))
+ (rh . (f)))
+ } _"bassoon"
+ c1^\markup {
+ \woodwind-diagram #'oboe #'((rh . (c))
+ (lh . ())
+ (cc . (one two three four five six)))
+ } _"oboe"
+
+}
+@end lilypond
+
+@item
+MIDI output has been improved
+@itemize @bullet
+@item voices are kept separated, which makes the MIDI file much more useful for postprocessing
+@item optimal channel distribution: identical instruments share the same channel. This means that e.g. for a full orchestral score there are always 16 (15 plus percussion) diffently sounding instruments available, unrestricted by the number of staves or voices.
+@item @code{\set Score.midiChannelMapping = #'staff} assigns one MIDI channel per staff, previously the default behavior. This setting is required if you want instrument changes to create MIDI program changes on a single MIDI channel.
+@item dynamics are now rendered as note velocities, no longer as midi volume. This improves the sound on [high end] midi renderers.
+@end itemize
+
+@item
+MIDI-import through Midi2ly is improved
+@itemize @bullet
+@item Midi2ly now also works on Windows systems
+@item MIDI-files with more than 32 tracks are now handled
+@item notes on certain simultaneous voices no longer ignored
+@item notes overrunning a bar line are no longer truncated
+@item initial key signature and time signature are respected
+@item a problem with octaves in subsequent tracks/voices is fixed
+@item initial support for multiple voices notated on one staff
+@item the instrumentName is set from track data
+@item new --skip option, rests are displayed by default
+@item rests overrunning a bar line are not truncated
+@item new --include-header option for setting titles
+@item new --preview option for big MIDI-files
+@end itemize
+The first feature was sponsored by Valentin Villenave,
+the other features were sponsored by Image-Line Software for FL Studio.
+
+@item
+A new @code{Completion_rest_engraver} is available for automatically
+converting long rests which overrun bar lines, matching the
+@code{Completion_heads_engraver} for notes
+@example
+\layout @{
+ \context @{
+ \Voice
+ \remove "Note_heads_engraver"
+ \consists "Completion_heads_engraver"
+ \remove "Rest_engraver"
+ \consists "Completion_rest_engraver"
+ @}
+@}
+@end example
+This feature was sponsored by Image-Line Software for FL Studio.
+
+@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
+Added minimal support for black mensural notation.
+
+@item
+Enhanced support for obliqua shapes within white mensural ligatures.
+
+@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
+New markup functions @code{\with-link} and @code{\page-link} that add
+hyperlinks to a given label or a given page number. This works in the PDF
+backend only. All entries to the table of contents now automatically add
+hyperlinks to the pages they are referring to.
+
+@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
+}
+@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
+}
+
+\score {
+ <<
+ \new Staff \new Voice \Solo
+ >>
+}
+@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.
+
+@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
+
+@item
+Tablature staves show fret numbers only by default. To get the
+former style, @code{\tabFullNotation} is provided.
+
+@item
+Funk-style and Walker-style shape notes have been added.
+
+@item
+Rests will no longer keep a staff alive if @code{\RemoveEmptyStaffContext}
+is used.
+
+@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.
+
+@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.
+
+@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.
+
+@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}.
+
+
+@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\!
+@end lilypond
+
+
+@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.
have been added.
@item
-A variant of the segno sign is provided:
+A variant of the Segno sign is provided:
@lilypond[quote,relative=2]
c4 d e f \bar "S"
g4 f e d
\new Voice \with { \coloredheads } \relative c' { c4 e g c }
}
\layout {
- \context { \Staff
+ \context {
+ \Staff
\noclef
}
}
@lilypond[verbatim,quote,relative=1]
\new TabStaff
\with {
- stringTunings = #'(17 14 9 5 2 -3)
+ 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 {
@end lilypond
@item
-Paper margin defaults, as specified in @file{ly/@/paper@/-defaults@/-init@/.ly}, apply
+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.
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.
+
@end itemize