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