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