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