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