]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/changes.tely
Add midi regression tests to output-distance compare.
[lilypond.git] / Documentation / changes.tely
1 \input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
2 @setfilename lilypond-changes.info
3 @settitle LilyPond Changes
4
5 @include macros.itexi
6
7 @ifhtml
8 @macro inputfileref{DIR,NAME}
9 @uref{../../\DIR\/collated-files.html#\NAME\,@file{\DIR\/\NAME\}}@c
10 @end macro
11 @macro usermanref{NAME}
12 @inforef{\NAME\,,../user/lilypond/lilypond}@c
13 @end macro
14 @end ifhtml
15
16 @ifnothtml
17 @macro inputfileref{DIR,NAME}
18 @file{\DIR\/\NAME\}@c
19 @end macro
20 @macro usermanref{NAME}
21 See user manual, \NAME\
22 @end macro
23 @end ifnothtml
24
25 @macro textanchor{NAME}
26 @html
27 <a name="\NAME\"></a>
28 @end html
29 @end macro
30
31
32 @documentencoding utf-8
33 @documentlanguage en
34 @afourpaper
35
36 @finalout
37
38 @node Top
39 @top New features in 2.13 since 2.12
40
41 @allowcodebreaks false
42
43 @itemize @bullet
44
45 @ignore
46
47 HINTS
48
49 * add new items at the top
50
51 * only show verbatim input for syntax/input changes
52
53 * try to be as brief possible in those cases
54
55 * don't try to provide real-world examples, they often get too big,
56 which scares away people.
57
58 * Write complete sentences.
59
60 * only show user-visible changes.
61
62 @end ignore
63
64 @item
65 Lilypond typesets woodwind fingering charts.
66 @lilypond
67 \relative c' {
68   \textLengthOn
69   des1^\markup {
70     \woodwind-diagram #'bassoon #'((lh . (thumb-cis))
71                                    (cc . (one two three five six))
72                                    (rh . (f)))
73     } _"bassoon"
74   c1^\markup {
75     \woodwind-diagram #'oboe #'((rh . (c))
76                                 (lh . ())
77                                 (cc . (one two three four five six)))
78     } _"oboe"
79
80 }
81 @end lilypond
82
83 @item
84 MIDI output has been improved
85 @itemize @bullet
86 @item voices are kept separated, which makes the MIDI much more useful for postprocessing
87 @item optimal channel distribution: identical instruments share the same channel.  This means that e.g. for a full orchestral score there are always 16 (15 plus percussion) diffently sounding instruments available, unrestricted by the number of staves or voices.
88 @item dynamics are now rendered as note velocities, no longer as midi dynamics.  This improves the sound on [high end] midi renderers.
89 @end itemize
90
91 @item
92 MIDI-import through Midi2ly is improved
93 @itemize @bullet
94 @item Midi2ly now also works on Windows systems
95 @item MIDI-files with more than 32 tracks are now handled
96 @item notes on certain simultaneous voices no longer ignored
97 @item notes overrunning a bar line are no longer truncated
98 @item initial key signature and time signature are respected
99 @item a problem with octaves in subsequent tracks/voices is fixed
100 @item initial support for multiple voices notated on one staff
101 @item the instrumentName is set from track data
102 @item new --skip option, rests are displayed by default
103 @item rests overrunning a bar line are not truncated
104 @item new --include-header option for setting titles
105 @item new --preview option for big MIDI-files
106 @end itemize
107 The first feature was sponsored by Valentin Villenave,
108 the other features were sponsored by Image-Line Software for FL Studio.
109
110 @item
111 A new @code{Completion_rest_engraver} is available for automatically
112 converting long rests which overrun bar lines, matching the
113 @code{Completion_heads_engraver} for notes
114 @example
115 \layout @{
116   \context @{
117     \Voice
118     \remove "Note_heads_engraver"
119     \consists "Completion_heads_engraver"
120     \remove "Rest_engraver"
121     \consists "Completion_rest_engraver"
122   @}
123 @}
124 @end example
125 This feature was sponsored by Image-Line Software for FL Studio.
126
127 @item
128 Dots can be added to the table of contents items using:
129 @example
130 \paper @{
131   tocItemMarkup = \tocItemWithDotsMarkup
132 @}
133 @end example
134
135 @item
136 New markup commands @code{\pattern} and @code{\fill-with-pattern} are available.
137 @lilypond
138 \markup \column {
139   \pattern #3 #Y #0.3 \flat
140   \null
141   \pattern #7 #X #2 \flat
142   \override #'(line-width . 40) \fill-with-pattern #1 #CENTER . left right
143 }
144 @end lilypond
145
146 @item
147 A minimal composer toolkit of modal transformations is provided.
148 A motif may be @notation{transposed}, @notation{inverted} and/or
149 converted to its @notation{retrograde} within any scale.
150
151 @lilypond
152 pentatonicScale = \relative a' { a c d f g }
153 motif = \relative c'' { d8 c f,4 <a f'> <a f'> }
154
155 \new Staff <<
156   {
157     \partial 4
158     \pentatonicScale
159     \motif
160     \modalTranspose c a, \pentatonicScale \motif
161     \modalInversion d'' a' \pentatonicScale \motif
162     \retrograde \motif
163   }
164   {
165     \partial 4
166     s4^"pentatonic scale"
167     s1
168     s1^"motif"
169     s1^"transposition"
170     s1^"inversion"
171     s1^"retrograde"
172   }
173 >>
174 @end lilypond
175
176 @item
177 Black mensural notation has minimal support.
178
179 @item
180 Support for obliqua shapes within white mensural ligatures enhanced.
181 @lilypond
182 \context MensuralStaff
183 {
184   \clef "petrucci-c3"
185   \[
186     \override NoteHead #'style = #'semipetrucci
187     c'\maxima
188     \override NoteHead #'style = #'blackpetrucci
189     a\breve
190     \revert NoteHead #'style
191     \override NoteHead #'ligature-flexa = ##t
192     \override NoteHead #'flexa-width = #3
193     g
194     g'
195     \override NoteHead #'flexa-width = #5
196     c'
197     d'
198     \revert NoteHead #'style
199     c'\longa
200   \]
201 }
202 @end lilypond
203
204 @item
205 Compound time signatures are now supported by the @code{\compoundMeter} command,
206 which can be used instead of @code{\time}:
207 @lilypond
208 \relative c'' {
209   \compoundMeter #'(3 1 8)
210   c8 c c c
211   \compoundMeter #'((2 8) (5 8))
212   c8 c c c c c c
213   \compoundMeter #'((1 2 3 8) (1 4) (3 8))
214   c8 c c c c c c4 c8 c c
215 }
216 @end lilypond
217
218 @item
219 Lyrics above a staff must have their @code{staff-affinity} set to
220 @code{DOWN} or must have their @code{alignAboveContext} property
221 set in order to be properly aligned.  For more information, see
222 @ruser{Placing lyrics vertically}.
223
224 @item
225 @code{stringTunings} property values have changed from a list of
226 semitones above middle C to a list of LilyPond pitch values.
227 convert-ly will handle the change automatically where the value
228 of @code{stringTunings} is set to a Scheme constant value.
229
230 New commands @code{makeStringTuning} and @code{contextStringTuning}
231 allow the creation of string tunings in the form of a Lilypond
232 chord construct.
233
234 @item
235 By using @code{\cueDuringWithClef}, cue notes can now also have their own
236 clef, which is correctly reset at the end of the cue notes.  At the begin
237 of each line, the standard clef is still displayed, but the cue clef is
238 shown after the time/key signature in smaller size.
239 @lilypond
240 vI = \relative c'' { \clef "treble" \repeat unfold 40 g4 }
241 \addQuote vIQuote { \vI }
242
243 Solo = \relative c {
244   \clef "bass"
245   \cueDuringWithClef #"vIQuote" #DOWN #"treble" { R1 } |
246   c4 \cueDuringWithClef #"vIQuote" #DOWN #"treble" {
247     r4 r2 |
248     r4
249   } c4 c2 |
250   \cueDuringWithClef #"vIQuote" #DOWN "soprano" { R1*2 \break R1 } |
251   c1
252 }
253
254 \score {
255   <<
256     \new Staff \new Voice \Solo
257   >>
258 }
259 @end lilypond
260
261
262 @item
263 Note names can be selected with a new
264 @code{@bs{}language "italiano"} command, which
265 can be used in safe mode.  The old
266 @code{@bs{}include "italiano.ly"} syntax is
267 still supported for now, but will be deprecated
268 in the future.
269
270 @item
271 autobeaming is now disabled by @code{\cadenzaOn} and enabled by
272 @code{\cadenzaOff}.  Beaming in cadenzas should be indicated manually.
273 Also, if a cadenza is used in a piece with autobeaming disabled, it
274 will need to be disabled again after the cadenza.
275
276 @item
277 The user is now able to specify the name of the predefined fretboard
278 table.  This allows the use of multiple tables, with switching between them
279 based on user input.
280
281 @item
282 The part-combiner's decision to combine/not combine notes can now be customized
283 @lilypond[quote,relative=2]
284 \partcombine
285 \relative c' { c2 \partcombineApart c | \partcombineChordsOnce e' e }
286 \relative c' { c2 \partcombineApart c | c c }
287 @end lilypond
288
289 @item
290 Tablature staves show fret numbers only by default. To get the
291 former style, @code{\tabFullNotation} is provided.
292
293 @item
294 Funk-style and Walker-style shape notes have been added.
295
296 @item
297 Rests will no longer keep a staff alive if @code{\RemoveEmptyStaffContext}
298 is used.
299
300 @item
301 New option @code{-dinclude-settings=INCLUDEFILE.ly}, which causes lilypond
302 to include the given file before the score is processed. This allows the
303 user to change global settings without the need to change the score itself.
304 That way, several different editions/version (e.g. different page sizes)
305 can be generated from a file without having to modify the score for each
306 version.
307
308 @item
309 The autobeaming settings syntax has been changed.  beatLength,
310 beatGrouping, beamSettings, and measureGrouping have all been eliminated.
311 Autobeaming is now controlled by baseMoment, beatStructure, and
312 beamExceptions.  Default settings for each of these properties can be
313 stored for any time signature in time-signature-settings, so that
314 when the time signature is changed, the autobeaming will automatically
315 change.  The new syntax should be much easier and require fewer
316 overrides.
317
318 @item
319 The SVG backend has optional support for
320 @uref{http://www.w3.org/Submission/WOFF, WOFF fonts}.  Using the Scheme
321 option @code{-d svg-woff} together with the SVG backend selection
322 @code{-d backend=svg}, produces SVG output with CSS WOFF font selection.
323
324 @item
325 The LilyPond G clef has been rotated 1.5 degrees clockwise for improved
326 balance.  The old and new versions can be compared by looking at the
327 documentation:
328 @uref{http://lilypond.org/doc/v2.12/Documentation/user/lilypond/The-Feta-font.html#Clef-glyphs,
329 old version},
330 @uref{http://lilypond.org/doc/v2.13/Documentation/notation/the-feta-font.html#Clef-glyphs,
331 new version}.
332
333
334 @item
335 Text crescendo spanners can now be added directly using @code{\cresc},
336 @code{\dim} and @code{\decresc}.
337 @lilypond[quote,relative=2]
338 c4\cresc c c c\f |
339 c4\dim c c c\!
340 @end lilypond
341
342
343 @item
344 The documented syntax of @samp{lilypond} environments in the @LaTeX{}
345 mode of @command{lilypond-book} has been changed to conform with
346 standard @LaTeX{} syntax: options now come after the environment name:
347 @example
348 \begin@{lilypond@}[@var{options}] @dots{}
349 @end example
350
351 The previous syntax with options after @samp{\begin} is still accepted
352 by @command{lilypond-book} but deprecated.  Something like
353 @example
354 sed -i '/begin\[/s/begin\(\[[^]]*]\)\(@{lilypond@}\)/begin\2\1/'
355 @end example
356
357 might do the trick for conversion.
358
359 @item
360 Aesthetics of shape note heads have been enhanced.  Variable line thicknesses
361 have been implemented.  All note widths have been made consistent.
362 Minor shape note commands that use the relative major key for scale steps
363 have been added.
364
365 @item
366 A variant of the Segno sign is provided:
367 @lilypond[quote,relative=2]
368 c4 d e f \bar "S"
369 g4 f e d
370 @end lilypond
371
372 @item
373 Context modifications (@code{\with} blocks) can be stored in variables and
374 inserted into contexts or other @code{\with} blocks:
375 @lilypond[quote,verbatim]
376 coloredheads = \with { \override NoteHead #'color = #red }
377 noclef = \with { \remove "Clef_engraver" }
378 \score {
379   \new Staff {
380     \new Voice \with { \coloredheads } \relative c' { c4 e g c }
381   }
382   \layout {
383     \context {
384       \Staff
385       \noclef
386     }
387   }
388 }
389 @end lilypond
390
391 @item
392 A half-open articulation was added:
393 @lilypond[quote,relative=2]
394 c4\halfopen
395 @end lilypond
396 This is sometimes used to indicate half-open hi-hats.
397
398 @item
399 The Unicode Bidirectional Algorithm is now fully supported for
400 single-line markup due to enhanced integration with Pango.
401
402 @item
403 LilyPond is now licensed under the GNU GPL v3+.
404
405 @item
406 In tablature, frets can be indicated with labels other than numbers:
407
408 @lilypond[verbatim,quote,relative=1]
409 \new TabStaff
410 \with {
411   stringTunings = #`(,(ly:make-pitch 1 3 NATURAL)
412                      ,(ly:make-pitch 1 1 NATURAL)
413                      ,(ly:make-pitch 0 5 NATURAL)
414                      ,(ly:make-pitch 0 3 NATURAL)
415                      ,(ly:make-pitch 0 1 NATURAL)
416                      ,(ly:make-pitch -1 5 NATURAL))
417   tablatureFormat = #fret-letter-tablature-format
418 }
419 \new TabVoice {
420   \set fretLabels = #`(,(markup #:with-color red "a")
421                        "b"
422                        ,(markup #:italic #:smaller "c"))
423   <f d>4. <bes>8 <g e>4
424 }
425 @end lilypond
426
427 @item
428 Layout objects can be printed over a white background, which whites-out objects
429 in lower layers which lie beneath:
430
431 @lilypond[verbatim,quote,relative=1]
432 \time 3/4
433 \override Staff.StaffSymbol #'layer = #4
434 \once \override Tie #'layer = #2
435 b'2.~
436 \once \override Staff.TimeSignature #'whiteout = ##t
437 \once \override Staff.TimeSignature #'layer = #3
438 \time 5/4
439 b4
440 @end lilypond
441
442 @item
443 Chords can be repeated using the @code{q} shortcut:
444
445 @lilypond[verbatim,quote,relative=2]
446 <c e g>8.-^ q16 q4-^
447 @end lilypond
448
449 @item
450 With two-sided mode, margins for odd and even pages can be set using
451 @code{inner-margin} and @code{outer-margin}:
452
453 @example
454 \paper @{
455   two-sided = ##t
456   inner-margin = 10 \mm
457   outer-margin = 20 \mm
458 @}
459 @end example
460
461 @item
462 Paper margin defaults, as specified in @file{ly/paper@/-defaults-init.ly}, apply
463 to the default paper size (a4) and are automatically scaled according to the
464 paper size chosen.
465
466 @item
467 All combinations of @code{left-margin}, @code{right-margin} and
468 @code{line-width} work now.  There is no more need to set @code{line-width}
469 manually unless you explicitly want to.
470
471 @item
472 Support for using an alternative music font, such as Gonville, is now
473 added.
474
475 @item
476 In addition to the existing @code{\hspace} markup command,
477 a new @code{\vspace} command has been added to provide an easy
478 and flexible way to add vertical space in markups.
479
480 @item
481 The direction of manual beams can be set with @code{^[} and @code{_[}.
482
483 @item
484 A version of the breve note head has been added with two vertical lines on each side.
485 @lilypond[quote,relative=2]
486 \time 4/2
487 \override Staff.NoteHead #'style = #'altdefault
488 c\breve | b\breve
489 @end lilypond
490
491 @item
492 Instrument names and vocal names now take into account the extent of
493 system start delimiters in other staves for their positioning,
494 resulting in improved default alignment for left-, center- and
495 right-aligned names.
496 @lilypond[quote,indent=18\mm]
497 <<
498   \new StaffGroup <<
499     \new GrandStaff <<
500       \new Staff {
501         \set Staff.instrumentName = #"Piccolo"
502         c''1
503       }
504       \new Staff {
505         \set Staff.instrumentName = #"Flute"
506         c''1
507       }
508     >>
509     \new Staff {
510       \set Staff.instrumentName = #"Bassoon"
511       \clef tenor
512       c'1
513     }
514   >>
515   \new PianoStaff <<
516     \set PianoStaff.instrumentName = #"Piano"
517     \context Staff = "up" {
518       c'1
519     }
520     \context Staff = "down" {
521       \clef bass
522       c1
523     }
524   >>
525 >>
526 @end lilypond
527
528 @item
529 Braces in markup can now be selected by point size using the markup commands
530 @code{\left-brace} and @code{\right-brace}.
531 @lilypond[quote]
532 \markup {
533   \left-brace #35
534   \hspace #2
535   \right-brace #45
536 }
537 @end lilypond
538
539 @item
540 Intermediate .ps files which are created by LilyPond
541 during compilation are now deleted by default.  To keep them,
542 add the following line to your input files:
543 @example
544 #(ly:set-option 'delete-intermediate-files #f)
545 @end example
546
547 @item
548 Dashed and dotted slurs, phrasing slurs, and ties
549 have been made variable thickness, and
550 partially dashed slurs are now available:
551 @lilypond[quote,relative=2]
552 \slurDashed
553 c4( d e f) |
554 \slurDotted
555 g4( f e d) |
556 \slurHalfDashed
557 c4( d e f)
558 @end lilypond
559
560 @item
561 An eyeglasses markup was added, indicating strongly to look at the
562 conductor for instructions:
563 @lilypond[quote,relative=2]
564 \mark \markup { \eyeglasses }
565 c4_\markup { \eyeglasses }
566 @end lilypond
567
568 @item
569 A snap-pizzicato (also known as Bartok-pizzicato) articulation was added:
570 @lilypond[quote,relative=2]
571 c4\snappizzicato
572 @end lilypond
573
574 @item
575 Tuplet number formatting functions are now available to print other fractions
576 and to add notes to the number or fraction:
577 @lilypond[quote,relative=2]
578 \once \override TupletNumber #'text =
579   #(tuplet-number::non-default-tuplet-denominator-text 7)
580 \times 2/3 { c4. c4. c4. c4. }
581
582 \once \override TupletNumber #'text =
583   #(tuplet-number::non-default-tuplet-fraction-text 12 7)
584 \times 2/3 { c4. c4. c4. c4. }
585 \once \override TupletNumber #'text =
586   #(tuplet-number::append-note-wrapper
587     (tuplet-number::non-default-tuplet-fraction-text 12 7) "8")
588 \times 2/3 { c4. c4. c4. c4. }
589
590 \once \override TupletNumber #'text =
591   #(tuplet-number::append-note-wrapper tuplet-number::calc-denominator-text "4")
592 \times 2/3 { c8 c8 c8 c8 c8 c8 }
593 \once \override TupletNumber #'text =
594   #(tuplet-number::append-note-wrapper tuplet-number::calc-fraction-text "4")
595 \times 2/3 { c8 c8 c8 c8 c8 c8 }
596
597 \once \override TupletNumber #'text =
598   #(tuplet-number::fraction-with-notes "4." "8")
599 \times 2/3 { c4. c4. c4. c4. }
600 \once \override TupletNumber #'text =
601   #(tuplet-number::non-default-fraction-with-notes 12 "8" 4 "4")
602 \times 2/3  { c4. c4. c4. c4. }
603 @end lilypond
604
605 @item
606 FretBoards now have a chordChanges property to keep repeated FretBoard objects
607 from being typeset.
608
609 @item
610 The vertical spacing engine has been drastically changed, making
611 it more flexible and easier to control.
612 The spacing between staves within a system can now change
613 to better use the space on the page.
614 User-defined contexts may participate in this flexible spacing,
615 depending on how their @code{staff-affinity} is defined.
616 Some page formatting variables (@code{page-top-space},
617 @code{between-system-space -padding}, and
618 @code{before- between- after-title-space}) have been replaced
619 by flexible vertical dimensions.
620
621 @end itemize
622
623
624
625 @ifhtml
626 For older news, go to
627 @uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html},
628 @uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS.html},
629 or @uref{../,go back} to the Documentation index.
630
631
632 @end ifhtml
633
634 @bye