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