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