]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/topdocs/NEWS.tely
Merge branch 'master' into nested-bookparts
[lilypond.git] / Documentation / topdocs / NEWS.tely
1 \input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
2 @setfilename NEWS.info
3 @settitle NEWS
4
5 @ifhtml
6 @macro inputfileref{DIR,NAME}
7 @uref{../../\DIR\/collated-files.html#\NAME\,@file{\DIR\/\NAME\}}@c
8 @end macro
9 @macro usermanref{NAME}
10 @inforef{\NAME\,,../user/lilypond/lilypond}@c
11 @end macro
12 @end ifhtml
13
14 @ifnothtml
15 @macro inputfileref{DIR,NAME}
16 @file{\DIR\/\NAME\}@c
17 @end macro
18 @macro usermanref{NAME}
19 See user manual, \NAME\
20 @end macro
21 @end ifnothtml
22
23 @macro textanchor{NAME}
24 @html
25 <a name="\NAME\"></a>
26 @end html
27 @end macro
28
29
30 @documentencoding utf-8
31 @documentlanguage en
32
33 @finalout
34
35 @node Top
36 @top New features in 2.11 since 2.10
37
38 @ifhtml
39 This document is also available in @uref{NEWS.pdf,PDF}. It's part of
40 the @uref{../,LilyPond Documentation} .
41 @end ifhtml
42
43
44
45
46 @itemize @bullet
47
48 @ignore
49
50 HINTS
51
52 * only show verbatim input for syntax/input changes
53
54 * try to be as brief possible in those cases
55
56 * don't try to provide real-world examples, they often get too big,
57 which scares away people.
58
59 * Write complete sentences.
60
61 * only show user-visible changes. 
62
63 @end ignore
64
65 @item
66 Nested contexts of the same type are now allowed.
67 This deprecates @code{InnerStaffGroup} and @code{InnerChoirStaff}.
68 @lilypond[relative=1]
69 \new StaffGroup <<
70   \new Staff { c1 }
71   \new StaffGroup <<
72     \new Staff { c1 }
73     \new Staff { c1 }
74   >>
75 >>
76 @end lilypond
77
78 @item
79 In addition to the already existing @code{showLastLength} property,
80 @code{showFirstLength} can now be set as well, rendering only the first
81 measures of a piece.  Both properties may be set at the same time:
82 @lilypond[]
83 showFirstLength = R1*2
84 showLastLength = R1*3
85 \relative c' { c1 d e f g a b c }
86 @end lilypond
87
88 @item
89 The file extension for MIDI can be set using the command-line
90 program default @code{midi-extension}.  For Windows, the default
91 extension has been changed to @code{.mid}.
92
93 @item
94 Two variations on the default double repeat bar line are now available.
95 @lilypond[]
96 {
97   \set Score.doubleRepeatType = #":|.:"
98   \repeat volta 2 {
99     c'1
100   }
101   \repeat volta 2 {
102     c'1
103   } 
104   \bar ":|.|:"
105   c'1
106 }
107 @end lilypond
108
109 @item
110 Four automatic accidentals rules have been added: @code{neo-modern},
111 @code{neo-modern-cautionary}, @code{dodecaphonic} and @code{teaching}.
112 The following example illustrates @code{neo-modern} rule.
113 @lilypond[]
114 notes = {
115   <<
116     \relative c' {
117       cis'8 fis, d'4 <a cis>8 f bis4 |
118       cis2. <c, fis>4 |
119     }
120     \\
121     \relative c' {
122       ais'2 cis, |
123       fis8 b a4 cis2 |
124     }
125   >>
126 }
127
128 \new Staff {
129   #(set-accidental-style 'neo-modern)
130   \notes
131 }
132 @end lilypond
133
134 @item
135 Flags can now be generated with Scheme-code using the @code{'flag}
136 @code{Stem} grob property.  Existing scores will work without change.
137 @lilypond[]
138 testnotes = {
139   \autoBeamOff
140   c'8 d'16 c''8 d''16
141 }
142
143 #(define (inverted-flag stem-grob)
144   (let* ((dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u"))
145          (flag (retrieve-glyph-flag "" dir "" stem-grob))
146          (line-thickness (ly:staff-symbol-line-thickness stem-grob))
147          (stem-thickness (ly:grob-property stem-grob 'thickness))
148          (stem-width (* line-thickness stem-thickness))
149          (stroke-style (ly:grob-property stem-grob 'stroke-style))
150          (stencil (if (null? stroke-style) flag
151                          (add-stroke-glyph flag stem-grob dir stroke-style "")))
152                          (rotated-flag (ly:stencil-rotate-absolute stencil 180 0 0)))
153     (ly:stencil-translate rotated-flag (cons (- (/ stem-width 2))  0))))
154
155 #(define-public (weight-flag stem-grob)
156   (let* ((log (- (ly:grob-property stem-grob 'duration-log) 2))
157          (is-up (eqv? (ly:grob-property stem-grob 'direction) UP))
158          (yext (if is-up (cons (* log -0.8) 0) (cons 0 (* log 0.8))))
159          (flag-stencil (make-filled-box-stencil '(-0.4 . 0.4) yext))
160          (stroke-style (ly:grob-property stem-grob 'stroke-style))
161          (stroke-stencil (if (equal? stroke-style "grace")
162              (make-line-stencil 0.2 -0.9 -0.4 0.9 -0.4)
163              empty-stencil)))
164     (ly:stencil-add flag-stencil stroke-stencil)))
165
166 {
167   \time 3/8
168   \override Stem #'flag = #weight-flag
169   \testnotes
170
171   \override Stem #'flag = #inverted-flag
172   \testnotes
173 }
174 @end lilypond
175
176 @item
177 Harp pedalling diagrams were added:
178
179 @lilypond[]
180 \markup { \harp-pedal #"^v-|vv-o^" }
181 @end lilypond
182
183 @item
184 Predefined, user-configurable, transposable fret diagrams
185 are now available in the @code{FretBoards} context:
186 @lilypond[]
187 \include "predefined-guitar-fretboards.ly"
188 <<
189   \new ChordNames {
190     \chordmode {
191       c1
192       \transpose c e { c }
193     }
194   }
195   \new FretBoards {
196     \chordmode {
197       c1
198       \transpose c e { c }
199     }
200   }
201 >>
202 @end lilypond
203
204 @item
205 The following syntax changes were made, in chronological order. In
206 addition, fret diagram properties have been moved to
207 @code{fret-diagram-details}, and the @code{#'style} property is
208 used to select solid/dashed lines instead of @code{#'dash-fraction}.
209
210 @example
211 'break-align-symbol -> 'break-align-symbols
212 scripts.caesura -> scripts.caesura.curved
213 \setEasyHeads -> \easyHeadsOn
214 \easyHeadsOff (new command)
215 \fatText -> \textLengthOn
216 \emptyText -> \textLengthOff
217 \set hairpinToBarline -> \override Hairpin #'to-barline
218 \compressMusic -> \scaleDurations
219 \octave -> \octaveCheck
220 \arpeggioUp -> \arpeggioArrowUp
221 \arpeggioDown -> \arpeggioArrowDown
222 \arpeggioNeutral -> \arpeggioNormal
223 \setTextCresc -> \crescTextCresc
224 \setTextDecresc -> \dimTextDecresc
225 \setTextDecr -> \dimTextDecr
226 \setTextDim -> \dimTextDim
227 \setHairpinCresc -> \crescHairpin
228 \setHairpinDecresc -> \dimHairpin
229 \sustainUp -> \sustainOff
230 \sustainDown -> \sustainOn
231 \sostenutoDown -> \sostenutoOn
232 \sostenutoUp -> \sostenutoOff
233 'infinite-spacing-height -> 'extra-spacing-height
234 #(set-octavation oct) -> \ottava #oct
235 \put-adjacent markup axis dir markup -> \put-adjacent axis dir markup markup
236 \pointAndClickOn (new command)
237 \pointAndClickOff (new command)
238 \center-align -> \center-column
239 \hcenter -> \center-align
240 printallheaders -> print-all-headers
241 \bigger -> \larger (already existing command)
242 systemSeparatorMarkup -> system-separator-markup
243 @end example
244
245 @noindent
246 Moreover, some files in the @code{ly/} directory have been renamed;
247 the *-init.ly filenames are now only used for files that are automatically
248 included, while such files as @code{makam-init.ly} or @code{gregorian-init.ly}
249 have been renamed to @code{makam.ly} or @code{gregorian.ly}.
250
251 @item
252 Metronome marks can now also contain a textual description.  The
253 duration and count (if given) are shown in parentheses after the text.
254
255 @lilypond[]
256 {
257   \tempo "Fast"
258   c'4 c' c' c'
259   c'4 c' c' c'
260   \tempo "Andante" 4 = 120
261   c'4 c' c' c'
262   c'4 c' c' c'
263   \tempo 4 = 100
264   c'4 c' c' c'
265   c'4 c' c' c'
266   \tempo "" 4 = 30
267   c'4 c' c' c'
268   c'4 c' c' c'
269 }
270 @end lilypond
271
272 @item
273 In figured bass you can now also use a backslash through a number to
274 indicate a raised 6th step.
275
276 @lilypond[]
277 \new FiguredBass \figuremode { < 6\\ 5\\ > < 6/ > }
278 @end lilypond
279
280 @item
281 Arpeggios may now use ``parenthesis'' style brackets:
282
283 @lilypond[relative=1]
284 \override Arpeggio #'stencil = #ly:arpeggio::brew-chord-slur
285
286 % Note: does not work for cross-staff arpeggios.
287 \override Arpeggio #'X-extent = #ly:grob::stencil-width
288 <c g' c>2\arpeggio ~ c
289 @end lilypond
290
291 @item
292 Single-system scores are now naturally spaced instead of being
293 stretched to fill the line width.  This can be changed by setting
294 @code{ragged-right = ##f}.
295
296 @item
297 Enclosing text within boxes with rounded corners is now possible,
298 using the @code{\rounded-box} markup command.
299
300 @item
301 @command{lilypond-book} can run any program instead of @command{latex}
302 to guess the line width, thanks to @code{--latex-program} command line
303 option.
304
305 @item
306 Underlining is now possible with the @code{\underline} markup command.
307
308 @item
309 It is now possible to specify, using the @code{page-count} variable in
310 the paper block, the number of pages that will be used.
311
312 @item
313 A new page breaking function, @code{ly:minimal-breaking}, is dedicated
314 to books with many pages or a lot of text.
315
316 @item
317 A table of contents is included using @code{\markuplines \table-of-contents}.
318 Elements are added to it using the @code{\tocItem} command.
319
320 @item
321 Text spreading over several pages is entered using the
322 @code{\markuplines} keyword.  Builtin markup list commands, such as
323 @code{\justified-lines} or @code{\wordwrap-lines} may be used, and new
324 ones created using the @code{define-markup-list-command} Scheme macro.
325
326 @item
327 Particular points of a book may be marked with the @code{\label}
328 command.  Then, the page where these points are placed can be
329 referred to using the @code{\page-ref} markup command.
330
331 @item
332 Page breaking and page turning commands (@code{\pageBreak},
333 @code{\noPageBreak}, etc.) can be used at top-level, between scores and
334 top-level markups.
335
336 @item
337 The following options are now changed as a @code{-d} sub-option:
338 @code{--backend}, @code{--safe}, @code{--preview} and
339 @code{--no-pages} (which became @code{-dno-print-pages}).  The @code{-b}
340 option does not exist any more.
341
342 @item
343 Improved testing procedures now catch changes in CPU and memory
344 performance, page layout, MIDI results and warnings.  This helps to
345 reduce the number of regression errors during development, resulting
346 in more stable releases.
347
348 See @uref{INSTALL.html#Testing-LilyPond} for more information.
349
350 @item
351 Nested properties, such as @code{'details} in @code{Slur}, can be
352 reverted as well.  The syntax for this is
353
354 @example
355 \revert Slur #'(details closeness-factor)
356 @end example
357
358 @item
359 All line spanners are more flexible now in the configuration of
360 their end points.  This includes glissando, voice followers, text
361 crescendos and other text spanners.  The old syntax for setting
362 text on line spanners is no longer valid.
363
364 @lilypond[]
365 \relative c'' {
366   \override Glissando #'bound-details #'right #'text = \markup { \center-align \bold down }
367   \override Glissando #'bound-details #'right #'Y = #-4
368   \override Glissando #'bound-details #'right #'padding = #0.0
369   \override Glissando #'bound-details #'left #'arrow = ##t
370   \override Glissando #'bound-details #'left #'padding = #3.0
371   \override Glissando #'style = #'trill
372   \override Glissando #'springs-and-rods = #ly:spanner::set-spacing-rods
373   \override Glissando #'minimum-length = #12
374   
375   c1 \glissando c'
376 }
377 @end lilypond
378
379 This feature was sponsored by Trevor Bača.
380
381 @item
382 The environment variable @code{LILYPONDPREFIX} has been renamed
383 @code{LILYPOND_DATADIR}.
384
385 @item
386 Notes or rests, such as a typical end note, that fill an entire
387 measure are preceded by some more space.
388
389 @lilypond[relative=1]
390 \time 4/4
391 s1
392 c2. c4
393 \time 3/4
394 c2.
395 @end lilypond
396
397 @item
398 All @code{\score}s in a lilypond-book fragment are now inserted
399 into the document.  Also, toplevel markups don't result in an entire
400 page.
401
402 @item
403 Alterations (such as a sharp or flat) may now be arbitrary
404 fractions.  This allows some forms of microtonal music.  For example,
405 Turkish makam music uses 1/9th tone alterations.
406
407 @lilypondfile{makam-example.ly}
408
409 @item
410 Tie directions may be set with @code{^~} and @code{_~}.
411
412 @item
413 Tablature now supports harmonics and slides:
414
415 @lilypond[relative=1]
416 \new TabVoice {
417   <c g'\harmonic>4 d\2\glissando e2\2
418 }
419 @end lilypond
420
421 This feature was sponsored by Mike Amundsen
422
423 @item
424 Horizontal spacing now follows object outlines more accurately.
425 This allows tighter horizontal spacing.
426
427 @lilypond[]
428 {
429   \stemUp
430   c''4... ceses'! s16
431 }
432 @end lilypond
433
434 @item
435 Objects that belong outside of the staff are now positioned
436 automatically to avoid collisions.
437
438 @lilypond[relative=1]
439 c''4
440 \once \override TextScript #'self-alignment-X = #CENTER
441 a,4^"this doesn't collide with the c"
442 b4^"this goes above the previous markup"
443 a8_"this goes below the dynamic"
444 a8\f
445 @end lilypond
446
447 @item
448 Staves are spaced vertically using a skyline algorithm.  This helps
449 prevent uneven vertical spacing.
450
451 @lilypond[ragged-right]
452
453 %% todo: fix 'landscape PDF.
454 #(set-default-paper-size "a6")
455 \header {
456   tagline = ##f
457 }
458
459 \book {
460   \score {
461     {
462       a,,1
463       a'4 b' c'' d'' \break
464       \repeat unfold 2 { a'4 b' c'' d''}
465       b''''1
466     }
467   }
468 }
469 @end lilypond
470
471 @end itemize
472
473
474
475 @ifhtml
476 For older news, go to
477 @uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS.html},
478 or @uref{../,go back} to the Documentation index.
479
480
481 @end ifhtml
482
483 @bye