]> git.donarmstrong.com Git - lilypond.git/blob - NEWS.txt
Fix texinfo syntax errors
[lilypond.git] / NEWS.txt
1 New features in 2.16
2 ********************
3
4 Fixes and changes after 2.16.0
5 ==============================
6
7 2.16.1
8      Please refer to the bug tracker for issues fixed in 2.16.1
9      (http://code.google.com/p/lilypond/issues/list?can=1&q=Fixed_2_16_1).
10
11 New features in 2.16 since 2.14
12 ===============================
13
14    * Support for cross-staff stems on chords, using `crossStaff' and
15      the `Span_stem_engraver'.  This calculates the length of
16      cross-staff stems automatically.
17
18           [image of music]
19
20
21    * The syntax of words (character sequences recognized without
22      enclosing quotes) and commands (now always a backslash `\'
23      followed by a word) has been unified across all modes: it now
24      consists of alphabetic characters, possibly enclosing isolated
25      dashes `-' and underlines `_'.
26
27      As one consequence, using unquoted text scripts like (literally!)
28           { c-script c\f_script }
29      will now tend to result in invalid music.  Omitting quote marks
30      for arbitrary text rather than keywords has never been good
31      practice or even documented, and it is unlikely to have seen
32      significant use.
33
34      Staying with established conventions (like not using dashes or
35      underlines for command names intended to be used inside of music)
36      remains advisable.  The reason for this change is more robust
37      recognition of LilyPond's lexical units for LilyPond itself as
38      well as external tools interpreting its syntax.
39
40    * Support for Kievan square notation:
41
42           \new KievanVoice {
43             \cadenzaOn
44             c d e f g a bes
45             \bar "kievan"
46           }
47            [image of music]
48
49
50    * Augmentation dots now avoid the other voice in two-voice polyphony
51      so that users can move the `Dot_column_engraver' to set dots
52      independently for each `Voice'.
53
54           [image of music]
55
56
57    * A Scheme function to adjust the control points of curves such as
58      slurs and ties, developed by several users, is now included in
59      LilyPond.
60
61           g8->( bes,-.) d4
62           \shape Slur #'((-0.5 . 1.5) (-3 . 0) (0 . 0) (0 . 0))
63           g8->( bes,!-.) d4
64            [image of music]
65
66
67    * Use of `\tempo' specifications in `\midi' blocks (removed in
68      2.9.16 in favor of explicit `tempoWholesPerMinute' settings) has
69      seen a revival: now any kind of property-setting music is turned
70      into context definitions within output specifications, allowing for
71      declarations like
72      \layout { \accidentalStyle modern }
73      \midi { \tempo 4. = 66 }
74
75    * The LilyPond G clef has been redesigned - upper loop is now more
76      balanced, bottom crook sticks out less and the "spine" (main
77      vertical line) is more evenly curved. The old and new versions can
78      be compared by looking at the documentation: old version
79      (http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#clef-glyphs),
80      new version
81      (http://lilypond.org/doc/v2.15/Documentation/notation/the-feta-font.html#clef-glyphs).
82
83    * Lilypond's stencil commands have been simplified to allow for less
84      code duplication and better height approximations of graphical
85      objects.  The following stencil commands have been eliminated:
86         * `beam'
87
88         * `bezier-sandwich'
89
90         * `bracket'
91
92         * `dashed-slur'
93
94         * `dot'
95
96         * `oval'
97
98         * `repeat-slash'
99
100         * `zigzag-line'
101
102    * Flags are now treated as separate objects rather than as stem
103      parts.
104
105           [image of music]
106
107
108    * Two alternative methods for bar numbering can be set, especially
109      for when using repeated music;
110
111           [image of music]
112
113
114    * The following is a fundamental change in LilyPond's music
115      representation: Rhythmic events like `LyricEvent' and `NoteEvent'
116      are no longer wrapped in `EventChord' unless they have been
117      actually entered as part of a chord in the input.  If you
118      manipulate music expressions in Scheme, the new behavior may
119      require changes in your code.  Calling the music function
120      `\eventChords' or the Scheme function `event-chord-wrap!'
121      converts to the old representation; using one of those might be
122      easiest for keeping legacy code operative.
123
124      The following three items are consequences of this change.
125
126    * The repetitive chord entry aid `q' has been reimplemented.
127      Repeated chords are now replaced right before interpreting a music
128      expression.  In case the user wants to retain some events of the
129      original chord, he can run the repeat chord replacement function
130      `\chordRepeats' manually.
131
132    * String numbers and right hand fingerings on single notes now appear
133      without having to be written inside of chord brackets.
134
135    * Music functions now work the same when used inside or outside of
136      chords, including all the possibilities of argument parsing.
137      Music variables can be used inside of chords: a construct like
138
139           tonic=fis'
140           { <\tonic \transpose c g \tonic> }
141            [image of music]
142
143
144      now works as expected.  One can use `#{...#}' for constructing
145      chord constituents.  `\tweak' now works on single notes without
146      needing to wrap them in a chord.  Using it on command events and
147      lyrics is now possible, but not likely to give results yet.
148
149    * `\tweak' now takes an optional layout object specification.  It can
150      be used for tweaking layout objects that are only indirectly
151      caused by the tweaked event, like accidentals, stems, and flags:
152
153           <\tweak Accidental #'color #red   cis4
154            \tweak Accidental #'color #green es
155                                             g>
156            [image of music]
157
158
159    * Scheme expressions inside of embedded Lilypond (`#{...#}') are now
160      executed in lexical closure of the surrounding Scheme code.  `$'
161      is no longer special in embedded Lilypond.  It can be used
162      unconditionally in Lilypond code for immediate evaluation of Scheme
163      expressions, similar to how `ly:export' could previously be used.
164      `ly:export' has been removed.  As a consequence, `#' is now free
165      to delay evaluation of its argument until the parser actually
166      reduces the containing expression, greatly reducing the potential
167      for premature evaluation.  There are also `splicing' operators `$@'
168      and `#@' for interpreting the members of a list individually.
169
170    * To reduce the necessity for using `$', Scheme expressions written
171      with `#' are interpreted as music inside of music lists, and as
172      markups or markup lists inside of markups.
173
174    * Support for jazz-like chords has been improved: Lydian and altered
175      chords are recognised; separators between chord modifiers are now
176      treated independently of separators between "slash" chords and
177      their bass notes (and by default, slashes are now only used for
178      the latter type of separator); additional pitches are no longer
179      prefixed with "add" by default; and the "m" in minor chords can be
180      customized.  *note Customizing chord names:
181      (lilypond-notation)Customizing chord names. for more information.
182
183    * The `\markuplines' command has been renamed to `\markuplist' for a
184      better match with its semantics and general Lilypond nomenclature.
185
186    * The interface for specifying string tunings in tablature has been
187      simplified considerably and employs the scheme function
188      `\stringTuning' for most purposes.
189
190    * Beams can now have their slopes preserved over line breaks.
191
192           [image of music]
193
194
195      To do this, several callback functions are now deprecated.
196         * `ly:beam::calc-least-squares-positions'
197
198         * `ly:beam::slope-damping'
199
200         * `ly:beam::shift-region-to-valid'
201      Furthermore, `ly:beam::quanting' now takes an additional argument
202      to help calculations over line breaks.  All of these functions are
203      now automatically called when setting the `positions' parameter.
204
205    * In function arguments music, markups and Scheme expressions (as
206      well as several other syntactic entities) have become mostly
207      interchangeable and are told apart only by evaluating the
208      respective predicate.  In several cases, the predicate is
209      consulted by the parser, like when deciding whether to interpret
210      `-3' as a number or a fingering event.
211
212    * Music functions (and their close relatives) can now be defined with
213      optional arguments.
214
215    * For defining commands executed only for their side-effects,
216      `define-void-function' is now available.
217
218    * There is a new `define-event-function' command in analogy to
219      `define-music-function' that can be used for defining music
220      functions acting as post events without requiring a direction
221      specifier (`-', `^', or `_') placed before them.
222
223           dyn=#(define-event-function (parser location arg) (markup?)
224                    (make-dynamic-script arg))
225           \relative c' { c\dyn pfsss }
226            [image of music]
227
228
229    * A list of ASCII aliases for special characters can be included.
230
231           \paper {
232             #(include-special-characters)
233           }
234           \markup "&bull; &dagger; &copyright; &OE; &ss; &para;"
235            [image of music]
236
237
238    * There is a new `define-scheme-function' command in analogy to
239      `define-music-function' that can be used to define functions
240      evaluating to Scheme expressions while accepting arguments in
241      Lilypond syntax.
242
243    * The construct `#{ ... #}' can now be used not just for
244      constructing sequential music lists, but also for pitches
245      (distinguished from single note events by the absence of a
246      duration or other information that can't be part of a pitch),
247      single music events, void music expressions, post events, markups
248      (mostly freeing users from having to use the `markup' macro),
249      markup lists, number expressions, context definitions and
250      modifications, and a few other things.  If it encloses nothing or
251      only a single music event, it no longer returns a sequential music
252      list but rather a void music expression or just the music event
253      itself, respectively.
254
255    * Pitches can be used on the right side of assignments.  They are
256      distinguished from single note events by the absence of a duration
257      or other information that can't be part of a pitch.
258
259    * New command-line option `--loglevel=LEVEL' to control how much
260      output LilyPond creates. Possible values are ERROR, WARN,
261      BASIC_PROGRESS, PROGRESS, DEBUG.
262
263    * `\once \set' now correctly resets the property value to the
264      previous value.
265
266           [image of music]
267
268
269    * The alignment of dynamic spanners (hairpins, text crescendo, etc.)
270      is now automatically broken if a different direction is explicitly
271      given.
272
273           [image of music]
274
275
276    * Appoggiaturas and acciaccaturas now also work inside a slur, not
277      only inside a phrasing slur. Also, a function `\slashedGrace' was
278      added that does not use a slur from the acciaccatura note.
279
280           [image of music]
281
282
283    * To suppress the line on a crescendo text spanner (and other
284      similar spanners), LilyPond now fully supports the `#'style =
285      #'none' property.
286
287           [image of music]
288
289
290    * LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!
291
292    * Glissandi can now span multiple lines.
293
294
295
296 \1f
297 Local Variables:
298 coding: utf-8
299 End: