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