New features in 2.16 since 2.14
*******************************

   * 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, 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.

   * 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.

   * 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.

   * 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 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.

          \paper {
            #(include-special-characters)
          }
          \markup "&bull; &dagger; &copyright; &OE; &ss; &para;"
           [image of music]


   * 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 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.

   * New command-line option `--loglevel=LEVEL' to control how much
     output LilyPond creates. Possible values are ERROR, WARN,
     BASIC_PROGRESS, PROGRESS, DEBUG.

   * `\set \once' now correctly resets the property value to the
     previous value.

          [image of music]


   * The alignment of dynamic spanners (hairpins, text crescendo, etc.)
     is now automatically broken if a different direction is explicitly
     given.

          [image of music]


   * Appoggiaturas and acciaccaturas now also work inside a slur, not
     only inside a phrasing slur. Also, a function `\slashedGrace' was
     added that does does not use a slur from the acciaccatura note.

          [image of music]


   * To suppress the line on a crescendo text spanner (and other
     similar spanners), LilyPond now fully supports the `#'style =
     #'none' property.

          [image of music]


   * LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!

   * Glissandi can now span multiple lines.




Local Variables:
coding: utf-8
End:
