]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/changes.tely
Documents eliminated stencils.
[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
64 @item
65 Lilypond's stencil commands have been simplified to allow for less code
66 duplication and better height approximations of graphical objects.  The
67 following stencil commands have been eliminated:
68 @itemize
69 @item @code{beam}
70 @item @code{bezier-sandwich}
71 @item @code{bracket}
72 @item @code{dashed-slur}
73 @item @code{dot}
74 @item @code{oval}
75 @item @code{repeat-slash}
76 @item @code{zigzag-line}
77 @end itemize
78
79 @item
80 Flags are now treated as separate objects rather than as stem parts.
81 @lilypond[fragment,quote,relative=2]
82 \override Flag #'color = #red
83 g8
84 @end lilypond
85
86 @item
87 Two alternative methods for bar numbering can be set, especially for
88 when using repeated music;
89
90 @lilypond[fragment,quote,relative=1,noragged-right]
91 \relative c'{
92   \set Score.alternativeNumberingStyle = #'numbers
93   \repeat volta 3 { c4 d e f | }
94     \alternative {
95       { c4 d e f | c2 d \break }
96       { f4 g a b | f4 g a b | f2 a | \break }
97       { c4 d e f | c2 d }
98     }
99   c1 \break
100   \set Score.alternativeNumberingStyle = #'numbers-with-letters
101   \repeat volta 3 { c,4 d e f | }
102     \alternative {
103       { c4 d e f | c2 d \break }
104       { f4 g a b | f4 g a b | f2 a | \break }
105       { c4 d e f | c2 d }
106     }
107   c1
108 }
109 @end lilypond
110
111 @item
112 The following is a fundamental change in LilyPond's music
113 representation: Rhythmic events like @code{LyricEvent} and
114 @code{NoteEvent} are no longer wrapped in @code{EventChord} unless they
115 have been actually entered as part of a chord in the input.  If you
116 manipulate music expressions in Scheme, the new behavior may require
117 changes in your code.  The advantages of making input and music match
118 more closely are numerous: music functions previously worked differently
119 when used inside or outside of chords.  Now they are the same, including
120 all the possibilities of argument parsing.  You can now use music
121 variables inside of chords: a construct like
122 @lilypond[verbatim,quote,ragged-right]
123 tonic=fis'
124 { <\tonic \transpose c g \tonic> }
125 @end lilypond
126 @noindent
127 would have been unthinkable previously.  You can use
128 @code{#@{@dots{}#@}} for constructing chord constituents.  Music
129 functions inside of chords are no longer specially treated and thus
130 accept the same arguments as outside of chords.  @code{\tweak} now works
131 on single notes without needing to wrap them in a chord.  In theory, it
132 can also work on command events and lyrics now.  Since that was not
133 possible before, it depends on luck on a case-by-case basis whether the
134 tweak internals are already receiving the necessary information.  Users
135 are asked to report those cases where they find @code{\tweak} not
136 working according to reasonable expectations.
137
138 @item
139 As one consequence, it was possible to reimplement the repetitive chord
140 entry aid @code{q}.  Repeated chords are now replaced right before
141 interpreting a music expression.  In case the user wants to retain
142 some events of the original chord, he can run the repeat chord
143 replacement function @code{\chordRepeats} manually.
144
145 @item
146 Scheme expressions inside of embedded Lilypond (@code{#@{@dots{}#@}})
147 are now executed in lexical closure of the surrounding Scheme code.
148 @code{$} is no longer special in embedded Lilypond.  It can be used
149 unconditionally in Lilypond code for immediate evaluation, similar to
150 how @code{ly:export} could previously be used.  @code{ly:export} has
151 been removed.  As a consequence, @code{#} is now free to delay
152 evaluation of its argument until the parser actually reduces the
153 containing expression, greatly reducing the potential for premature
154 evaluation.
155
156 @item
157 Support for jazz-like chords has been improved: Lydian and altered
158 chords are recognised; separators between chord modifiers are now
159 treated independently of separators between ``slash'' chords and their
160 bass notes (and by default, slashes are now only used for the latter
161 type of separator); additional pitches are no longer prefixed with
162 ``add'' by default; and the ``m'' in minor chords can be customized.
163 @ruser{Customizing chord names} for more information.
164
165 @item
166 The @code{\markuplines} command has been renamed to @code{\markuplist}
167 for a better match with its semantics and general Lilypond
168 nomenclature.
169
170 @item
171 The interface for specifying string tunings in tablature has been
172 simplified considerably.
173
174 @item
175 Beams can now have their slopes preserved over line breaks.
176 @lilypond[fragment,quote,relative=2]
177 \override Beam #'breakable = ##t
178 a8[ b c d e f g \bar "" \break f e d c b a]
179 \once \override Beam #'positions = #beam::align-with-broken-parts
180 a8[ b c d e f g \bar "" \break f e d c b a]
181 \once \override Beam #'positions = #beam::slope-like-broken-parts
182 a8[ b c d e f g \bar "" \break f e d c b a]
183 @end lilypond
184 To do this, several callback functions are now deprecated.
185 @itemize
186 @item @code{ly:beam::calc-least-squares-positions}
187 @item @code{ly:beam::slope-damping}
188 @item @code{ly:beam::shift-region-to-valid}
189 @end itemize
190 Furthermore, @code{ly:beam::quanting} now takes an additional argument
191 to help calculations over line breaks.  All of these functions are now
192 automatically called when setting the @code{positions} parameter.
193
194 @item
195 In function arguments music, markups and Scheme expressions (as well
196 as several other syntactic entities) have become mostly
197 interchangeable and are told apart only by evaluating the respective
198 predicate.
199
200 @item
201 Music functions (and their close relatives) can now be defined with
202 optional arguments.
203
204 @item
205 For defining commands executed only for their side-effects,
206 @code{define-void-function} is now available.
207
208 @item
209 There is a new @code{define-event-function} command in analogy to
210 @code{define-music-function} that can be used for defining music
211 functions acting as post events without requiring a direction specifier
212 (@code{-}, @code{^}, or @code{_}) placed before them.
213 @lilypond[quote,verbatim,ragged-right]
214 dyn=#(define-event-function (parser location arg) (markup?)
215          (make-dynamic-script arg))
216 \relative c' { c\dyn pfsss }
217 @end lilypond
218
219 @item
220 A list of ASCII aliases for special characters can be included.
221 @lilypond[quote,verbatim]
222 \paper {
223   #(include-special-characters)
224 }
225 \markup "&bull; &dagger; &copyright; &OE; &ss; &para;"
226 @end lilypond
227
228 @item
229 There is a new @code{define-scheme-function} command in analogy to
230 @code{define-music-function} that can be used to define functions
231 evaluating to Scheme expressions while accepting arguments in Lilypond
232 syntax.
233
234 @item
235 The construct @code{#@{ @dots{} #@}} can now be used not just for
236 constructing sequential music lists, but also for single music events,
237 void music expressions, post events, markups (mostly freeing users from
238 having to use the @code{markup} macro), markup lists, number
239 expressions, context definitions and modifications, and a few other
240 things.  If it encloses nothing or only a single music event, it no
241 longer returns a sequential music list but rather a void music
242 expression or just the music event itself, respectively.
243
244 @item
245 New command-line option @option{--loglevel=@var{level}} to control how much output
246 LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEBUG.
247
248 @item
249 @code{\set \once} now correctly resets the property value to the previous value.
250 @lilypond[fragment,quote,relative=2]
251   \set fingeringOrientations = #'(left)
252   <e-1>4
253   \once \set fingeringOrientations = #'(right)
254   <e-1>
255   <e-1>-"left"
256 @end lilypond
257
258 @item
259 The alignment of dynamic spanners (hairpins, text crescendo, etc.) is now
260 automatically broken if a different direction is explicitly given.
261 @lilypond[fragment,quote,relative=2]
262 c4_\< c c^\> c c1_\p
263 @end lilypond
264
265
266 @item
267 Appoggiaturas and acciaccaturas now also work inside a slur, not only inside
268 a phrasing slur. Also, a function @code{\slashedGrace} was added that does
269 not use a slur from the acciaccatura note.
270 @lilypond[fragment,quote,relative=2]
271 c4( \appoggiatura e8 d4 \acciaccatura e8 d4 \slashedGrace e8 c4)
272 @end lilypond
273
274
275 @item
276 To suppress the line on a crescendo text spanner (and other similar spanners),
277 LilyPond now fully supports the @code{#'style = #'none} property.
278 @lilypond[fragment,quote,relative=2]
279 \override DynamicTextSpanner #'style = #'none
280 c4\cresc c c g, c'\p
281 @end lilypond
282
283 @item
284 LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!
285
286 @item
287 Glissandi can now span multiple lines.
288
289 @end itemize
290
291 @ifhtml
292 For older news, go to
293 @uref{http://lilypond.org/doc/v2.14/Documentation/changes/},
294 @uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html},
295 or @uref{../,go back} to the Documentation index.
296
297
298 @end ifhtml
299
300 @bye