X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fchanges.tely;h=71320d7ea56c5fecb0540a710c69eb0cbf5a9cf0;hb=3b65aea88185c2ce92b1a905e0535d7d4c60d71a;hp=19c93c2a5912bd9c6f312490fdce1d173f478115;hpb=842044f5c5f5d4e2f1c778493018ee2b38b90819;p=lilypond.git diff --git a/Documentation/changes.tely b/Documentation/changes.tely index 19c93c2a59..71320d7ea5 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -36,7 +36,7 @@ See user manual, \NAME\ @finalout @node Top -@top New features in 2.18 since 2.16 +@top New features in 2.20 since 2.18 @allowcodebreaks false @@ -60,123 +60,277 @@ which scares away people. * only show user-visible changes. @end ignore +@item +A new command @code{\magnifyMusic} has been added, which allows +the notation size to be changed without changing the staff size, +while automatically scaling stems, beams, and horizontal spacing. + +@lilypond[verbatim,quote] +\new Staff << + \new Voice \relative { + \voiceOne + 4 8. 16 8 4 r8 + } + \new Voice \relative { + \voiceTwo + \magnifyMusic 0.63 { + r32 c'' a c a c a c r c a c a c a c + r c a c a c a c a c a c a c a c + } + } +>> +@end lilypond + +@item +A new flexible template suitable for a range of choral music, is now +provided. This may be used to create simple choral music, with or +without piano accompaniment, in two or four staves. Unlike other +templates, this template is @q{built-in}, which means it does not +need to be copied and edited: instead it is simply @code{\include}'d +in the input file. For details, see @rlearning{Built-in templates}. + +@item +The positioning of tuplet numbers for kneed beams has been significantly +improved. Previously, tuplet numbers were placed according to the +position of the tuplet bracket, even if it was not printed. This could +lead to stranded tuplet numbers. Now they are now positioned +closer to the kneed-beam when an appropriate beam segment exists for its +placement and when the the bracket is not drawn. + +Collision detection is also added, offsetting horizontally if too close +to an adjoining note column but preserving the number's vertical +distance from the kneed beam. If the number itself is too large to +fit in the available space the original, bracket-based, positioning +system is used instead; and in the event of a collision (e.g. with an +accidental) the tuplet number is moved vertically away instead. + +@lilypond[verbatim,fragment,quote,relative=1] +\time 3/4 +\override Beam.auto-knee-gap = 3 +\tuplet 3/2 4 { + g8 c'' e, + c'8 g,, e'' + g,,8 e''' c,, +} +@end lilypond + +@noindent +The original kneed-beam tuplet behavior is still available through an +@code{\override} via a new, @code{knee-to-beam} property. + +@lilypond[verbatim,fragment,quote,relative=1] +\time 3/4 +\override Beam.auto-knee-gap = 3 +\override TupletNumber.knee-to-beam = ##f +\tuplet 3/2 4 { + g8 c'' e, + c'8 g,, e'' + g,,8 e''' c,, +} +@end lilypond + +@item +@code{\lyricsto} and @code{\addLyrics} have been @q{harmonized}. Both +now accept the same kind of delimited argument list that @code{\lyrics} +and @code{\chords} accept. Backward compatibility has been added so +music identifiers (i.e. @code{\mus}) are permitted as arguments. A +@code{convert-ly} rule has been added that removes redundant uses of +@code{\lyricmode} and rearranges combinations with context starters such +that @code{\lyricsto} in general is applied last (i.e. like +@code{\lyricmode} would be). + +@item +Scheme functions and identifiers can now be used as output definitions. + +@item +Scheme expressions can now be used as chord constituents. + +@item +Improved visual spacing of small and regular @q{MI} Funk and Walker +noteheads so they are now the same width as other shaped notes in +their respective sets. @code{SOL} noteheads are also now visually +improved when used with both the normal Aiken and Sacred Harp heads, as +well as with the thin variants. @item -Introducing two new markup-commands; @code{\draw-dashed-line} and -@code{\draw-dotted-line}. +@code{LeftEdge} now has a definable @code{Y-extent} (i.e.vertical). See +@rinternals{LeftEdge}. + +@item +Added a new @code{make-path-stencil} function that supports all +@code{path} commands both relative and absolute: + +@code{lineto}, @code{rlineto}, @code{curveto}, @code{rcurveto}, +@code{moveto}, @code{rmoveto}, @code{closepath}. The function also +supports @q{single-letter} syntax used in standard SVG path commands: + +@code{L}, @code{l}, @code{C}, @code{c}, @code{M}, @code{m}, @code{Z} and +@code{z}. The new command is also backward-compatible with the original +@code{make-connected-path-stencil} function. Also see +@file{scm/stencil.scm}. + +@item +Context properties named in the @samp{alternativeRestores} property are +restored to their value at the start of the @emph{first} alternative in +all subsequent alternatives. + +Currently the default set restores @q{current meter}; + +@lilypond[verbatim,fragment,quote,relative=2] +\time 3/4 +\repeat volta 2 { c2 e4 | } +\alternative { + { \time 4/4 f2 d | } + { f2 d4 | } +} +g2. | +@end lilypond @noindent -The dashed-line extends to the whole length given by @var{dest}, if -@code{full-length} is set to @code{#t} (this is the default) without any -space at the beginning or end. @code{off} will then be altered to fit. -To insist on the given (or default) values of @code{on}, @code{off} use -@code{\override #'(full-length . #f)}. Manual settings for @code{on}, -@code{off} and @code{phase} are possible. +@q{measure position}; + +@lilypond[verbatim,fragment,quote,relative=2] +\time 3/4 +\repeat volta 2 { c2 e4 | } +\alternative { + { \time 4/4 + \set Timing.measurePosition = #(ly:make-moment -1/2) + f2 | } + { f2 d4 | } +} +g2. | +@end lilypond @noindent -The dotted-line always extends to the whole length given by @var{dest}, -without any space at the beginning or end. Manual settings for -@code{off} are possible to get larger or smaller space between the dots. -The given (or default) value of @code{off} will be altered to fit the -line-length. +and @q{chord changes}; + +@lilypond[verbatim,fragment,quote] +<< + \new ChordNames { + \set chordChanges = ##t + \chordmode { c1:m d:m c:m d:m } + } + \new Staff { + \repeat volta 2 { \chordmode { c1:m } } + \alternative { + { \chordmode { d:m } } + { \chordmode { c:m } } + } + \chordmode { d:m } +} +>> +@end lilypond + +@item +Improved MIDI output for breathe marks. After tied notes, breaths take +time @emph{only} from the last note of the tie; e.g. +@code{@{ c4~ c8 \breathe @}} performs as @code{@{ c4~ c16 r @}} instead +of @code{@{ c4 r8 @}}. This is more consistent with articulations and +how humans interpret breaths after ties. It now also makes it easier to +align simultaneous breathe marks over multiple parts, all with different +note lengths. + +@item +A new note head style for Tabulature has been added; +@code{TabNoteHead.style = #'slash}. + +@item +Four new Clefs have been added. @emph{Double G}, @emph{Tenor G}, +@emph{Varpercussion} and @emph{varC}. +@lilypond[verbatim,quote,fragment] + \override Staff.Clef.full-size-change = ##t + + \clef "GG" c c c c + \clef "tenorG" c c c c + \clef "varC" c c c c + \clef "varpercussion" c c c c + + \break + \override Staff.Clef.full-size-change = ##f + + \clef "GG" c c c c + \clef "tenorG" c c c c + \clef "varC" c c c c + \clef "varpercussion" c c c c +@end lilypond + +@item +Isolated durations in music sequences now stand for unpitched +notes. This may be useful for specifying rhythms to music or +scheme functions. When encountered in the final score, the +pitches are provided by the preceding note or chord. Here are two +examples where this makes for readable input: @lilypond[verbatim,quote] -\markup { - \draw-dashed-line #'(5.1 . 2.3) - \override #'(on . 0.3) - \override #'(off . 0.5) - \draw-dashed-line #'(5.1 . 2.3) - \draw-dotted-line #'(5.1 . 2.3) - \override #'(thickness . 2) - \override #'(off . 0.2) - \draw-dotted-line #'(5.1 . 2.3) +\new DrumStaff \with { \override StaffSymbol.line-count = 1 } +\drummode { + \time 3/4 + tambourine 8 \tuplet 3/2 { 16 16 16 } + 8 \tuplet 3/2 { 16 16 16 } 8 8 | } @end lilypond -@item -Starting with version@tie{}2.17.10, error messages or the -@code{textedit} @acronym{URI} used for point-and-click -functionality specify column numbers starting with@tie{}1 rather -than@tie{}0. The byte offset (also part of @code{textedit} -@acronym{URI}s) still starts at@tie{}0. +@lilypond[verbatim,quote] +\new Staff { r16 c'16 ~ 8 ~ 4 ~ 2 | } +@end lilypond @item -The @code{\clef} command supports optional octavation: +Beaming exceptions can now be constructed using the +@code{\beamExceptions} scheme function. One can now write + @lilypond[verbatim,quote,relative=1] -\clef "treble_(8)" -c2 c -\clef "bass^[15]" -c2 c +\time #'(2 1) 3/16 +\set Timing.beamExceptions = + \beamExceptions { 32[ 32] 32[ 32] 32[ 32] } +c16 c c | +\repeat unfold 6 { c32 } | @end lilypond -@item -The LilyPond syntax of dot-separated words @code{Voice.Accidental} -has been made interchangeable with @code{#'(Voice Accidental)}, a -Scheme list of symbols. As one result, code like -@example -\override Voice.TextSpanner #'(bound-details left text) = "rit." -@end example -is now equivalent to -@example -\override Voice.TextSpanner bound-details.left.text = "rit." -@end example -or even +@noindent +with multiple exceptions separated with @code{|} bar checks +(writing the exception pattern without pitches is convenient but +not mandatory). Previously, setting the beam exceptions would +have required writing + @example -\override #'(Voice TextSpanner) bound-details.left.text = "rit." +\set Timing.beamExceptions = +#'( ;start of alist + (end . ;entry for end of beams + ( ;start of alist of end points + ((1 . 32) . (2 2 2)) ;rule for 1/32 beams -- end each 1/16 + ))) @end example @item -Grob and grob property path no longer need to be specified as two -separate arguments to commands like @samp{\override} and -@code{\revert}, allowing for the syntax -@example -\override Voice.TextSpanner.bound-details.left.text = "rit." -@end example -Since complementary music functions like @samp{\overrideProperty} -cannot support forms with and without separating space at the same -time, using a single dotted path is now the preferred form. -Specifying grob path and grob property path separately, currently -still supported with @samp{\override} and @samp{\revert} for -compatibility reasons, is deprecated. - -@item -Due to words now being accepted as symbol function arguments, the -interfaces of @samp{\accidentalStyle}, @samp{\alterBroken}, -@samp{\footnote} and @samp{\tweak} had to be redesigned where -optional symbol arguments were involved. Please check the -respective music function documentation for details. - -@item -Several commands now accept symbol lists (conveniently entered as -dot-separated words) for various kinds of arguments. These -include @samp{\accidentalStyle}, @samp{\alterBroken}, -@samp{\footnote}, @samp{\hide}, @samp{\omit}, -@samp{\overrideProperty}, @samp{\shape}, and @samp{\tweak}. - -@item -The bar line user interface has changed. Bar glyphs now resemble the -appearance of the bar line, so a left repeat sign has to be coded -as @code{.|:}. The command @code{\defineBarLine} provides an easy way -to define additional bar line styles. - -@item -Accidentals in the key signature may be printed in octaves other -than their traditional positions, or in multiple octaves. -@lilypond[quote,relative=0] -\override Staff.KeySignature #'flat-positions = #'((-5 . 5)) -\override Staff.KeyCancellation #'flat-positions = #'((-5 . 5)) -\clef bass \key es\major es g bes d -\clef treble \bar "||" \key es\major es g bes d -\override Staff.KeySignature #'sharp-positions = #'(2) -\bar "||" \key d\major b fis b2 -@end lilypond +The most common articulations are now reflected in MIDI output. +Accent and marcato make notes louder; staccato, staccatissimo and +portato make them shorter. Breath marks shorten the previous +note. + +This behavior is customizable through the @code{midiLength} and +@code{midiExtraVelocity} properties on @code{ArticulationEvent}. +See @file{script-init.ly} for examples. + +@item +The PostScript functionality of stroke adjustment is no longer +applied automatically but left to the discretion of the PostScript +device (by default, Ghostscript uses it for resolutions up to +150dpi when generating raster images). When it is enabled, a more +complex drawing algorithm designed to benefit from stroke +adjustment is employed mostly for stems and bar lines. + +Stroke adjustment can be forced by specifying the command line +option @samp{-dstrokeadjust} to LilyPond. When generating +@code{PDF} files, this will usually result in markedly better +looking @code{PDF} previews but significantly larger file size. +Print quality at high resolutions will be unaffected. @end itemize @ifhtml For older news, go to +@uref{http://lilypond.org/doc/v2.18/Documentation/changes/}, @uref{http://lilypond.org/doc/v2.16/Documentation/changes/}, -@uref{http://lilypond.org/doc/v2.14/Documentation/changes/}, or @uref{../,go back} to the Documentation index.