]> git.donarmstrong.com Git - lilypond.git/blobdiff - NEWS.txt
Update changelog
[lilypond.git] / NEWS.txt
index 6880edb9f864353bdc273477c8b4829faf05bf1a..0aac6fc370a468f1bca907d369cd908027c986c9 100644 (file)
--- a/NEWS.txt
+++ b/NEWS.txt
-New features in 2.16 since 2.14
+New features in 2.20 since 2.18
 *******************************
 
-   * Support for cross-staff stems on chords, using `crossStaff' and
-     the `Span_stem_engraver'.  This calculates the length of
-     cross-staff stems automatically.
+   • Slurs and phrasing slurs may now be started from individual notes
+     in a chord.  Several simultanous slurs per ‘Voice’ need to be
+     distinguished by ‘spanner-id’ setting.
 
-          [image of music]
+   • The music and grob property ‘spanner-id’ for distinguishing
+     simultaneous slurs and phrasing slurs has been changed from a
+     string to a ‘key’, a non-negative integer or symbol.
 
-
-   * The syntax of words (character sequences recognized without
-     enclosing quotes) and commands (now always a backslash `\'
-     followed by a word) has been unified across all modes: it now
-     consists of alphabetic characters, possibly enclosing isolated
-     dashes `-' and underlines `_'.
-
-     As one consequence, using unquoted text scripts like (literally!)
-          { c-script c\f_script }
-     will now tend to result in invalid music.  Omitting quote marks
-     for arbitrary text rather than keywords has never been good
-     practice or even documented, and it is unlikely to have seen
-     significant use.
-
-     Staying with established conventions (like not using dashes or
-     underlines for command names intended to be used inside of music)
-     remains advisable.  The reason for this change is more robust
-     recognition of LilyPond's lexical units for LilyPond itself as
-     well as external tools interpreting its syntax.
-
-   * Support for Kievan square notation:
-
-          \new KievanVoice {
-            \cadenzaOn
-            c d e f g a bes
-            \bar "kievan"
+   • There is a new command ‘\=’ for specifying the ‘spanner-id’ for
+     simultaneous slurs and phrasing slurs.
+          \fixed c' {
+            <c~ f\=1( g\=2( >2 <c e\=1) a\=2) >
           }
-           [image of music]
-
-
-   * Augmentation dots now avoid the other voice in two-voice polyphony
-     so that users can move the `Dot_column_engraver' to set dots
-     independently for each `Voice'.
-
-          [image of music]
-
-
-   * A Scheme function to adjust the control points of curves such as
-     slurs and ties, developed by several users, is now included in
-     LilyPond.
-
-          g8->( bes,-.) d4
-          \shape Slur #'((-0.5 . 1.5) (-3 . 0) (0 . 0) (0 . 0))
-          g8->( bes,!-.) d4
-           [image of music]
-
-
-   * Use of `\tempo' specifications in `\midi' blocks (removed in
-     2.9.16 in favor of explicit `tempoWholesPerMinute' settings) has
-     seen a revival: now any kind of property-setting music is turned
-     into context definitions within output specifications, allowing for
-     declarations like
-     \layout { \accidentalStyle modern }
-     \midi { \tempo 4. = 66 }
-
-   * The LilyPond G clef has been redesigned - upper loop is now more
-     balanced, bottom crook sticks out less and the "spine" (main
-     vertical line) is more evenly curved. The old and new versions can
-     be compared by looking at the documentation: old version
-     (http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#clef-glyphs),
-     new version
-     (http://lilypond.org/doc/v2.15/Documentation/notation/the-feta-font.html#clef-glyphs).
-
-   * Lilypond's stencil commands have been simplified to allow for less
-     code duplication and better height approximations of graphical
-     objects.  The following stencil commands have been eliminated:
-        * `beam'
-
-        * `bezier-sandwich'
-
-        * `bracket'
-
-        * `dashed-slur'
-
-        * `dot'
-
-        * `oval'
-
-        * `repeat-slash'
-
-        * `zigzag-line'
-
-   * Flags are now treated as separate objects rather than as stem
-     parts.
-
-          [image of music]
-
-
-   * Two alternative methods for bar numbering can be set, especially
-     for when using repeated music;
-
-          [image of music]
-
-
-   * The following is a fundamental change in LilyPond's music
-     representation: Rhythmic events like `LyricEvent' and `NoteEvent'
-     are no longer wrapped in `EventChord' unless they have been
-     actually entered as part of a chord in the input.  If you
-     manipulate music expressions in Scheme, the new behavior may
-     require changes in your code.  Calling the music function
-     `\eventChords' or the Scheme function `event-chord-wrap!'
-     converts to the old representation; using one of those might be
-     easiest for keeping legacy code operative.
-
-     The following three items are consequences of this change.
-
-   * The repetitive chord entry aid `q' has been reimplemented.
-     Repeated chords are now replaced right before interpreting a music
-     expression.  In case the user wants to retain some events of the
-     original chord, he can run the repeat chord replacement function
-     `\chordRepeats' manually.
-
-   * String numbers and right hand fingerings on single notes now appear
-     without having to be written inside of chord brackets.
-
-   * Music functions now work the same when used inside or outside of
-     chords, including all the possibilities of argument parsing.
-     Music variables can be used inside of chords: a construct like
-
-          tonic=fis'
-          { <\tonic \transpose c g \tonic> }
-           [image of music]
-
-
-     now works as expected.  One can use `#{...#}' for constructing
-     chord constituents.  `\tweak' now works on single notes without
-     needing to wrap them in a chord.  Using it on command events and
-     lyrics is now possible, but not likely to give results yet.
-
-   * `\tweak' now takes an optional layout object specification.  It can
-     be used for tweaking layout objects that are only indirectly
-     caused by the tweaked event, like accidentals, stems, and flags:
-
-          <\tweak Accidental #'color #red   cis4
-           \tweak Accidental #'color #green es
-                                            g>
-           [image of music]
-
-
-   * Scheme expressions inside of embedded Lilypond (`#{...#}') are now
-     executed in lexical closure of the surrounding Scheme code.  `$'
-     is no longer special in embedded Lilypond.  It can be used
-     unconditionally in Lilypond code for immediate evaluation of Scheme
-     expressions, similar to how `ly:export' could previously be used.
-     `ly:export' has been removed.  As a consequence, `#' is now free
-     to delay evaluation of its argument until the parser actually
-     reduces the containing expression, greatly reducing the potential
-     for premature evaluation.  There are also `splicing' operators `$@'
-     and `#@' for interpreting the members of a list individually.
-
-   * To reduce the necessity for using `$', Scheme expressions written
-     with `#' are interpreted as music inside of music lists, and as
-     markups or markup lists inside of markups.
-
-   * Support for jazz-like chords has been improved: Lydian and altered
-     chords are recognised; separators between chord modifiers are now
-     treated independently of separators between "slash" chords and
-     their bass notes (and by default, slashes are now only used for
-     the latter type of separator); additional pitches are no longer
-     prefixed with "add" by default; and the "m" in minor chords can be
-     customized.  *note Customizing chord names:
-     (lilypond-notation)Customizing chord names. for more information.
-
-   * The `\markuplines' command has been renamed to `\markuplist' for a
-     better match with its semantics and general Lilypond nomenclature.
-
-   * The interface for specifying string tunings in tablature has been
-     simplified considerably and employs the scheme function
-     `\stringTuning' for most purposes.
-
-   * Beams can now have their slopes preserved over line breaks.
-
-          [image of music]
-
-
-     To do this, several callback functions are now deprecated.
-        * `ly:beam::calc-least-squares-positions'
-
-        * `ly:beam::slope-damping'
-
-        * `ly:beam::shift-region-to-valid'
-     Furthermore, `ly:beam::quanting' now takes an additional argument
-     to help calculations over line breaks.  All of these functions are
-     now automatically called when setting the `positions' parameter.
-
-   * In function arguments music, markups and Scheme expressions (as
-     well as several other syntactic entities) have become mostly
-     interchangeable and are told apart only by evaluating the
-     respective predicate.  In several cases, the predicate is
-     consulted by the parser, like when deciding whether to interpret
-     `-3' as a number or a fingering event.
-
-   * Music functions (and their close relatives) can now be defined with
-     optional arguments.
-
-   * For defining commands executed only for their side-effects,
-     `define-void-function' is now available.
-
-   * There is a new `define-event-function' command in analogy to
-     `define-music-function' that can be used for defining music
-     functions acting as post events without requiring a direction
-     specifier (`-', `^', or `_') placed before them.
-
-          dyn=#(define-event-function (parser location arg) (markup?)
-                   (make-dynamic-script arg))
-          \relative c' { c\dyn pfsss }
-           [image of music]
-
-
-   * A list of ASCII aliases for special characters can be included.
-
+          image of music
+
+   • Blocks introduced with ‘\header’ can be stored in variables and
+     used as arguments to music and scheme functions and as the body of
+     ‘#{...#}’ constructs.  They are represented as a Guile module.
+
+     While ‘\book’, ‘\bookpart’, ‘\score’, ‘\with’, ‘\layout’, ‘\midi’,
+     ‘\paper’ blocks can be passed around in similar manner, they are
+     represented by different data types.
+
+   • Dot-separated symbol lists like ‘FretBoard.stencil’ were already
+     supported as of version 2.18.  They may now also contain unsigned
+     integers, and may alternatively be separated by commata.  This
+     allows usage such as
+          { \time 2,2,1 5/8  g'8 8 8 8 8 }
+          image of music
+
+     and
+          \tagGroup violin,oboe,bassoon
+
+   • Such lists may also be used in expressions for assignments, sets,
+     and overrides.  This allows usage such as
+          { \unset Timing.beamExceptions
+            \set Timing.beatStructure = 1,2,1
+            g'8 8 8 8 8 8 8 8 }
+          image of music
+
+   • Association list elements could previously be assigned values
+     individually (for example, paper variables like
+     ‘system-system-spacing.basic-distance’).  They may now be also
+     referenced in this manner, as with
           \paper {
-            #(include-special-characters)
+            \void \displayScheme \system-system-spacing.basic-distance
           }
-          \markup "&bull; &dagger; &copyright; &OE; &ss; &para;"
-           [image of music]
 
+     In combination with the previously mentioned changes, this allows
+     setting and referencing pseudovariables like ‘violin.1’.
+
+   • LilyPond source files may now be embedded inside the generated PDF
+     files.  This experimental feature is disabled by default and may be
+     regarded as unsafe, as PDF documents with hidden content tend to
+     present a security risk.  Please note that not all PDF viewers have
+     the ability to handle embedded documents (if not, the PDF output
+     will appear normally and source files will remain invisible).  This
+     feature only works with the PDF backend.
+
+   • French note names are now defined specifically instead of being
+     aliased to Italian note names: in addition to the generic
+     Italian-derived syntax, the D pitch may be entered as ‘ré’.  Double
+     sharps may also be entered using the ‘-x’ suffix.
+
+   • Additional bass strings (for lute tablature) are supported.
+          m = { f'4 d' a f d a, g, fis, e, d, c,  \bar "|." }
+
+          \score {
+            \new TabStaff \m
+            \layout {
+              \context {
+                \Score
+                tablatureFormat = #fret-letter-tablature-format
+              }
+              \context {
+                \TabStaff
+                stringTunings = \stringTuning <a, d f a d' f'>
+                additionalBassStrings = \stringTuning <c, d, e, fis, g,>
+                fretLabels = #'("a" "b" "r" "d" "e" "f" "g" "h" "i" "k")
+              }
+            }
+          }
+          image of music
+
+   • The markup-list-command ‘\table’ is now available.  Each column may
+     be aligned differently.
+          \markuplist {
+              \override #'(padding . 2)
+              \table
+                #'(0 1 0 -1)
+                {
+                  \underline { center-aligned right-aligned center-aligned left-aligned }
+                  one "1" thousandth "0.001"
+                  eleven "11" hundredth "0.01"
+                  twenty "20" tenth "0.1"
+                  thousand "1000" one "1.0"
+                }
+          }
+          image of music
+
+   • A new markup-command, ‘\with-dimensions-from’, makes
+     ‘\with-dimensions’ easier to use by taking the new dimensions from
+     a markup object, given as first argument.
+          \markup {
+            \pattern #5 #Y #0 "x"
+            \pattern #5 #Y #0 \with-dimensions-from "x" "f"
+            \pattern #5 #Y #0 \with-dimensions-from "x" "g"
+            \override #'(baseline-skip . 2)
+            \column {
+              \pattern #5 #X #0 "n"
+              \pattern #5 #X #0 \with-dimensions-from "n" "m"
+              \pattern #5 #X #0 \with-dimensions-from "n" "!"
+            }
+          }
+          image of music
+
+   • A new page breaking function ‘ly:one-line-auto-height-breaking’
+     places a whole score on a single line and changes the page width to
+     match, just like ‘ly:one-line-breaking’.  The difference is that it
+     also automatically modifies the height of the page to fit the
+     height of the music.
+
+   • Markup-command ‘\draw-squiggle-line’ is now available.  Customizing
+     is possible with overrides of ‘thickness’, ‘angularity’, ‘height’
+     and ‘orientation’
+          \markup
+            \overlay {
+              \draw-squiggle-line #0.5 #'(3 . 3) ##t
+
+              \translate #'(3 . 3)
+              \override #'(thickness . 4)
+              \draw-squiggle-line #0.5 #'(3 . -3) ##t
+
+              \translate #'(6 . 0)
+              \override #'(angularity . -5)
+              \draw-squiggle-line #0.5 #'(-3 . -3) ##t
+
+              \translate #'(3 . -3)
+              \override #'(angularity . 2)
+              \override #'(height . 0.3)
+              \override #'(orientation . -1)
+              \draw-squiggle-line #0.2 #'(-3 . 3) ##t
+            }
+          image of music
+
+   • A new command, ‘\RemoveAllEmptyStaves’, has been made available,
+     which acts exactly like ‘\RemoveEmptyStaves’, except for also
+     removing empty staves on the first system in a score.
+
+   • Markup-commands ‘\undertie’ and ‘\overtie’ are now available, as
+     well as the generic markup-command ‘\tie’.
+          \markup {
+            \undertie "undertied"
+            \overtie "overtied"
+          }
 
-   * There is a new `define-scheme-function' command in analogy to
-     `define-music-function' that can be used to define functions
-     evaluating to Scheme expressions while accepting arguments in
-     Lilypond syntax.
-
-   * The construct `#{ ... #}' can now be used not just for
-     constructing sequential music lists, but also for pitches
-     (distinguished from single note events by the absence of a
-     duration or other information that can't be part of a pitch),
-     single music events, void music expressions, post events, markups
-     (mostly freeing users from having to use the `markup' macro),
-     markup lists, number expressions, context definitions and
-     modifications, and a few other things.  If it encloses nothing or
-     only a single music event, it no longer returns a sequential music
-     list but rather a void music expression or just the music event
-     itself, respectively.
-
-   * Pitches can be used on the right side of assignments.  They are
-     distinguished from single note events by the absence of a duration
-     or other information that can't be part of a pitch.
-
-   * New command-line option `--loglevel=LEVEL' to control how much
-     output LilyPond creates. Possible values are ERROR, WARN,
-     BASIC_PROGRESS, PROGRESS, DEBUG.
-
-   * `\once \set' now correctly resets the property value to the
-     previous value.
+          m = {
+            c''1 \prall -\tweak text \markup \tie "131" -1
+          }
 
-          [image of music]
+          { \voiceOne \m \voiceTwo \m }
+          image of music
 
+   • ‘TabStaff’ is now able to print micro-tones for bendings etc.
+          \layout {
+            \context {
+              \Score
+              supportNonIntegerFret = ##t
+            }
+          }
 
-   * The alignment of dynamic spanners (hairpins, text crescendo, etc.)
-     is now automatically broken if a different direction is explicitly
-     given.
+          mus = \relative { c'4 cih d dih }
+
+          <<
+            \new Staff << \clef "G_8" \mus >>
+            \new TabStaff \mus
+          >>
+          image of music
+
+   • Two new styles of whiteout are now available.  The ‘outline’ style
+     approximates the contours of a glyph’s outline, and its shape is
+     produced from multiple displaced copies of the glyph.  The
+     ‘rounded-box’ style produces a rounded rectangle shape.  For all
+     three styles, including the default ‘box’ style, the whiteout
+     shape’s ‘thickness’, as a multiple of staff-line thickness, can be
+     customized.
+
+          \markup {
+            \combine
+              \filled-box #'(-1 . 15) #'(-3 . 4) #1
+              \override #'(thickness . 3)
+              \whiteout whiteout-box
+          }
+          \markup {
+            \combine
+              \filled-box #'(-1 . 24) #'(-3 . 4) #1
+              \override #'(style . rounded-box)
+              \override #'(thickness . 3)
+              \whiteout whiteout-rounded-box
+          }
+          \markup {
+            \combine
+              \filled-box #'(-1 . 18) #'(-3 . 4) #1
+              \override #'(style . outline)
+              \override #'(thickness . 3)
+              \whiteout whiteout-outline
+          }
+          \relative {
+            \override Staff.Clef.whiteout-style = #'outline
+            \override Staff.Clef.whiteout = 3
+            g'1
+          }
+          image of music
+
+   • All of ‘\override’, ‘\revert’, ‘\set’, and ‘\unset’ now work with
+     the ‘\once’ prefix for making one-time settings.
+          \relative {
+            c'4 d
+            \override NoteHead.color = #red
+            e4 f |
+            \once \override NoteHead.color = #green
+            g4 a
+            \once \revert NoteHead.color
+            b c |
+            \revert NoteHead.color
+            f2 c |
+          }
+          image of music
+
+   • When outputting MIDI, LilyPond will now store the ‘title’ defined
+     in a score’s ‘\header’ block (or, if there is no such definition on
+     the ‘\score’ level, the first such definition found in a ‘\header’
+     block of the score’s enclosing ‘\bookpart’, ‘\book’, or top-level
+     scope) as the name of the MIDI sequence in the MIDI file.
+     Optionally, the name of the MIDI sequence can be overridden using
+     the new ‘midititle’ ‘\header’ field independently of ‘title’ (for
+     example, in case ‘title’ contains markup code which does not render
+     as plain text in a satisfactory way automatically).
+
+   • Music (and scheme and void) functions and markup commands that just
+     supply the final parameters to a chain of overrides, music function
+     and markup command calls can now be defined in the form of just
+     writing the expression cut short with ‘\etc’.
+
+          bold-red-markup = \markup \bold \with-color #red \etc
+          highlight = \tweak font-size 3 \tweak color #red \etc
+
+          \markup \bold-red "text"
+          \markuplist \column-lines \bold-red { One Two }
+
+          { c' \highlight d' e'2-\highlight -! }
+          image of music
+
+   • LilyPond functions defined with ‘define-music-function’,
+     ‘define-event-function’, ‘define-scheme-function’ and
+     ‘define-void-function’ can now be directly called from Scheme as if
+     they were genuine Scheme procedures.  Argument checking and
+     matching will still be performed in the same manner as when calling
+     the function through LilyPond input.  This includes the insertion
+     of defaults for optional arguments not matching their predicates.
+     Instead of using ‘\default’ in the actual argument list for
+     explicitly skipping a sequence of optional arguments,
+     ‘*unspecified*’ can be employed.
+
+   • Current input location and parser are now stored in GUILE fluids
+     and can be referenced via the function calls ‘(*location*)’ and
+     ‘(*parser*)’.  Consequently, a lot of functions previously taking
+     an explicit ‘parser’ argument no longer do so.
+
+     Functions defined with ‘define-music-function’,
+     ‘define-event-function’, ‘define-scheme-function’ and
+     ‘define-void-function’ no longer use ‘parser’ and ‘location’
+     arguments.
+
+     With those particular definitions, LilyPond will try to recognize
+     legacy use of ‘parser’ and ‘location’ arguments, providing
+     backwards-compatible semantics for some time.
+
+   • In the "english" notename language, the long notenames for pitches
+     with accidentals now contain a hyphen for better readability.  You
+     now have to write
+          \key a-flat \major
+     instead of the previous
+          \key aflat \major
+
+     Double accidentals do not get another hyphen, so the Dutch ‘cisis’
+     has the long English notename ‘c-sharpsharp’.
+
+   • The visual style of tremolo slashes (shape, style and slope) is now
+     more finely controlled.
+          image of music
+
+   • Multi-measure rests have length according to their total duration,
+     under the control of ‘MultiMeasureRest.space-increment’.
+          image of music
+
+   • Page numbers may now be printed in roman numerals, by setting the
+     ‘page-number-type’ paper variable.
+
+   • It is now possible to use ‘\time’ and ‘\partial’ together to change
+     the time signature in mid measure.
+
+          \override Score.BarNumber.break-visibility = #end-of-line-invisible
+          \partial 4 \time 3/4 f4 | 2 4 | 2 \bar "||"
+          \time 9/8 \partial 4. f8 8 8 | 2. 8 8 8 |
+          image of music
+
+   • It is now possible to override the ‘text’ property of chord names.
+
+          <<
+          \new ChordNames \chordmode {
+            a' b c:7
+            \once \override ChordName.text = #"foo"
+            d
+          }
+          >>
+          image of music
+
+   • Improved horizontal alignment when using ‘TextScript’, with
+     ‘DynamicText’ or ‘LyricText’.
+
+   • A new command ‘\magnifyStaff’ has been added which scales staff
+     sizes, staff lines, bar lines, beamlets and horizontal spacing
+     generally at the ‘Staff’ context level.  Staff lines are prevented
+     from being scaled smaller than the default since the thickness of
+     stems, slurs, and the like are all based on the staff line
+     thickness.
+
+   • ‘InstrumentName’ now supports ‘text-interface’.
+
+   • There is now support for controlling the ‘expression level’ of MIDI
+     channels using the ‘Staff.midiExpression’ context property.  This
+     can be used to alter the perceived volume of even sustained notes
+     (albeit in a very ‘low-level’ way) and accepts a number value
+     between ‘0.0’ and ‘1.0’.
+
+          \score {
+            \new Staff \with {
+              midiExpression = #0.6
+              midiInstrument = #"clarinet"
+            }
+            <<
+              { a'1~ a'1 }
+              {
+                \set Staff.midiExpression = #0.7 s4\f\<
+                \set Staff.midiExpression = #0.8 s4
+                \set Staff.midiExpression = #0.9 s4
+                \set Staff.midiExpression = #1.0 s4
+
+                \set Staff.midiExpression = #0.9 s4\>
+                \set Staff.midiExpression = #0.8 s4
+                \set Staff.midiExpression = #0.7 s4
+                \set Staff.midiExpression = #0.6 s4\!
+              }
+            >>
+            \midi { }
+          }
 
-          [image of music]
+   • Support for making it easier to use alternative ‘music’ fonts other
+     than the default Emmentaler in LilyPond has been added.  See
+     <http://fonts.openlilylib.org/> for more information.
+
+   • Grobs and their parents can now be aligned separately allowing more
+     flexibility for grob positions.  For example the ‘left’ edge of a
+     grob can now be aligned on the ‘center’ of its parent.
+
+   • Improvements to the ‘\partial’ command have been made to avoid
+     problems when using multiple, parallel contexts.
+
+   • ‘\chordmode’ can now use ‘< >’ and ‘<< >>’ constructs.
+
+   • A new command ‘\tagGroup’ has now been added.  This complements the
+     existing ‘\keepWithTag’ and ‘\removeWithTag’ commands.  For
+     Example:
+
+          \tagGroup #'(violinI violinII viola cello)
+
+     declares a list of ‘tags’ that belong to a single ‘tag group’.
+
+          \keepWithTag #'violinI
+
+     Is now only concerned with ‘tags’ from ‘violinI’’s tag group.
+
+     Any element of the included music tagged with one or more tags from
+     the group, but _not_ with VIOLINI, will be removed.
+
+   • The ‘\addlyrics’ function now works with arbitrary contexts
+     incuding ‘Staff’.
+
+   • String numbers can now also be used to print roman numerals (e.g.
+     for unfretted string instruments).
+          c2\2
+          \romanStringNumbers
+          c\2
+          \arabicStringNumbers
+          c1\3
+          image of music
+
+   • The ‘thin-kern’ property of the ‘BarLine’ grob has been renamed to
+     ‘segno-kern’.
+
+   • ‘KeyCancellation’ grobs now ignore cue clefs (like ‘KeySignature’
+     grobs do).
+
+   • Add support for ‘\once \unset’
+
+   • It is now possible to individually color both the dots and
+     parentheses in fret diagrams when using the ‘\fret-diagram-verbose’
+     markup command.
+
+          \new Voice {
+            c1^\markup {
+              \override #'(fret-diagram-details . (
+                           (finger-code . in-dot))) {
+                \fret-diagram-verbose #'((mute 6)
+                                         (place-fret 5 3 1 red)
+                                         (place-fret 4 5 2 inverted)
+                                         (place-fret 3 5 3 green)
+                                         (place-fret 2 5 4 blue inverted)
+                                         (place-fret 1 3 1 violet)
+                                         (barre 5 1 3 ))
+              }
+            }
+            c1^\markup {
+              \override #'(fret-diagram-details . (
+                           (finger-code . below-string))) {
+                \fret-diagram-verbose #'((mute 6)
+                                       (place-fret 5 3 1 red parenthesized)
+                                       (place-fret 4 5 2 yellow
+                                                         default-paren-color
+                                                         parenthesized)
+                                       (place-fret 3 5 3 green)
+                                       (place-fret 2 5 4 blue )
+                                       (place-fret 1 3 1)
+                                       (barre 5 1 3))
+              }
+            }
+          }
+          image of music
+
+   • Two new properties have been added for use in
+     ‘fret-diagram-details’ when using the ‘\fret-diagram-verbose’
+     markup command; ‘fret-label-horizontal-offset’ which affects the
+     ‘fret-label-indication’ and ‘paren-padding’ which controls the
+     space between the dot and the parentheses surrounding it.
+
+          \new Voice {
+            c1^\markup {
+              \fret-diagram-verbose #'((mute 6)
+                                       (place-fret 5 3 1)
+                                       (place-fret 4 5 2)
+                                       (place-fret 3 5 3)
+                                       (place-fret 1 6 4 parenthesized)
+                                       (place-fret 2 3 1)
+                                       (barre 5 2 3))
+            }
+            c1^\markup {
+              \override #'(fret-diagram-details . (
+                           (fret-label-horizontal-offset . 2)
+                           (paren-padding . 0.25))) {
+                \fret-diagram-verbose #'((mute 6)
+                                         (place-fret 5 3 1)
+                                         (place-fret 4 5 2)
+                                         (place-fret 3 5 3)
+                                         (place-fret 1 6 4 parenthesized)
+                                         (place-fret 2 3 1)
+                                         (barre 5 2 3))
+              }
+            }
+          }
+          image of music
+
+   • A new markup command ‘\justify-line’ has been added.  Similar to
+     the ‘\fill-line’ markup command except that instead of setting
+     _words_ in columns, the ‘\justify-line’ command balances the
+     whitespace between them ensuring that when there are three or more
+     words in a markup, the whitespace is always consistent.
+
+          \markup \fill-line {oooooo oooooo oooooo oooooo}
+          \markup \fill-line {ooooooooo oooooooo oo ooo}
+          image of music
+
+          \markup \justify-line {oooooo oooooo oooooo oooooo}
+          \markup \justify-line {ooooooooo oooooooo oo ooo}
+          image of music
+
+   • A new command ‘\magnifyMusic’ has been added, which allows the
+     notation size to be changed without changing the staff size, while
+     automatically scaling stems, beams, and horizontal spacing.
+
+          \new Staff <<
+            \new Voice \relative {
+              \voiceOne
+              <e' e'>4 <f f'>8. <g g'>16 <f f'>8 <e e'>4 r8
+            }
+            \new Voice \relative {
+              \voiceTwo
+              \magnifyMusic 0.63 {
+                \override Score.SpacingSpanner.spacing-increment = #(* 1.2 0.63)
+                r32 c'' a c a c a c r c a c a c a c
+                r c a c a c a c a c a c a c a c
+              }
+            }
+          >>
+          image of music
+
+   • 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 ‘built-in’, which means it does
+     not need to be copied and edited: instead it is simply ‘\include’’d
+     in the input file.  For details, see *note
+     (lilypond-learning)Built-in templates::.
+
+   • 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 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.
+
+          \time 3/4
+          \override Beam.auto-knee-gap = 3
+          \tuplet 3/2 4 {
+            g8 c'' e,
+            c'8 g,, e''
+            g,,8 e''' c,,
+          }
+          image of music
+
+     The original kneed-beam tuplet behavior is still available through
+     an ‘\override’ via a new, ‘knee-to-beam’ property.
+
+          \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,,
+          }
+          image of music
 
+   • ‘\lyricsto’ and ‘\addLyrics’ have been ‘harmonized’.  Both now
+     accept the same kind of delimited argument list that ‘\lyrics’ and
+     ‘\chords’ accept.  Backward compatibility has been added so music
+     identifiers (i.e.  ‘\mus’) are permitted as arguments.  A
+     ‘convert-ly’ rule has been added that removes redundant uses of
+     ‘\lyricmode’ and rearranges combinations with context starters such
+     that ‘\lyricsto’ in general is applied last (i.e.  like
+     ‘\lyricmode’ would be).
 
-   * Appoggiaturas and acciaccaturas now also work inside a slur, not
-     only inside a phrasing slur. Also, a function `\slashedGrace' was
-     added that does not use a slur from the acciaccatura note.
+   • Scheme functions and identifiers can now be used as output
+     definitions.
 
-          [image of music]
+   • Scheme expressions can now be used as chord constituents.
 
+   • Improved visual spacing of small and regular ‘MI’ Funk and Walker
+     noteheads so they are now the same width as other shaped notes in
+     their respective sets.  ‘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.
 
-   * To suppress the line on a crescendo text spanner (and other
-     similar spanners), LilyPond now fully supports the `#'style =
-     #'none' property.
+   • ‘LeftEdge’ now has a definable ‘Y-extent’ (i.e.vertical).  See
+     *note (lilypond-internals)LeftEdge::.
 
-          [image of music]
+   • Added a new ‘make-path-stencil’ function that supports all ‘path’
+     commands both relative and absolute:
 
+     ‘lineto’, ‘rlineto’, ‘curveto’, ‘rcurveto’, ‘moveto’, ‘rmoveto’,
+     ‘closepath’.  The function also supports ‘single-letter’ syntax
+     used in standard SVG path commands:
 
-   * LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!
+     ‘L’, ‘l’, ‘C’, ‘c’, ‘M’, ‘m’, ‘Z’ and ‘z’.  The new command is also
+     backward-compatible with the original ‘make-connected-path-stencil’
+     function.  Also see ‘scm/stencil.scm’.
 
-   * Glissandi can now span multiple lines.
+   • Context properties named in the ‘alternativeRestores’ property are
+     restored to their value at the start of the _first_ alternative in
+     all subsequent alternatives.
 
+     Currently the default set restores ‘current meter’;
 
+          \time 3/4
+          \repeat volta 2 { c2 e4 | }
+          \alternative {
+            { \time 4/4 f2 d | }
+            { f2 d4 | }
+          }
+          g2. |
+          image of music
+
+     ‘measure position’;
+
+          \time 3/4
+          \repeat volta 2 { c2 e4 | }
+          \alternative {
+            { \time 4/4
+              \set Timing.measurePosition = #(ly:make-moment -1/2)
+              f2 | }
+            { f2 d4 | }
+          }
+          g2. |
+          image of music
+
+     and ‘chord changes’;
+
+          <<
+            \new ChordNames {
+              \set chordChanges = ##t
+              \chordmode { c1:m d:m c:m d:m }
+            }
+            \new Staff {
+              \repeat volta 2 { \chordmode { c1:m } }
+              \alternative {
+                { \chordmode { d:m } }
+                { \chordmode { c:m } }
+              }
+            \chordmode { d:m }
+          }
+          >>
+          image of music
+
+   • Improved MIDI output for breathe marks.  After tied notes, breaths
+     take time _only_ from the last note of the tie; e.g.  ‘{ c4~ c8
+     \breathe }’ performs as ‘{ c4~ c16 r }’ instead of ‘{ 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.
+
+   • A new note head style for Tabulature has been added;
+     ‘TabNoteHead.style = #'slash’.
+
+   • Four new Clef glyphs have been added _Double G_, _Tenor G_,
+     _Varpercussion_ and _varC_ and their related tessitura.
+            \override Staff.Clef.full-size-change = ##t
+
+            \clef "GG" c c c c
+            \clef "tenorG" c c c c
+            \clef "varC" c c c c
+            \clef "altovarC" c c c c
+            \clef "tenorvarC" c c c c
+            \clef "baritonevarC" c c c c
+            \clef "varpercussion" c c c c
+
+            \break
+            \override Staff.Clef.full-size-change = ##f
+
+            \clef "GG" c c c c
+            \clef "tenorG" c c c c
+            \clef "varC" c c c c
+            \clef "altovarC" c c c c
+            \clef "tenorvarC" c c c c
+            \clef "baritonevarC" c c c c
+            \clef "varpercussion" c c c c
+          image of music
+
+   • 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:
+
+          \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 |
+          }
+          image of music
+
+          \new Staff { r16 c'16 ~ 8 ~ 4 ~ 2 | }
+          image of music
+
+   • ‘\displayLilyMusic’ and its underlying Scheme functions no longer
+     omit redundant note durations.  This makes it easier to reliably
+     recognize and format standalone durations in expressions like
+          { c4 d4 8 }
+
+   • Beaming exceptions can now be constructed using the
+     ‘\beamExceptions’ scheme function.  One can now write
+
+          \time #'(2 1) 3/16
+          \set Timing.beamExceptions =
+            \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
+          c16 c c |
+          \repeat unfold 6 { c32 } |
+          image of music
+
+     with multiple exceptions separated with ‘|’ bar checks (writing the
+     exception pattern without pitches is convenient but not mandatory).
+     Previously, setting the beam exceptions would have required writing
+
+          \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
+              )))
+
+   • 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.
+
+     This behavior is customizable through the ‘midiLength’ and
+     ‘midiExtraVelocity’ properties on ‘ArticulationEvent’.  See
+     ‘script-init.ly’ for examples.
+
+   • 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.
+
+     Stroke adjustment can be forced by specifying the command line
+     option ‘-dstrokeadjust’ to LilyPond.  When generating ‘PDF’ files,
+     this will usually result in markedly better looking ‘PDF’ previews
+     but significantly larger file size.  Print quality at high
+     resolutions will be unaffected.
 
-\1f
-Local Variables:
-coding: utf-8
-End: