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