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