]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/changes.tely
Documentation for cross staff stems
[lilypond.git] / Documentation / changes.tely
1 \input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
2 @setfilename lilypond-changes.info
3 @settitle LilyPond Changes
4
5 @include macros.itexi
6
7 @ifhtml
8 @macro inputfileref{DIR,NAME}
9 @uref{../../\DIR\/collated-files.html#\NAME\,@file{\DIR\/\NAME\}}@c
10 @end macro
11 @macro usermanref{NAME}
12 @inforef{\NAME\,,../user/lilypond/lilypond}@c
13 @end macro
14 @end ifhtml
15
16 @ifnothtml
17 @macro inputfileref{DIR,NAME}
18 @file{\DIR\/\NAME\}@c
19 @end macro
20 @macro usermanref{NAME}
21 See user manual, \NAME\
22 @end macro
23 @end ifnothtml
24
25 @macro textanchor{NAME}
26 @html
27 <a name="\NAME\"></a>
28 @end html
29 @end macro
30
31
32 @documentencoding utf-8
33 @documentlanguage en
34 @afourpaper
35
36 @finalout
37
38 @node Top
39 @top New features in 2.16 since 2.14
40
41 @allowcodebreaks false
42
43 @itemize
44
45 @ignore
46
47 HINTS
48
49 * add new items at the top
50
51 * only show verbatim input for syntax/input changes
52
53 * try to be as brief possible in those cases
54
55 * don't try to provide real-world examples, they often get too big,
56 which scares away people.
57
58 * Write complete sentences.
59
60 * only show user-visible changes.
61
62 @end ignore
63 @item
64 Support for cross-staff stems on chords, using @code{crossStaff}
65 and the @code{Span_stem_engraver}.  This calculates the length of
66 cross-staff stems automatically.
67 @lilypondfile[quote]
68 {cross-staff-stems.ly}
69
70 @item
71 The syntax of words (character sequences recognized without enclosing
72 quotes) and commands (now always a backslash @samp{\} followed by a
73 word) has been unified across all modes: it now consists of alphabetic
74 characters, possibly enclosing isolated dashes @samp{-} and underlines
75 @samp{_}.
76
77 As one consequence, using unquoted text scripts like (literally!)
78 @example
79 @{ c-script c\f_script @}
80 @end example
81 will now tend to result in invalid music.  Omitting quote marks
82 for arbitrary text rather than keywords has never been good practice or
83 even documented, and it is unlikely to have seen significant use.
84
85 Staying with established conventions (like not using dashes or
86 underlines for command names intended to be used inside of music)
87 remains advisable.  The reason for this change is more robust
88 recognition of LilyPond's lexical units for LilyPond itself as well as
89 external tools interpreting its syntax.
90
91 @item
92 Support for Kievan square notation:
93 @lilypond[quote,relative=1,verbatim]
94 \new KievanVoice {
95   \cadenzaOn
96   c d e f g a bes
97   \bar "kievan"
98 }
99 @end lilypond
100
101 @item
102 Augmentation dots now avoid the other voice in two-voice polyphony
103 so that users can move the @code{Dot_column_engraver} to set dots
104 independently for each @code{Voice}.
105 @lilypond[quote]
106 \layout {
107   \context {
108     \Staff
109     \remove Dot_column_engraver
110   } \context {
111     \Voice
112     \consists Dot_column_engraver
113   }
114 }
115 \relative c'' <<
116   { \time 6/8
117     <d f g>4. <d f g> <f, g> b
118   } \\ {
119     <f g b>4. <g b d> <b d> <e, g>
120   } >>
121 @end lilypond
122
123 @item
124 A Scheme function to adjust the control points of curves such as slurs
125 and ties, developed by several users, is now included in LilyPond.
126 @lilypond[quote,verbatim,relative=2]
127 g8->( bes,-.) d4
128 \shape Slur #'((-0.5 . 1.5) (-3 . 0) (0 . 0) (0 . 0))
129 g8->( bes,!-.) d4
130 @end lilypond
131
132 @item
133 Use of @code{\tempo} specifications in @code{\midi} blocks (removed in
134 2.9.16 in favor of explicit @code{tempoWholesPerMinute} settings) has
135 seen a revival: now any kind of property-setting music is turned into
136 context definitions within output specifications, allowing for
137 declarations like
138 @example
139 \layout @{ \accidentalStyle modern @}
140 \midi @{ \tempo 4. = 66 @}
141 @end example
142
143 @item
144 The LilyPond G clef has been redesigned - upper loop is now more balanced,
145 bottom crook sticks out less and the "spine" (main vertical line) is more
146 evenly curved. The old and new versions can be compared by looking at the
147 documentation:
148 @uref{http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#clef-glyphs, old version},
149 @uref{http://lilypond.org/doc/v2.15/Documentation/notation/the-feta-font.html#clef-glyphs, new version}.
150
151 @item
152 Lilypond's stencil commands have been simplified to allow for less code
153 duplication and better height approximations of graphical objects.  The
154 following stencil commands have been eliminated:
155 @itemize
156 @item @code{beam}
157 @item @code{bezier-sandwich}
158 @item @code{bracket}
159 @item @code{dashed-slur}
160 @item @code{dot}
161 @item @code{oval}
162 @item @code{repeat-slash}
163 @item @code{zigzag-line}
164 @end itemize
165
166 @item
167 Flags are now treated as separate objects rather than as stem parts.
168 @lilypond[fragment,quote,relative=2]
169 \override Flag #'color = #red
170 g8
171 @end lilypond
172
173 @item
174 Two alternative methods for bar numbering can be set, especially for
175 when using repeated music;
176
177 @lilypond[fragment,quote,relative=1,noragged-right]
178 \relative c'{
179   \set Score.alternativeNumberingStyle = #'numbers
180   \repeat volta 3 { c4 d e f | }
181     \alternative {
182       { c4 d e f | c2 d \break }
183       { f4 g a b | f4 g a b | f2 a | \break }
184       { c4 d e f | c2 d }
185     }
186   c1 \break
187   \set Score.alternativeNumberingStyle = #'numbers-with-letters
188   \repeat volta 3 { c,4 d e f | }
189     \alternative {
190       { c4 d e f | c2 d \break }
191       { f4 g a b | f4 g a b | f2 a | \break }
192       { c4 d e f | c2 d }
193     }
194   c1
195 }
196 @end lilypond
197
198 @item
199 The following is a fundamental change in LilyPond's music
200 representation: Rhythmic events like @code{LyricEvent} and
201 @code{NoteEvent} are no longer wrapped in @code{EventChord} unless they
202 have been actually entered as part of a chord in the input.  If you
203 manipulate music expressions in Scheme, the new behavior may require
204 changes in your code.  Calling the music function @code{\eventChords} or
205 the Scheme function @code{event-chord-wrap!}  converts to the old
206 representation; using one of those might be easiest for keeping legacy
207 code operative.
208
209 The following three items are consequences of this change.
210
211 @item
212 The repetitive chord entry aid @code{q} has been reimplemented.
213 Repeated chords are now replaced right before interpreting a music
214 expression.  In case the user wants to retain some events of the
215 original chord, he can run the repeat chord replacement function
216 @code{\chordRepeats} manually.
217
218 @item
219 String numbers and right hand fingerings on single notes now appear
220 without having to be written inside of chord brackets.
221
222 @item
223 Music functions now work the same when used inside or outside of chords,
224 including all the possibilities of argument parsing.  Music variables
225 can be used inside of chords: a construct like
226 @lilypond[verbatim,quote,ragged-right]
227 tonic=fis'
228 { <\tonic \transpose c g \tonic> }
229 @end lilypond
230 @noindent
231 now works as expected.  One can use @code{#@{@dots{}#@}} for
232 constructing chord constituents.  @code{\tweak} now works on single
233 notes without needing to wrap them in a chord.  Using it on command
234 events and lyrics is now possible, but not likely to give results yet.
235
236 @item
237 @code{\tweak} now takes an optional layout object specification.  It can
238 be used for tweaking layout objects that are only indirectly caused by
239 the tweaked event, like accidentals, stems, and flags:
240
241 @lilypond[verbatim,quote,ragged-right,relative=2]
242 <\tweak Accidental #'color #red   cis4
243  \tweak Accidental #'color #green es
244                                   g>
245 @end lilypond
246
247 @item
248 Scheme expressions inside of embedded Lilypond (@code{#@{@dots{}#@}})
249 are now executed in lexical closure of the surrounding Scheme code.
250 @code{$} is no longer special in embedded Lilypond.  It can be used
251 unconditionally in Lilypond code for immediate evaluation of Scheme
252 expressions, similar to how @code{ly:export} could previously be used.
253 @code{ly:export} has been removed.  As a consequence, @code{#} is now
254 free to delay evaluation of its argument until the parser actually
255 reduces the containing expression, greatly reducing the potential for
256 premature evaluation.  There are also @q{splicing} operators @code{$@@}
257 and @code{#@@} for interpreting the members of a list individually.
258
259 @item
260 To reduce the necessity for using @code{$}, Scheme expressions written
261 with @code{#} are interpreted as music inside of music lists, and as
262 markups or markup lists inside of markups.
263
264 @item
265 Support for jazz-like chords has been improved: Lydian and altered
266 chords are recognised; separators between chord modifiers are now
267 treated independently of separators between ``slash'' chords and their
268 bass notes (and by default, slashes are now only used for the latter
269 type of separator); additional pitches are no longer prefixed with
270 ``add'' by default; and the ``m'' in minor chords can be customized.
271 @ruser{Customizing chord names} for more information.
272
273 @item
274 The @code{\markuplines} command has been renamed to @code{\markuplist}
275 for a better match with its semantics and general Lilypond
276 nomenclature.
277
278 @item
279 The interface for specifying string tunings in tablature has been
280 simplified considerably and employs the scheme function
281 @code{\stringTuning} for most purposes.
282
283 @item
284 Beams can now have their slopes preserved over line breaks.
285 @lilypond[fragment,quote,relative=2]
286 \override Beam #'breakable = ##t
287 a8[ b c d e f g \bar "" \break f e d c b a]
288 \once \override Beam #'positions = #beam::align-with-broken-parts
289 a8[ b c d e f g \bar "" \break f e d c b a]
290 \once \override Beam #'positions = #beam::slope-like-broken-parts
291 a8[ b c d e f g \bar "" \break f e d c b a]
292 @end lilypond
293 To do this, several callback functions are now deprecated.
294 @itemize
295 @item @code{ly:beam::calc-least-squares-positions}
296 @item @code{ly:beam::slope-damping}
297 @item @code{ly:beam::shift-region-to-valid}
298 @end itemize
299 Furthermore, @code{ly:beam::quanting} now takes an additional argument
300 to help calculations over line breaks.  All of these functions are now
301 automatically called when setting the @code{positions} parameter.
302
303 @item
304 In function arguments music, markups and Scheme expressions (as well as
305 several other syntactic entities) have become mostly interchangeable and
306 are told apart only by evaluating the respective predicate.  In several
307 cases, the predicate is consulted by the parser, like when deciding
308 whether to interpret @code{-3} as a number or a fingering event.
309
310 @item
311 Music functions (and their close relatives) can now be defined with
312 optional arguments.
313
314 @item
315 For defining commands executed only for their side-effects,
316 @code{define-void-function} is now available.
317
318 @item
319 There is a new @code{define-event-function} command in analogy to
320 @code{define-music-function} that can be used for defining music
321 functions acting as post events without requiring a direction specifier
322 (@code{-}, @code{^}, or @code{_}) placed before them.
323 @lilypond[quote,verbatim,ragged-right]
324 dyn=#(define-event-function (parser location arg) (markup?)
325          (make-dynamic-script arg))
326 \relative c' { c\dyn pfsss }
327 @end lilypond
328
329 @item
330 A list of ASCII aliases for special characters can be included.
331 @lilypond[quote,verbatim]
332 \paper {
333   #(include-special-characters)
334 }
335 \markup "&bull; &dagger; &copyright; &OE; &ss; &para;"
336 @end lilypond
337
338 @item
339 There is a new @code{define-scheme-function} command in analogy to
340 @code{define-music-function} that can be used to define functions
341 evaluating to Scheme expressions while accepting arguments in Lilypond
342 syntax.
343
344 @item
345 The construct @code{#@{ @dots{} #@}} can now be used not just for
346 constructing sequential music lists, but also for pitches (distinguished
347 from single note events by the absence of a duration or other
348 information that can't be part of a pitch), single music events, void
349 music expressions, post events, markups (mostly freeing users from
350 having to use the @code{markup} macro), markup lists, number
351 expressions, context definitions and modifications, and a few other
352 things.  If it encloses nothing or only a single music event, it no
353 longer returns a sequential music list but rather a void music
354 expression or just the music event itself, respectively.
355
356 @item
357 Pitches can be used on the right side of assignments.  They are
358 distinguished from single note events by the absence of a duration or
359 other information that can't be part of a pitch.
360
361 @item
362 New command-line option @option{--loglevel=@var{level}} to control how much output
363 LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEBUG.
364
365 @item
366 @code{\once \set} now correctly resets the property value to the previous value.
367 @lilypond[fragment,quote,relative=2]
368   \set fingeringOrientations = #'(left)
369   <e-1>4
370   \once \set fingeringOrientations = #'(right)
371   <e-1>
372   <e-1>-"left"
373 @end lilypond
374
375 @item
376 The alignment of dynamic spanners (hairpins, text crescendo, etc.) is now
377 automatically broken if a different direction is explicitly given.
378 @lilypond[fragment,quote,relative=2]
379 c4_\< c c^\> c c1_\p
380 @end lilypond
381
382
383 @item
384 Appoggiaturas and acciaccaturas now also work inside a slur, not only inside
385 a phrasing slur. Also, a function @code{\slashedGrace} was added that does
386 not use a slur from the acciaccatura note.
387 @lilypond[fragment,quote,relative=2]
388 c4( \appoggiatura e8 d4 \acciaccatura e8 d4 \slashedGrace e8 c4)
389 @end lilypond
390
391
392 @item
393 To suppress the line on a crescendo text spanner (and other similar spanners),
394 LilyPond now fully supports the @code{#'style = #'none} property.
395 @lilypond[fragment,quote,relative=2]
396 \override DynamicTextSpanner #'style = #'none
397 c4\cresc c c g, c'\p
398 @end lilypond
399
400 @item
401 LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!
402
403 @item
404 Glissandi can now span multiple lines.
405
406 @end itemize
407
408 @ifhtml
409 For older news, go to
410 @uref{http://lilypond.org/doc/v2.14/Documentation/changes/},
411 @uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html},
412 or @uref{../,go back} to the Documentation index.
413
414
415 @end ifhtml
416
417 @bye