]> git.donarmstrong.com Git - lilypond.git/blob - NEWS.txt
just output the logfile if there's an error
[lilypond.git] / NEWS.txt
1 New features in 2.16 since 2.14
2 *******************************
3
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.
7
8           [image of music]
9
10
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 `_'.
16
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
22      significant use.
23
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.
29
30    * Support for Kievan square notation:
31
32           \new KievanVoice {
33             \cadenzaOn
34             c d e f g a bes
35             \bar "kievan"
36           }
37            [image of music]
38
39
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'.
43
44           [image of music]
45
46
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
49      LilyPond.
50
51           g8->( bes,-.) d4
52           \shape Slur #'((-0.5 . 1.5) (-3 . 0) (0 . 0) (0 . 0))
53           g8->( bes,!-.) d4
54            [image of music]
55
56
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
61      declarations like
62      \layout { \accidentalStyle modern }
63      \midi { \tempo 4. = 66 }
64
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),
70      new version
71      (http://lilypond.org/doc/v2.15/Documentation/notation/the-feta-font.html#clef-glyphs).
72
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:
76         * `beam'
77
78         * `bezier-sandwich'
79
80         * `bracket'
81
82         * `dashed-slur'
83
84         * `dot'
85
86         * `oval'
87
88         * `repeat-slash'
89
90         * `zigzag-line'
91
92    * Flags are now treated as separate objects rather than as stem
93      parts.
94
95           [image of music]
96
97
98    * Two alternative methods for bar numbering can be set, especially
99      for when using repeated music;
100
101           [image of music]
102
103
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.
113
114      The following three items are consequences of this change.
115
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.
121
122    * String numbers and right hand fingerings on single notes now appear
123      without having to be written inside of chord brackets.
124
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
128
129           tonic=fis'
130           { <\tonic \transpose c g \tonic> }
131            [image of music]
132
133
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.
138
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:
142
143           <\tweak Accidental #'color #red   cis4
144            \tweak Accidental #'color #green es
145                                             g>
146            [image of music]
147
148
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.
159
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.
163
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.
172
173    * The `\markuplines' command has been renamed to `\markuplist' for a
174      better match with its semantics and general Lilypond nomenclature.
175
176    * The interface for specifying string tunings in tablature has been
177      simplified considerably and employs the scheme function
178      `\stringTuning' for most purposes.
179
180    * Beams can now have their slopes preserved over line breaks.
181
182           [image of music]
183
184
185      To do this, several callback functions are now deprecated.
186         * `ly:beam::calc-least-squares-positions'
187
188         * `ly:beam::slope-damping'
189
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.
194
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.
201
202    * Music functions (and their close relatives) can now be defined with
203      optional arguments.
204
205    * For defining commands executed only for their side-effects,
206      `define-void-function' is now available.
207
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.
212
213           dyn=#(define-event-function (parser location arg) (markup?)
214                    (make-dynamic-script arg))
215           \relative c' { c\dyn pfsss }
216            [image of music]
217
218
219    * A list of ASCII aliases for special characters can be included.
220
221           \paper {
222             #(include-special-characters)
223           }
224           \markup "&bull; &dagger; &copyright; &OE; &ss; &para;"
225            [image of music]
226
227
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
231      Lilypond syntax.
232
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.
244
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.
248
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.
252
253    * `\once \set' now correctly resets the property value to the
254      previous value.
255
256           [image of music]
257
258
259    * The alignment of dynamic spanners (hairpins, text crescendo, etc.)
260      is now automatically broken if a different direction is explicitly
261      given.
262
263           [image of music]
264
265
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.
269
270           [image of music]
271
272
273    * To suppress the line on a crescendo text spanner (and other
274      similar spanners), LilyPond now fully supports the `#'style =
275      #'none' property.
276
277           [image of music]
278
279
280    * LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!
281
282    * Glissandi can now span multiple lines.
283
284
285
286 \1f
287 Local Variables:
288 coding: utf-8
289 End: