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