This is out/lilypond-changes.info, produced by makeinfo version 4.13 from out/changes.texi.


File: lilypond-changes.info,  Node: Top,  Up: (dir)

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

   * Support for cross-staff stems on chords, using `crossStaff' and
     the `Span_stem_engraver'.  This calculates the length of
     cross-staff stems automatically.

          [image of music]


   * 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"
          }
           [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.

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

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




Tag Table:
Node: Top0

End Tag Table


Local Variables:
coding: utf-8
End:
