]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/changes.tely
Issue 4127: allow mid-measure \time
[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.20 since 2.18
40
41 @allowcodebreaks false
42
43 @itemize
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 It is now possible to use @code{\time} and @code{\partial}
66 together to change the time signature in mid measure.
67
68 @lilypond[verbatim,quote,relative=1]
69 \override Score.BarNumber.break-visibility = #end-of-line-invisible
70 \partial 4 \time 3/4 f4 | 2 4 | 2 \bar "||"
71 \time 9/8 \partial 4. f8 8 8 | 2. 8 8 8 |
72 @end lilypond
73
74 @item
75 It is now possible to override the @code{text} property of
76 chord names.
77
78 @lilypond[verbatim,fragment,quote]
79 <<
80 \new ChordNames \chordmode {
81   a' b c:7
82   \once \override ChordName.text = #"foo"
83   d
84 }
85 >>
86 @end lilypond
87
88 @item
89 Improved horizontal alignment when using @code{TextScript},
90 with @code{DynamicText} or @code{LyricText}.
91
92 @item
93 A new command @code{\magnifyStaff} has been added which scales staff
94 sizes, staff lines, bar lines, beamlets and horizontal spacing generally
95 at the @code{Staff} context level.  Staff lines are prevented from being
96 scaled smaller than the default since the thickness of stems, slurs, and
97 the like are all based on the staff line thickness.
98
99 @item
100 @code{InstrumentName} now supports @code{text-interface}.
101
102 @item
103 There is now support for controlling the @q{expression level} of
104 MIDI channels using the @code{Staff.midiExpression} context property.
105 This can be used to alter the perceived volume of even sustained notes
106 (albeit in a very @q{low-level} way) and accepts a number value between
107 @code{0.0} and @code{1.0}.
108
109 @example
110 \score @{
111   \new Staff \with @{
112     midiExpression = #0.6
113     midiInstrument = #"clarinet"
114   @}
115   <<
116     @{ a'1~ a'1 @}
117     @{
118       \set Staff.midiExpression = #0.7 s4\f\<
119       \set Staff.midiExpression = #0.8 s4
120       \set Staff.midiExpression = #0.9 s4
121       \set Staff.midiExpression = #1.0 s4
122
123       \set Staff.midiExpression = #0.9 s4\>
124       \set Staff.midiExpression = #0.8 s4
125       \set Staff.midiExpression = #0.7 s4
126       \set Staff.midiExpression = #0.6 s4\!
127     @}
128   >>
129   \midi @{ @}
130 @}
131 @end example
132
133 @item
134 Support for making it easier to use alternative @q{music} fonts other
135 than the default Emmentaler in LilyPond has been added.  See
136 @uref{http://fonts.openlilylib.org/} for more information.
137
138 @item
139 Grobs and their parents can now be aligned separately allowing
140 more flexibility for grob positions.  For example the @q{left} edge of a
141 grob can now be aligned on the @q{center} of its parent.
142
143 @item
144 Improvements to the @code{\partial} command have been made to
145 avoid problems when using multiple, parallel contexts.
146
147 @item @code{\chordmode} can now use @code{< >} and @code{<< >>}
148 constructs.
149
150 @item
151 The @code{NullVoice} context is now @q{below} @code{Score}.
152
153 @item
154 A new command @code{\tagGroup} has now been added.  This compliments
155 the existing @code{\keepWithTag} and @code{\removeWithTag} commands.
156 For Example:
157
158 @example
159 \tagGroup #'(violinI violinII viola cello)
160 @end example
161
162 declares a list of @q{tags} that belong to a single @q{tag group}.
163
164 @example
165 \keepwithTag#'violinI
166 @end example
167
168 Is now only concerned with @q{tags} from @q{violinI}’s tag group.
169
170 Any element of the included music tagged with one or more tags from the
171 group, but @emph{not} with @var{violinI}, will be removed.
172
173 @item
174 The @code{\addlyrics} function now works with arbitrary contexts
175 incuding @code{Staff}.
176
177 @item
178 String numbers can now also be used to print roman numerals
179 (e.g. for unfretted string instruments).
180 @lilypond[verbatim,quote,relative=2]
181 c2\2
182 \romanStringNumbers
183 c\2
184 \arabicStringNumbers
185 c1\3
186 @end lilypond
187
188 @item
189 The @code{thin-kern} property of the @code{BarLine} grob has been
190 renamed to @code{segno-kern}.
191
192 @item
193 @code{KeyCancellation} grobs now ignore cue clefs (like
194 @code{KeySignature} grobs do).
195
196 @item
197 Add support for @code{\once@tie{}\unset}
198
199 @item
200 It is now possible to individually color both the dots and parentheses
201 in fret diagrams when using the @code{\fret-diagram-verbose} markup
202 command.
203
204 @lilypond[verbatim,quote,relative=1]
205 \new Voice {
206   c1^\markup {
207     \override #'(fret-diagram-details . (
208                  (finger-code . in-dot))) {
209       \fret-diagram-verbose #'((mute 6)
210                                (place-fret 5 3 1 red)
211                                (place-fret 4 5 2 inverted)
212                                (place-fret 3 5 3 green)
213                                (place-fret 2 5 4 blue inverted)
214                                (place-fret 1 3 1 violet)
215                                (barre 5 1 3 ))
216     }
217   }
218   c1^\markup {
219     \override #'(fret-diagram-details . (
220                  (finger-code . below-string))) {
221       \fret-diagram-verbose #'((mute 6)
222                              (place-fret 5 3 1 red parenthesized)
223                              (place-fret 4 5 2 yellow
224                                                default-paren-color
225                                                parenthesized)
226                              (place-fret 3 5 3 green)
227                              (place-fret 2 5 4 blue )
228                              (place-fret 1 3 1)
229                              (barre 5 1 3))
230     }
231   }
232 }
233 @end lilypond
234
235 @item
236 Two new properties have been added for use in
237 @code{fret-diagram-details} when using the @code{\fret-diagram-verbose}
238 markup command; @code{fret-label-horizontal-offset} which affects the
239 @code{fret-label-indication} and @code{paren-padding} which controls the
240 space between the dot and the parentheses surrounding it.
241
242 @lilypond[verbatim,quote,relative=1]
243 \new Voice {
244   c1^\markup {
245     \fret-diagram-verbose #'((mute 6)
246                              (place-fret 5 3 1)
247                              (place-fret 4 5 2)
248                              (place-fret 3 5 3)
249                              (place-fret 1 6 4 parenthesized)
250                              (place-fret 2 3 1)
251                              (barre 5 2 3))
252   }
253   c1^\markup {
254     \override #'(fret-diagram-details . (
255                  (fret-label-horizontal-offset . 2)
256                  (paren-padding . 0.25))) {
257       \fret-diagram-verbose #'((mute 6)
258                                (place-fret 5 3 1)
259                                (place-fret 4 5 2)
260                                (place-fret 3 5 3)
261                                (place-fret 1 6 4 parenthesized)
262                                (place-fret 2 3 1)
263                                (barre 5 2 3))
264     }
265   }
266 }
267 @end lilypond
268
269 @item
270 A new markup command @code{\justify-line} has been added.  Similar to
271 the @code{\fill-line} markup command except that instead of setting
272 @emph{words} in columns, the @code{\justify-line} command balances the
273 whitespace between them ensuring that when there are three or more
274 words in a markup, the whitespace is always consistent.
275
276 @lilypond[quote,verbatim,papersize=a6]
277 \markup \fill-line {oooooo oooooo oooooo oooooo}
278 \markup \fill-line {ooooooooo oooooooo oo ooo}
279 @end lilypond
280
281 @lilypond[quote,verbatim,papersize=a6]
282 \markup \justify-line {oooooo oooooo oooooo oooooo}
283 \markup \justify-line {ooooooooo oooooooo oo ooo}
284 @end lilypond
285
286 @item
287 A new command @code{\magnifyMusic} has been added, which allows
288 the notation size to be changed without changing the staff size,
289 while automatically scaling stems, beams, and horizontal spacing.
290
291 @lilypond[verbatim,quote]
292 \new Staff <<
293   \new Voice \relative {
294     \voiceOne
295     <e' e'>4 <f f'>8. <g g'>16 <f f'>8 <e e'>4 r8
296   }
297   \new Voice \relative {
298     \voiceTwo
299     \magnifyMusic 0.63 {
300       \override Score.SpacingSpanner.spacing-increment = #(* 1.2 0.63)
301       r32 c'' a c a c a c r c a c a c a c
302       r c a c a c a c a c a c a c a c
303     }
304   }
305 >>
306 @end lilypond
307
308 @item
309 A new flexible template suitable for a range of choral music, is now
310 provided.  This may be used to create simple choral music, with or
311 without piano accompaniment, in two or four staves. Unlike other
312 templates, this template is @q{built-in}, which means it does not
313 need to be copied and edited: instead it is simply @code{\include}'d
314 in the input file.  For details, see @rlearning{Built-in templates}.
315
316 @item
317 The positioning of tuplet numbers for kneed beams has been significantly
318 improved.  Previously, tuplet numbers were placed according to the
319 position of the tuplet bracket, even if it was not printed.  This could
320 lead to stranded tuplet numbers.  Now they are now positioned
321 closer to the kneed-beam when an appropriate beam segment exists for its
322 placement and when the the bracket is not drawn.
323
324 Collision detection is also added, offsetting horizontally if too close
325 to an adjoining note column but preserving the number's vertical
326 distance from the kneed beam.  If the number itself is too large to
327 fit in the available space the original, bracket-based, positioning
328 system is used instead; and in the event of a collision (e.g. with an
329 accidental) the tuplet number is moved vertically away instead.
330
331 @lilypond[verbatim,fragment,quote,relative=1]
332 \time 3/4
333 \override Beam.auto-knee-gap = 3
334 \tuplet 3/2 4 {
335   g8 c'' e,
336   c'8 g,, e''
337   g,,8 e''' c,,
338 }
339 @end lilypond
340
341 @noindent
342 The original kneed-beam tuplet behavior is still available through an
343 @code{\override} via a new, @code{knee-to-beam} property.
344
345 @lilypond[verbatim,fragment,quote,relative=1]
346 \time 3/4
347 \override Beam.auto-knee-gap = 3
348 \override TupletNumber.knee-to-beam = ##f
349 \tuplet 3/2 4 {
350   g8 c'' e,
351   c'8 g,, e''
352   g,,8 e''' c,,
353 }
354 @end lilypond
355
356 @item
357 @code{\lyricsto} and @code{\addLyrics} have been @q{harmonized}.  Both
358 now accept the same kind of delimited argument list that @code{\lyrics}
359 and @code{\chords} accept.  Backward compatibility has been added so
360 music identifiers (i.e. @code{\mus}) are permitted as arguments.  A
361 @code{convert-ly} rule has been added that removes redundant uses of
362 @code{\lyricmode} and rearranges combinations with context starters such
363 that @code{\lyricsto} in general is applied last (i.e. like
364 @code{\lyricmode} would be).
365
366 @item
367 Scheme functions and identifiers can now be used as output definitions.
368
369 @item
370 Scheme expressions can now be used as chord constituents.
371
372 @item
373 Improved visual spacing of small and regular @q{MI} Funk and Walker
374 noteheads so they are now the same width as other shaped notes in
375 their respective sets.  @code{SOL} noteheads are also now visually
376 improved when used with both the normal Aiken and Sacred Harp heads, as
377 well as with the thin variants.
378
379 @item
380 @code{LeftEdge} now has a definable @code{Y-extent} (i.e.vertical).  See
381 @rinternals{LeftEdge}.
382
383 @item
384 Added a new @code{make-path-stencil} function that supports all
385 @code{path} commands both relative and absolute:
386
387 @code{lineto}, @code{rlineto}, @code{curveto}, @code{rcurveto},
388 @code{moveto}, @code{rmoveto}, @code{closepath}.  The function also
389 supports @q{single-letter} syntax used in standard SVG path commands:
390
391 @code{L}, @code{l}, @code{C}, @code{c}, @code{M}, @code{m}, @code{Z} and
392 @code{z}.  The new command is also backward-compatible with the original
393 @code{make-connected-path-stencil} function.  Also see
394 @file{scm/stencil.scm}.
395
396 @item
397 Context properties named in the @samp{alternativeRestores} property are
398 restored to their value at the start of the @emph{first} alternative in
399 all subsequent alternatives.
400
401 Currently the default set restores @q{current meter};
402
403 @lilypond[verbatim,fragment,quote,relative=2]
404 \time 3/4
405 \repeat volta 2 { c2 e4 | }
406 \alternative {
407   { \time 4/4 f2 d | }
408   { f2 d4 | }
409 }
410 g2. |
411 @end lilypond
412
413 @noindent
414 @q{measure position};
415
416 @lilypond[verbatim,fragment,quote,relative=2]
417 \time 3/4
418 \repeat volta 2 { c2 e4 | }
419 \alternative {
420   { \time 4/4
421     \set Timing.measurePosition = #(ly:make-moment -1/2)
422     f2 | }
423   { f2 d4 | }
424 }
425 g2. |
426 @end lilypond
427
428 @noindent
429 and @q{chord changes};
430
431 @lilypond[verbatim,fragment,quote]
432 <<
433   \new ChordNames {
434     \set chordChanges = ##t
435     \chordmode { c1:m d:m c:m d:m }
436   }
437   \new Staff {
438     \repeat volta 2 { \chordmode { c1:m } }
439     \alternative {
440       { \chordmode { d:m } }
441       { \chordmode { c:m } }
442     }
443   \chordmode { d:m }
444 }
445 >>
446 @end lilypond
447
448 @item
449 Improved MIDI output for breathe marks.  After tied notes, breaths take
450 time @emph{only} from the last note of the tie; e.g.
451 @code{@{ c4~ c8 \breathe @}} performs as @code{@{ c4~ c16 r @}} instead
452 of @code{@{ c4 r8 @}}.  This is more consistent with articulations and
453 how humans interpret breaths after ties.  It now also makes it easier to
454 align simultaneous breathe marks over multiple parts, all with different
455 note lengths.
456
457 @item
458 A new note head style for Tabulature has been added;
459 @code{TabNoteHead.style = #'slash}.
460
461 @item
462 Four new Clef glyphs have been added @emph{Double G}, @emph{Tenor G},
463 @emph{Varpercussion} and @emph{varC} and their related tessitura.
464 @lilypond[verbatim,quote,fragment]
465   \override Staff.Clef.full-size-change = ##t
466
467   \clef "GG" c c c c
468   \clef "tenorG" c c c c
469   \clef "varC" c c c c
470   \clef "altovarC" c c c c
471   \clef "tenorvarC" c c c c
472   \clef "baritonevarC" c c c c
473   \clef "varpercussion" c c c c
474
475   \break
476   \override Staff.Clef.full-size-change = ##f
477
478   \clef "GG" c c c c
479   \clef "tenorG" c c c c
480   \clef "varC" c c c c
481   \clef "altovarC" c c c c
482   \clef "tenorvarC" c c c c
483   \clef "baritonevarC" c c c
484   \clef "varpercussion" c c c c
485 @end lilypond
486
487 @item
488 Isolated durations in music sequences now stand for unpitched
489 notes.  This may be useful for specifying rhythms to music or
490 scheme functions.  When encountered in the final score, the
491 pitches are provided by the preceding note or chord.  Here are two
492 examples where this makes for readable input:
493
494 @lilypond[verbatim,quote]
495 \new DrumStaff \with { \override StaffSymbol.line-count = 1 }
496 \drummode {
497   \time 3/4
498   tambourine 8 \tuplet 3/2 { 16 16 16 }
499              8 \tuplet 3/2 { 16 16 16 } 8 8 |
500 }
501 @end lilypond
502
503 @lilypond[verbatim,quote]
504 \new Staff { r16 c'16 ~ 8 ~ 4 ~ 2 | }
505 @end lilypond
506
507 @item
508 Beaming exceptions can now be constructed using the
509 @code{\beamExceptions} scheme function.  One can now write
510
511 @lilypond[verbatim,quote,relative=1]
512 \time #'(2 1) 3/16
513 \set Timing.beamExceptions =
514   \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
515 c16 c c |
516 \repeat unfold 6 { c32 } |
517 @end lilypond
518
519 @noindent
520 with multiple exceptions separated with @code{|} bar checks
521 (writing the exception pattern without pitches is convenient but
522 not mandatory).  Previously, setting the beam exceptions would
523 have required writing
524
525 @example
526 \set Timing.beamExceptions =
527 #'(                         ;start of alist
528    (end .                   ;entry for end of beams
529     (                       ;start of alist of end points
530      ((1 . 32) . (2 2 2))   ;rule for 1/32 beams -- end each 1/16
531     )))
532 @end example
533
534 @item
535 The most common articulations are now reflected in MIDI output.
536 Accent and marcato make notes louder; staccato, staccatissimo and
537 portato make them shorter. Breath marks shorten the previous
538 note.
539
540 This behavior is customizable through the @code{midiLength} and
541 @code{midiExtraVelocity} properties on @code{ArticulationEvent}.
542 See @file{script-init.ly} for examples.
543
544 @item
545 The PostScript functionality of stroke adjustment is no longer
546 applied automatically but left to the discretion of the PostScript
547 device (by default, Ghostscript uses it for resolutions up to
548 150dpi when generating raster images).  When it is enabled, a more
549 complex drawing algorithm designed to benefit from stroke
550 adjustment is employed mostly for stems and bar lines.
551
552 Stroke adjustment can be forced by specifying the command line
553 option @samp{-dstrokeadjust} to LilyPond.  When generating
554 @code{PDF} files, this will usually result in markedly better
555 looking @code{PDF} previews but significantly larger file size.
556 Print quality at high resolutions will be unaffected.
557
558 @end itemize
559
560 @ifhtml
561 For older news, go to
562 @uref{http://lilypond.org/doc/v2.18/Documentation/changes/},
563 @uref{http://lilypond.org/doc/v2.16/Documentation/changes/},
564 or @uref{../,go back} to the Documentation index.
565
566
567 @end ifhtml
568
569 @bye