1 New features in 2.16 since 2.14
2 *******************************
4 * Support for cross-staff stems on chords, using `crossStaff' and
5 the `Span_stem_engraver'. This calculates the length of
6 cross-staff stems automatically.
11 * The syntax of words (character sequences recognized without
12 enclosing quotes) and commands (now always a backslash `\'
13 followed by a word) has been unified across all modes: it now
14 consists of alphabetic characters, possibly enclosing isolated
15 dashes `-' and underlines `_'.
17 As one consequence, using unquoted text scripts like (literally!)
18 { c-script c\f_script }
19 will now tend to result in invalid music. Omitting quote marks
20 for arbitrary text rather than keywords has never been good
21 practice or even documented, and it is unlikely to have seen
24 Staying with established conventions (like not using dashes or
25 underlines for command names intended to be used inside of music)
26 remains advisable. The reason for this change is more robust
27 recognition of LilyPond's lexical units for LilyPond itself as
28 well as external tools interpreting its syntax.
30 * Support for Kievan square notation:
40 * Augmentation dots now avoid the other voice in two-voice polyphony
41 so that users can move the `Dot_column_engraver' to set dots
42 independently for each `Voice'.
47 * A Scheme function to adjust the control points of curves such as
48 slurs and ties, developed by several users, is now included in
52 \shape Slur #'((-0.5 . 1.5) (-3 . 0) (0 . 0) (0 . 0))
57 * Use of `\tempo' specifications in `\midi' blocks (removed in
58 2.9.16 in favor of explicit `tempoWholesPerMinute' settings) has
59 seen a revival: now any kind of property-setting music is turned
60 into context definitions within output specifications, allowing for
62 \layout { \accidentalStyle modern }
63 \midi { \tempo 4. = 66 }
65 * The LilyPond G clef has been redesigned - upper loop is now more
66 balanced, bottom crook sticks out less and the "spine" (main
67 vertical line) is more evenly curved. The old and new versions can
68 be compared by looking at the documentation: old version
69 (http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#clef-glyphs),
71 (http://lilypond.org/doc/v2.15/Documentation/notation/the-feta-font.html#clef-glyphs).
73 * Lilypond's stencil commands have been simplified to allow for less
74 code duplication and better height approximations of graphical
75 objects. The following stencil commands have been eliminated:
92 * Flags are now treated as separate objects rather than as stem
98 * Two alternative methods for bar numbering can be set, especially
99 for when using repeated music;
104 * The following is a fundamental change in LilyPond's music
105 representation: Rhythmic events like `LyricEvent' and `NoteEvent'
106 are no longer wrapped in `EventChord' unless they have been
107 actually entered as part of a chord in the input. If you
108 manipulate music expressions in Scheme, the new behavior may
109 require changes in your code. Calling the music function
110 `\eventChords' or the Scheme function `event-chord-wrap!'
111 converts to the old representation; using one of those might be
112 easiest for keeping legacy code operative.
114 The following three items are consequences of this change.
116 * The repetitive chord entry aid `q' has been reimplemented.
117 Repeated chords are now replaced right before interpreting a music
118 expression. In case the user wants to retain some events of the
119 original chord, he can run the repeat chord replacement function
120 `\chordRepeats' manually.
122 * String numbers and right hand fingerings on single notes now appear
123 without having to be written inside of chord brackets.
125 * Music functions now work the same when used inside or outside of
126 chords, including all the possibilities of argument parsing.
127 Music variables can be used inside of chords: a construct like
130 { <\tonic \transpose c g \tonic> }
134 now works as expected. One can use `#{...#}' for constructing
135 chord constituents. `\tweak' now works on single notes without
136 needing to wrap them in a chord. Using it on command events and
137 lyrics is now possible, but not likely to give results yet.
139 * `\tweak' now takes an optional layout object specification. It can
140 be used for tweaking layout objects that are only indirectly
141 caused by the tweaked event, like accidentals, stems, and flags:
143 <\tweak Accidental #'color #red cis4
144 \tweak Accidental #'color #green es
149 * Scheme expressions inside of embedded Lilypond (`#{...#}') are now
150 executed in lexical closure of the surrounding Scheme code. `$'
151 is no longer special in embedded Lilypond. It can be used
152 unconditionally in Lilypond code for immediate evaluation of Scheme
153 expressions, similar to how `ly:export' could previously be used.
154 `ly:export' has been removed. As a consequence, `#' is now free
155 to delay evaluation of its argument until the parser actually
156 reduces the containing expression, greatly reducing the potential
157 for premature evaluation. There are also `splicing' operators `$@'
158 and `#@' for interpreting the members of a list individually.
160 * To reduce the necessity for using `$', Scheme expressions written
161 with `#' are interpreted as music inside of music lists, and as
162 markups or markup lists inside of markups.
164 * Support for jazz-like chords has been improved: Lydian and altered
165 chords are recognised; separators between chord modifiers are now
166 treated independently of separators between "slash" chords and
167 their bass notes (and by default, slashes are now only used for
168 the latter type of separator); additional pitches are no longer
169 prefixed with "add" by default; and the "m" in minor chords can be
170 customized. *note Customizing chord names:
171 (lilypond-notation)Customizing chord names. for more information.
173 * The `\markuplines' command has been renamed to `\markuplist' for a
174 better match with its semantics and general Lilypond nomenclature.
176 * The interface for specifying string tunings in tablature has been
177 simplified considerably and employs the scheme function
178 `\stringTuning' for most purposes.
180 * Beams can now have their slopes preserved over line breaks.
185 To do this, several callback functions are now deprecated.
186 * `ly:beam::calc-least-squares-positions'
188 * `ly:beam::slope-damping'
190 * `ly:beam::shift-region-to-valid'
191 Furthermore, `ly:beam::quanting' now takes an additional argument
192 to help calculations over line breaks. All of these functions are
193 now automatically called when setting the `positions' parameter.
195 * In function arguments music, markups and Scheme expressions (as
196 well as several other syntactic entities) have become mostly
197 interchangeable and are told apart only by evaluating the
198 respective predicate. In several cases, the predicate is
199 consulted by the parser, like when deciding whether to interpret
200 `-3' as a number or a fingering event.
202 * Music functions (and their close relatives) can now be defined with
205 * For defining commands executed only for their side-effects,
206 `define-void-function' is now available.
208 * There is a new `define-event-function' command in analogy to
209 `define-music-function' that can be used for defining music
210 functions acting as post events without requiring a direction
211 specifier (`-', `^', or `_') placed before them.
213 dyn=#(define-event-function (parser location arg) (markup?)
214 (make-dynamic-script arg))
215 \relative c' { c\dyn pfsss }
219 * A list of ASCII aliases for special characters can be included.
222 #(include-special-characters)
224 \markup "• † ©right; &OE; &ss; ¶"
228 * There is a new `define-scheme-function' command in analogy to
229 `define-music-function' that can be used to define functions
230 evaluating to Scheme expressions while accepting arguments in
233 * The construct `#{ ... #}' can now be used not just for
234 constructing sequential music lists, but also for pitches
235 (distinguished from single note events by the absence of a
236 duration or other information that can't be part of a pitch),
237 single music events, void music expressions, post events, markups
238 (mostly freeing users from having to use the `markup' macro),
239 markup lists, number expressions, context definitions and
240 modifications, and a few other things. If it encloses nothing or
241 only a single music event, it no longer returns a sequential music
242 list but rather a void music expression or just the music event
243 itself, respectively.
245 * Pitches can be used on the right side of assignments. They are
246 distinguished from single note events by the absence of a duration
247 or other information that can't be part of a pitch.
249 * New command-line option `--loglevel=LEVEL' to control how much
250 output LilyPond creates. Possible values are ERROR, WARN,
251 BASIC_PROGRESS, PROGRESS, DEBUG.
253 * `\once \set' now correctly resets the property value to the
259 * The alignment of dynamic spanners (hairpins, text crescendo, etc.)
260 is now automatically broken if a different direction is explicitly
266 * Appoggiaturas and acciaccaturas now also work inside a slur, not
267 only inside a phrasing slur. Also, a function `\slashedGrace' was
268 added that does not use a slur from the acciaccatura note.
273 * To suppress the line on a crescendo text spanner (and other
274 similar spanners), LilyPond now fully supports the `#'style =
280 * LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!
282 * Glissandi can now span multiple lines.