New features in 2.18 since 2.16
*******************************

   * When `\relative' is used without an explicit reference pitch, the
     reference pitch now is the middle of the first octave, making the
     first entered pitch indistinguishable from absolute pitch.
     Previously, omitting the reference pitch would have lead to a
     default of `c''.  Since that choice was somewhat arbitrary,
     recommended usage was to always specify the reference pitch.

   * A new command `\single' can be used for converting a property
     override into a tweak to be applied on a single music expression:

          <a \single\voiceTwoStyle e' a>1
           [image of music]


   * Two ways of letting graphical objects not appear in the output are
     overriding its `transparent' property with `#t' (retaining the
     original spacing) or overriding its `stencil' property with `#f'
     (not using any space at all).  Those two operations now have the
     shorthands `\hide' and `\omit', respectively.  They can either be
     given a music expression to tweak, or the name of a graphical
     object for which an override should be created (for specifying
     both, use `\single' on the override form):

          \new Staff \with { \omit Clef }
          \relative c'' <a e' \hide a>1
           [image of music]


   * A new command `\temporary' can be applied to overrides in order to
     not have them replace previous property settings.  If a `\revert'
     is applied to the same property subsequently, the previous setting
     reappears:

          \override NoteHead.color = #red c4
          \override NoteHead.color = #green d
          \revert NoteHead.color e2
          \override NoteHead.color = #red c4
          \temporary\override NoteHead.color = #green d
          \revert NoteHead.color e
          \revert NoteHead.color c
           [image of music]


     This is mainly useful for writing music functions that need to
     have some property changed just for the duration of the function.

   * `\tag', `\removeWithTag', and `\keepWithTag' can now accept a list
     of symbols rather than just a single symbol for marking, removing,
     and keeping music with any of multiple tags.  This is particularly
     important for `\keepWithTag' since one cannot achieve the same
     effect by using multiple consecutive `\keepWithTag' commands.

   * The `-d old-relative' option has been removed.  Not actually
     accessible from the command line any more, its remaining use was
     for interpretating `\relative' in LilyPond files converted
     automatically from version 1.8 or older.  It is unclear how much
     of this was actually still operative.

   * The meaning of `instrumentTransposition' has been reversed.  After
     \set instrumentTransposition = #{ b #}
     a written `c'' now sounds like `b'.  Previously, this would have
     been the other way round.  This and the following change should
     make dealing with transposing instruments more straightforward.

   * The music generated by `\set' and `\override' commands is no
     longer affected by `\transpose'.  The main consequence is that
     `\transpose' will transpose audible/concert pitch and printed
     pitch by the same amount even when the transposed music contains
     `\transposition'.  Previously,
     \transpose c' f' \transposition bes'
     was equivalent to `\transposition f''.  Now it stays equivalent to
     `\transposition bes''.

   * Tuplets are now created with the `\tuplet' command, which takes a
     fraction `T/N' to specify that T notes are played in the time
     usually allowed for N. One `\tuplet' command can create several
     tuplet groups if their duration is typed after the fraction.

          \tuplet 3/2 { c8 d e } \tuplet 3/2 { f e d } c2
          \tuplet 3/2 4 { c8 d e f e d } c2
           [image of music]


     The `\times' command with its inverted fraction order `N/T' is
     still available.

   * Introducing two new markup-commands; `\draw-dashed-line' and
     `\draw-dotted-line'.

     The dashed-line extends to the whole length given by DEST, if
     `full-length' is set to `#t' (this is the default) without any
     space at the beginning or end.  `off' will then be altered to fit.
     To insist on the given (or default) values of `on', `off' use
     `\override #'(full-length . #f)'.  Manual settings for `on', `off'
     and `phase' are possible.

     The dotted-line always extends to the whole length given by DEST,
     without any space at the beginning or end.  Manual settings for
     `off' are possible to get larger or smaller space between the dots.
     The given (or default) value of `off' will be altered to fit the
     line-length.

          \markup {
            \draw-dashed-line #'(5.1 . 2.3)
            \override #'(on . 0.3)
            \override #'(off . 0.5)
            \draw-dashed-line #'(5.1 . 2.3)
            \draw-dotted-line #'(5.1 . 2.3)
            \override #'(thickness . 2)
            \override #'(off . 0.2)
            \draw-dotted-line #'(5.1 . 2.3)
          }
           [image of music]


   * Starting with version 2.17.10, error messages or the `textedit'
     URI used for point-and-click functionality specify column numbers
     starting with 1 rather than 0.  The byte offset (also part of
     `textedit' URIs) still starts at 0.

   * The `\clef' command supports optional octavation:

          \clef "treble_(8)"
          c2 c
          \clef "bass^[15]"
          c2 c
           [image of music]


   * The LilyPond syntax of dot-separated words `Voice.Accidental' has
     been made interchangeable with `#'(Voice Accidental)', a Scheme
     list of symbols.  As one result, code like
     \override Voice.TextSpanner #'(bound-details left text) = "rit."
     is now equivalent to
     \override Voice.TextSpanner bound-details.left.text = "rit."
     or even
     \override #'(Voice TextSpanner) bound-details.left.text = "rit."

   * Grob and grob property path no longer need to be specified as two
     separate arguments to commands like `\override' and `\revert',
     allowing for the syntax
     \override Voice.TextSpanner.bound-details.left.text = "rit."
     Since complementary music functions like `\overrideProperty'
     cannot support forms with and without separating space at the same
     time, using a single dotted path is now the preferred form.
     Specifying grob path and grob property path separately, currently
     still supported with `\override' and `\revert' for compatibility
     reasons, is deprecated.

   * Due to words now being accepted as symbol function arguments, the
     interfaces of `\accidentalStyle', `\alterBroken', `\footnote' and
     `\tweak' had to be redesigned where optional symbol arguments were
     involved.  Please check the respective music function
     documentation for details.

   * Several commands now accept symbol lists (conveniently entered as
     dot-separated words) for various kinds of arguments.  These
     include `\accidentalStyle', `\alterBroken', `\footnote', `\hide',
     `\omit', `\overrideProperty', `\shape', and `\tweak'.

   * The bar line user interface has changed. Bar glyphs now resemble
     the appearance of the bar line, so a left repeat sign has to be
     coded as `.|:'. The command `\defineBarLine' provides an easy way
     to define additional bar line styles.

   * Accidentals in the key signature may be printed in octaves other
     than their traditional positions, or in multiple octaves.

          [image of music]





Local Variables:
coding: utf-8
End:
