X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fchanges.tely;h=b58b35a4eff28f239054fd378c2ca0737ae410bf;hb=17fecdfc86780cccffdf8fb91a1394da2980860a;hp=b59ee7e91f2826bdca770316d255eb0b8d3e8399;hpb=95b372c451ea1586db8db66d3d00334382e8e103;p=lilypond.git diff --git a/Documentation/changes.tely b/Documentation/changes.tely index b59ee7e91f..b58b35a4ef 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -35,28 +35,11 @@ See user manual, \NAME\ @finalout -@node Top, Fixes and changes after 2.16.0, (dir), (dir) -@top New features in 2.16 - -@menu -* Fixes and changes after 2.16.0:: -* New features in 2.16 since 2.14:: -@end menu - +@node Top +@top New features in 2.20 since 2.18 @allowcodebreaks false -@node Fixes and changes after 2.16.0, New features in 2.16 since 2.14, Top, Top -@section Fixes and changes after 2.16.0 -@table @b -@item 2.16.1 -Please refer to the bug tracker for -@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=Fixed_2_16_1, -issues fixed in 2.16.1}. -@end table - -@node New features in 2.16 since 2.14, , Fixes and changes after 2.16.0, Top -@section New features in 2.16 since 2.14 @itemize @ignore @@ -78,354 +61,282 @@ which scares away people. @end ignore @item -Support for cross-staff stems on chords, using @code{crossStaff} -and the @code{Span_stem_engraver}. This calculates the length of -cross-staff stems automatically. -@lilypondfile[quote] -{cross-staff-stems.ly} +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. -@item -The syntax of words (character sequences recognized without enclosing -quotes) and commands (now always a backslash @samp{\} followed by a -word) has been unified across all modes: it now consists of alphabetic -characters, possibly enclosing isolated dashes @samp{-} and underlines -@samp{_}. - -As one consequence, using unquoted text scripts like (literally!) -@example -@{ c-script c\f_script @} -@end example -will now tend to result in invalid music. Omitting quote marks -for arbitrary text rather than keywords has never been good practice or -even documented, and it is unlikely to have seen significant use. - -Staying with established conventions (like not using dashes or -underlines for command names intended to be used inside of music) -remains advisable. The reason for this change is more robust -recognition of LilyPond's lexical units for LilyPond itself as well as -external tools interpreting its syntax. +@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 -Support for Kievan square notation: -@lilypond[quote,relative=1,verbatim] -\new KievanVoice { - \cadenzaOn - c d e f g a bes - \bar "kievan" +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 -@item -Augmentation dots now avoid the other voice in two-voice polyphony -so that users can move the @code{Dot_column_engraver} to set dots -independently for each @code{Voice}. -@lilypond[quote] -\layout { - \context { - \Staff - \remove Dot_column_engraver - } \context { - \Voice - \consists Dot_column_engraver - } +@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,, } -\relative c'' << - { \time 6/8 - 4. b - } \\ { - 4. - } >> @end lilypond @item -A Scheme function to adjust the control points of curves such as slurs -and ties, developed by several users, is now included in LilyPond. -@lilypond[quote,verbatim,relative=2] -g8->( bes,-.) d4 -\shape Slur #'((-0.5 . 1.5) (-3 . 0) (0 . 0) (0 . 0)) -g8->( bes,!-.) d4 -@end lilypond +@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 -Use of @code{\tempo} specifications in @code{\midi} blocks (removed in -2.9.16 in favor of explicit @code{tempoWholesPerMinute} settings) has -seen a revival: now any kind of property-setting music is turned into -context definitions within output specifications, allowing for -declarations like -@example -\layout @{ \accidentalStyle modern @} -\midi @{ \tempo 4. = 66 @} -@end example +Scheme functions and identifiers can now be used as output definitions. @item -The LilyPond G clef has been redesigned - upper loop is now more balanced, -bottom crook sticks out less and the "spine" (main vertical line) is more -evenly curved. The old and new versions can be compared by looking at the -documentation: -@uref{http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#clef-glyphs, old version}, -@uref{http://lilypond.org/doc/v2.15/Documentation/notation/the-feta-font.html#clef-glyphs, new version}. +Scheme expressions can now be used as chord constituents. @item -Lilypond's stencil commands have been simplified to allow for less code -duplication and better height approximations of graphical objects. The -following stencil commands have been eliminated: -@itemize -@item @code{beam} -@item @code{bezier-sandwich} -@item @code{bracket} -@item @code{dashed-slur} -@item @code{dot} -@item @code{oval} -@item @code{repeat-slash} -@item @code{zigzag-line} -@end itemize +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 -Flags are now treated as separate objects rather than as stem parts. -@lilypond[fragment,quote,relative=2] -\override Flag #'color = #red -g8 -@end lilypond +@code{LeftEdge} now has a definable @code{Y-extent} (i.e.vertical). See +@rinternals{LeftEdge}. @item -Two alternative methods for bar numbering can be set, especially for -when using repeated music; +Added a new @code{make-path-stencil} function that supports all +@code{path} commands both relative and absolute: -@lilypond[fragment,quote,relative=1,noragged-right] -\relative c'{ - \set Score.alternativeNumberingStyle = #'numbers - \repeat volta 3 { c4 d e f | } - \alternative { - { c4 d e f | c2 d \break } - { f4 g a b | f4 g a b | f2 a | \break } - { c4 d e f | c2 d } - } - c1 \break - \set Score.alternativeNumberingStyle = #'numbers-with-letters - \repeat volta 3 { c,4 d e f | } - \alternative { - { c4 d e f | c2 d \break } - { f4 g a b | f4 g a b | f2 a | \break } - { c4 d e f | c2 d } - } - c1 -} -@end lilypond +@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: -@item -The following is a fundamental change in LilyPond's music -representation: Rhythmic events like @code{LyricEvent} and -@code{NoteEvent} are no longer wrapped in @code{EventChord} unless they -have been actually entered as part of a chord in the input. If you -manipulate music expressions in Scheme, the new behavior may require -changes in your code. Calling the music function @code{\eventChords} or -the Scheme function @code{event-chord-wrap!} converts to the old -representation; using one of those might be easiest for keeping legacy -code operative. - -The following three items are consequences of this change. +@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 -The repetitive chord entry aid @code{q} has been reimplemented. -Repeated chords are now replaced right before interpreting a music -expression. In case the user wants to retain some events of the -original chord, he can run the repeat chord replacement function -@code{\chordRepeats} manually. +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. -@item -String numbers and right hand fingerings on single notes now appear -without having to be written inside of chord brackets. +Currently the default set restores @q{current meter}; -@item -Music functions now work the same when used inside or outside of chords, -including all the possibilities of argument parsing. Music variables -can be used inside of chords: a construct like -@lilypond[verbatim,quote,ragged-right] -tonic=fis' -{ <\tonic \transpose c g \tonic> } +@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 -now works as expected. One can use @code{#@{@dots{}#@}} for -constructing chord constituents. @code{\tweak} now works on single -notes without needing to wrap them in a chord. Using it on command -events and lyrics is now possible, but not likely to give results yet. -@item -@code{\tweak} now takes an optional layout object specification. It can -be used for tweaking layout objects that are only indirectly caused by -the tweaked event, like accidentals, stems, and flags: - -@lilypond[verbatim,quote,ragged-right,relative=2] -<\tweak Accidental #'color #red cis4 - \tweak Accidental #'color #green es - g> +@noindent +@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 -@item -Scheme expressions inside of embedded Lilypond (@code{#@{@dots{}#@}}) -are now executed in lexical closure of the surrounding Scheme code. -@code{$} is no longer special in embedded Lilypond. It can be used -unconditionally in Lilypond code for immediate evaluation of Scheme -expressions, similar to how @code{ly:export} could previously be used. -@code{ly:export} has been removed. As a consequence, @code{#} is now -free to delay evaluation of its argument until the parser actually -reduces the containing expression, greatly reducing the potential for -premature evaluation. There are also @q{splicing} operators @code{$@@} -and @code{#@@} for interpreting the members of a list individually. - -@item -To reduce the necessity for using @code{$}, Scheme expressions written -with @code{#} are interpreted as music inside of music lists, and as -markups or markup lists inside of markups. - -@item -Support for jazz-like chords has been improved: Lydian and altered -chords are recognised; separators between chord modifiers are now -treated independently of separators between ``slash'' chords and their -bass notes (and by default, slashes are now only used for the latter -type of separator); additional pitches are no longer prefixed with -``add'' by default; and the ``m'' in minor chords can be customized. -@ruser{Customizing chord names} for more information. +@noindent +and @q{chord changes}; -@item -The @code{\markuplines} command has been renamed to @code{\markuplist} -for a better match with its semantics and general Lilypond -nomenclature. +@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 -The interface for specifying string tunings in tablature has been -simplified considerably and employs the scheme function -@code{\stringTuning} for most purposes. +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 -Beams can now have their slopes preserved over line breaks. -@lilypond[fragment,quote,relative=2] -\override Beam #'breakable = ##t -a8[ b c d e f g \bar "" \break f e d c b a] -\once \override Beam #'positions = #beam::align-with-broken-parts -a8[ b c d e f g \bar "" \break f e d c b a] -\once \override Beam #'positions = #beam::slope-like-broken-parts -a8[ b c d e f g \bar "" \break f e d c b a] -@end lilypond -To do this, several callback functions are now deprecated. -@itemize -@item @code{ly:beam::calc-least-squares-positions} -@item @code{ly:beam::slope-damping} -@item @code{ly:beam::shift-region-to-valid} -@end itemize -Furthermore, @code{ly:beam::quanting} now takes an additional argument -to help calculations over line breaks. All of these functions are now -automatically called when setting the @code{positions} parameter. +A new note head style for Tabulature has been added; +@code{TabNoteHead.style = #'slash}. @item -In function arguments music, markups and Scheme expressions (as well as -several other syntactic entities) have become mostly interchangeable and -are told apart only by evaluating the respective predicate. In several -cases, the predicate is consulted by the parser, like when deciding -whether to interpret @code{-3} as a number or a fingering event. +Four new Clef glyphs have been added @emph{Double G}, @emph{Tenor G}, +@emph{Varpercussion} and @emph{varC} and their related tessitura. +@lilypond[verbatim,quote,fragment] + \override Staff.Clef.full-size-change = ##t -@item -Music functions (and their close relatives) can now be defined with -optional arguments. + \clef "GG" c c c c + \clef "tenorG" c c c c + \clef "varC" c c c c + \clef "altovarC" c c c c + \clef "tenorvarC" c c c c + \clef "baritonevarC" c c c c + \clef "varpercussion" c c c c -@item -For defining commands executed only for their side-effects, -@code{define-void-function} is now available. + \break + \override Staff.Clef.full-size-change = ##f -@item -There is a new @code{define-event-function} command in analogy to -@code{define-music-function} that can be used for defining music -functions acting as post events without requiring a direction specifier -(@code{-}, @code{^}, or @code{_}) placed before them. -@lilypond[quote,verbatim,ragged-right] -dyn=#(define-event-function (parser location arg) (markup?) - (make-dynamic-script arg)) -\relative c' { c\dyn pfsss } + \clef "GG" c c c c + \clef "tenorG" c c c c + \clef "varC" c c c c + \clef "altovarC" c c c c + \clef "tenorvarC" c c c c + \clef "baritonevarC" c c c + \clef "varpercussion" c c c c @end lilypond @item -A list of ASCII aliases for special characters can be included. -@lilypond[quote,verbatim] -\paper { - #(include-special-characters) +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] +\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 | } -\markup "• † ©right; &OE; &ss; ¶" @end lilypond -@item -There is a new @code{define-scheme-function} command in analogy to -@code{define-music-function} that can be used to define functions -evaluating to Scheme expressions while accepting arguments in Lilypond -syntax. - -@item -The construct @code{#@{ @dots{} #@}} can now be used not just for -constructing sequential music lists, but also for pitches (distinguished -from single note events by the absence of a duration or other -information that can't be part of a pitch), single music events, void -music expressions, post events, markups (mostly freeing users from -having to use the @code{markup} macro), markup lists, number -expressions, context definitions and modifications, and a few other -things. If it encloses nothing or only a single music event, it no -longer returns a sequential music list but rather a void music -expression or just the music event itself, respectively. - -@item -Pitches can be used on the right side of assignments. They are -distinguished from single note events by the absence of a duration or -other information that can't be part of a pitch. +@lilypond[verbatim,quote] +\new Staff { r16 c'16 ~ 8 ~ 4 ~ 2 | } +@end lilypond @item -New command-line option @option{--loglevel=@var{level}} to control how much output -LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEBUG. +Beaming exceptions can now be constructed using the +@code{\beamExceptions} scheme function. One can now write -@item -@code{\once \set} now correctly resets the property value to the previous value. -@lilypond[fragment,quote,relative=2] - \set fingeringOrientations = #'(left) - 4 - \once \set fingeringOrientations = #'(right) - - -"left" +@lilypond[verbatim,quote,relative=1] +\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 alignment of dynamic spanners (hairpins, text crescendo, etc.) is now -automatically broken if a different direction is explicitly given. -@lilypond[fragment,quote,relative=2] -c4_\< c c^\> c c1_\p -@end lilypond +@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 +\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 -Appoggiaturas and acciaccaturas now also work inside a slur, not only inside -a phrasing slur. Also, a function @code{\slashedGrace} was added that does -not use a slur from the acciaccatura note. -@lilypond[fragment,quote,relative=2] -c4( \appoggiatura e8 d4 \acciaccatura e8 d4 \slashedGrace e8 c4) -@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 -To suppress the line on a crescendo text spanner (and other similar spanners), -LilyPond now fully supports the @code{#'style = #'none} property. -@lilypond[fragment,quote,relative=2] -\override DynamicTextSpanner #'style = #'none -c4\cresc c c g, c'\p -@end lilypond - -@item -LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz! +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. -@item -Glissandi can now span multiple 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.14/Documentation/changes/}, -@uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html}, +@uref{http://lilypond.org/doc/v2.18/Documentation/changes/}, +@uref{http://lilypond.org/doc/v2.16/Documentation/changes/}, or @uref{../,go back} to the Documentation index.