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