X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fchanges.tely;h=f5e4f151d20f1aa5ac265c57e2ae204137f15365;hb=efec448b936bd63d82571cf79f8435768605c66d;hp=002f6a89cf094a54f6707a1e4deea9468e588602;hpb=fd7ad42f98d7e6117958a41e74cd736e396fb933;p=lilypond.git diff --git a/Documentation/changes.tely b/Documentation/changes.tely index 002f6a89cf..683cdb54fc 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -36,11 +36,11 @@ See user manual, \NAME\ @finalout @node Top -@top New features in 2.13 since 2.12 +@top New features in 2.18 since 2.16 @allowcodebreaks false -@itemize @bullet +@itemize @ignore @@ -62,488 +62,273 @@ which scares away people. @end ignore @item -A minimal composer toolkit of modal transformations is provided. -A motif may be @notation{transposed}, @notation{inverted} and/or -converted to its @notation{retrograde} within any scale. - -@lilypond -pentatonicScale = \relative a' { a c d f g } -motif = \relative c'' { d8 c f,4 } - -\new Staff << - { - \partial 4 - \pentatonicScale - \motif - \modalTranspose c a, \pentatonicScale \motif - \modalInversion d'' a' \pentatonicScale \motif - \retrograde \motif - } - { - \partial 4 - s4^"pentatonic scale" - s1 - s1^"motif" - s1^"transposition" - s1^"inversion" - s1^"retrograde" - } ->> -@end lilypond - -@item -Black mensural notation has minimal support. - -@item -Support for obliqua shapes within white mensural ligatures enhanced. -@lilypond -\context MensuralStaff -{ - \clef "petrucci-c3" - \[ - \override NoteHead #'style = #'semipetrucci - c'\maxima - \override NoteHead #'style = #'blackpetrucci - a\breve - \revert NoteHead #'style - \override NoteHead #'ligature-flexa = ##t - \override NoteHead #'flexa-width = #3 - g - g' - \override NoteHead #'flexa-width = #5 - c' - d' - \revert NoteHead #'style - c'\longa - \] -} -@end lilypond +Grob @code{OctavateEight} was renamed to @code{ClefModifier}. +Related context properties were renamed from @code{xxxOctavationyyy} +to @code{xxxTranspositionyyy}. @item -Compound time signatures are now supported by the @code{\compoundMeter} command, -which can be used instead of @code{\time}: -@lilypond -\relative c'' { - \compoundMeter #'(3 1 8) - c8 c c c - \compoundMeter #'((2 8) (5 8)) - c8 c c c c c c - \compoundMeter #'((1 2 3 8) (1 4) (3 8)) - c8 c c c c c c4 c8 c c -} +There is a new @code{\absolute} command explicitly marking music +as being entered in absolute pitch. While this has been the +default previously, an explicit @code{\absolute} also prevents +reinterpretation when the passage is placed inside of +@code{\relative}: +@lilypond[verbatim,quote] +\relative c { c'4 \absolute { f'' g'' } c } @end lilypond @item -Lyrics above a staff must have their @code{staff-affinity} set to -@code{DOWN} or must have their @code{alignAboveContext} property -set in order to be properly aligned. For more information, see -@ruser{Placing lyrics vertically}. - -@item -@code{stringTunings} property values have changed from a list of -semitones above middle C to a list of LilyPond pitch values. -convert-ly will handle the change automatically where the value -of @code{stringTunings} is set to a Scheme constant value. - -New commands @code{makeStringTuning} and @code{contextStringTuning} -allow the creation of string tunings in the form of a Lilypond -chord construct. +When @code{\relative} is used without an explicit reference pitch, +the reference pitch now is the middle of the first octave, making +the first entered pitch indistinguishable from absolute pitch. +Previously, omitting the reference pitch would have lead to a +default of @code{c'}. Since that choice was somewhat arbitrary, +recommended usage was to always specify the reference pitch. @item -By using @code{\cueDuringWithClef}, cue notes can now also have their own -clef, which is correctly reset at the end of the cue notes. At the begin -of each line, the standard clef is still displayed, but the cue clef is -shown after the time/key signature in smaller size. -@lilypond -vI = \relative c'' { \clef "treble" \repeat unfold 40 g4 } -\addQuote vIQuote { \vI } - -Solo = \relative c { - \clef "bass" - \cueDuringWithClef #"vIQuote" #DOWN #"treble" { R1 } | - c4 \cueDuringWithClef #"vIQuote" #DOWN #"treble" { - r4 r2 | - r4 - } c4 c2 | - \cueDuringWithClef #"vIQuote" #DOWN "soprano" { R1*2 \break R1 } | - c1 -} +A new command @code{\single} can be used for converting a property +override into a tweak to be applied on a single music expression: -\score { - << - \new Staff \new Voice \Solo - >> -} +@lilypond[quote,verbatim,relative=2] +1 @end lilypond - -@item -Note names can be selected with a new -@code{@bs{}language "italiano"} command, which -can be used in safe mode. The old -@code{@bs{}include "italiano.ly"} syntax is -still supported for now, but will be deprecated -in the future. - -@item -autobeaming is now disabled by @code{\cadenzaOn} and enabled by -@code{\cadenzaOff}. Beaming in cadenzas should be indicated manually. -Also, if a cadenza is used in a piece with autobeaming disabled, it -will need to be disabled again after the cadenza. - @item -The user is now able to specify the name of the predefined fretboard -table. This allows the use of multiple tables, with switching between them -based on user input. +Two ways of letting graphical objects not appear in the output are +overriding its @code{transparent} property with @code{#t} +(retaining the original spacing) or overriding its @code{stencil} +property with @code{#f} (not using any space at all). Those two +operations now have the shorthands @code{\hide} and @code{\omit}, +respectively. They can either be given a music expression to +tweak, or the name of a graphical object for which an override +should be created (for specifying both, use @code{\single} on the +override form): -@item -The part-combiner's decision to combine/not combine notes can now be customized -@lilypond[quote,relative=2] -\partcombine -\relative c' { c2 \partcombineApart c | \partcombineChordsOnce e' e } -\relative c' { c2 \partcombineApart c | c c } +@lilypond[quote,verbatim] +\new Staff \with { \omit Clef } +\relative c'' 1 @end lilypond @item -Tablature staves show fret numbers only by default. To get the -former style, @code{\tabFullNotation} is provided. - -@item -Funk-style and Walker-style shape notes have been added. - -@item -Rests will no longer keep a staff alive if @code{\RemoveEmptyStaffContext} -is used. - -@item -New option @code{-dinclude-settings=INCLUDEFILE.ly}, which causes lilypond -to include the given file before the score is processed. This allows the -user to change global settings without the need to change the score itself. -That way, several different editions/version (e.g. different page sizes) -can be generated from a file without having to modify the score for each -version. +A new command @code{\temporary} can be applied to overrides in +order to not have them replace previous property settings. If a +@code{\revert} is applied to the same property subsequently, the +previous setting reappears: -@item -The autobeaming settings syntax has been changed. beatLength, -beatGrouping, beamSettings, and measureGrouping have all been eliminated. -Autobeaming is now controlled by baseMoment, beatStructure, and -beamExceptions. Default settings for each of these properties can be -stored for any time signature in time-signature-settings, so that -when the time signature is changed, the autobeaming will automatically -change. The new syntax should be much easier and require fewer -overrides. +@lilypond[quote,verbatim,relative=2] +\override NoteHead.color = #red c4 +\override NoteHead.color = #green d +\revert NoteHead.color e2 +\override NoteHead.color = #red c4 +\temporary\override NoteHead.color = #green d +\revert NoteHead.color e +\revert NoteHead.color c +@end lilypond -@item -The SVG backend has optional support for -@uref{http://www.w3.org/Submission/WOFF, WOFF fonts}. Using the Scheme -option @code{-d svg-woff} together with the SVG backend selection -@code{-d backend=svg}, produces SVG output with CSS WOFF font selection. +This is mainly useful for writing music functions that need to +have some property changed just for the duration of the function. @item -The LilyPond G clef has been rotated 1.5 degrees clockwise for improved -balance. The old and new versions can be compared by looking at the -documentation: -@uref{http://lilypond.org/doc/v2.12/Documentation/user/lilypond/The-Feta-font.html#Clef-glyphs, -old version}, -@uref{http://lilypond.org/doc/v2.13/Documentation/notation/the-feta-font.html#Clef-glyphs, -new version}. - +@code{\tag}, @code{\removeWithTag}, and @code{\keepWithTag} can +now accept a list of symbols rather than just a single symbol for +marking, removing, and keeping music with any of multiple tags. +This is particularly important for @code{\keepWithTag} since one +cannot achieve the same effect by using multiple consecutive +@code{\keepWithTag} commands. @item -Text crescendo spanners can now be added directly using @code{\cresc}, -@code{\dim} and @code{\decresc}. -@lilypond[quote,relative=2] -c4\cresc c c c\f | -c4\dim c c c\! -@end lilypond - +The @samp{-d old-relative} option has been removed. Not actually +accessible from the command line any more, its remaining use was +for interpretating @code{\relative} in LilyPond files converted +automatically from version@tie{}1.8 or older. It is unclear how +much of this was actually still operative. @item -The documented syntax of @samp{lilypond} environments in the @LaTeX{} -mode of @command{lilypond-book} has been changed to conform with -standard @LaTeX{} syntax: options now come after the environment name: +The meaning of @code{instrumentTransposition} has been reversed. +After @example -\begin@{lilypond@}[@var{options}] @dots{} +\set instrumentTransposition = #@{ b #@} @end example +a written @code{c'} now sounds like @code{b}. Previously, this +would have been the other way round. This and the following change +should make dealing with transposing instruments more +straightforward. -The previous syntax with options after @samp{\begin} is still accepted -by @command{lilypond-book} but deprecated. Something like +@item +The music generated by @code{\set} and @code{\override} commands +is no longer affected by @code{\transpose}. The main consequence +is that @code{\transpose} will transpose audible/@/concert pitch and +printed pitch by the same amount even when the transposed music +contains @code{\transposition}. Previously, @example -sed -i '/begin\[/s/begin\(\[[^]]*]\)\(@{lilypond@}\)/begin\2\1/' +\transpose c' f' \transposition bes' @end example - -might do the trick for conversion. +was equivalent to @code{\transposition f'}. Now it stays +equivalent to @code{\transposition bes'}. @item -Aesthetics of shape note heads have been enhanced. Variable line thicknesses -have been implemented. All note widths have been made consistent. -Minor shape note commands that use the relative major key for scale steps -have been added. +When checking for collisions, LilyPond no longer treats objects as +rectangles. Instead, the actual shape of objects is approximated +using an integral-like approach. This generally results in more +even and snug positioning of objects and systems: -@item -A variant of the Segno sign is provided: -@lilypond[quote,relative=2] -c4 d e f \bar "S" -g4 f e d +@lilypond[relative=1] +#(ly:set-option 'debug-skylines #t) +\dynamicUp +c'4\f a4\f d\f( f) +a,4\< c c c\! +d4-.\downbow a4^"r'venu..." c \tempo "T1" e @end lilypond -@item -Context modifications (@code{\with} blocks) can be stored in variables and -inserted into contexts or other @code{\with} blocks: -@lilypond[quote,verbatim] -coloredheads = \with { \override NoteHead #'color = #red } -noclef = \with { \remove "Clef_engraver" } -\score { - \new Staff { - \new Voice \with { \coloredheads } \relative c' { c4 e g c } - } - \layout { - \context { - \Staff - \noclef - } - } -} +Previously, the above snippet looked like this: + +@lilypond[relative=1] +#(ly:set-option 'debug-skylines #t) +\override Hairpin #'vertical-skylines = #'() +\override DynamicText #'vertical-skylines = #'() +\override TextScript #'vertical-skylines = #'() +\override Score.MetronomeMark #'vertical-skylines = #'() +\override Staff.Clef #'vertical-skylines = #'() +\dynamicUp +c'4\f a4\f d\f( f) +a,4\< c c c\! +d4-.\downbow a4^"r'venu..." c \tempo "T1" e @end lilypond -@item -A half-open articulation was added: -@lilypond[quote,relative=2] -c4\halfopen +Affected objects include @code{Accidentals}, @code{Beams}, @code{Clefs}, +@code{Dynamics}, @code{FiguredBass}, @code{Flags}, @code{Glissandos}, +@code{Lyrics}, @code{MetronomeMarks}, @code{OttavaBrackets}, +@code{Pedals}, @code{RehearsalMarks}, @code{Rests}, @code{Scripts}, +@code{TextScripts}, @code{Ties}, @code{Tuplets} and @code{VoltaBrackets}. + +@item +Tuplets are now created with the @code{\tuplet} command, which +takes a fraction @code{@var{t}/@var{n}} to specify that @var{t} +notes are played in the time usually allowed for @var{n}. One +@code{\tuplet} command can create several tuplet groups if their +duration is typed after the fraction. +@lilypond[quote,verbatim,relative=2] +\tuplet 3/2 { c8 d e } \tuplet 3/2 { f e d } c2 +\tuplet 3/2 4 { c8 d e f e d } c2 @end lilypond -This is sometimes used to indicate half-open hi-hats. +The @code{\times} command with its inverted fraction order +@code{@var{n}/@var{t}} is still available. @item -The Unicode Bidirectional Algorithm is now fully supported for -single-line markup due to enhanced integration with Pango. +Introducing two new markup-commands; @code{\draw-dashed-line} and +@code{\draw-dotted-line}. -@item -LilyPond is now licensed under the GNU GPL v3+. +@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. -@item -In tablature, frets can be indicated with labels other than numbers: +@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. -@lilypond[verbatim,quote,relative=1] -\new TabStaff -\with { - stringTunings = #`(,(ly:make-pitch 1 3 NATURAL) - ,(ly:make-pitch 1 1 NATURAL) - ,(ly:make-pitch 0 5 NATURAL) - ,(ly:make-pitch 0 3 NATURAL) - ,(ly:make-pitch 0 1 NATURAL) - ,(ly:make-pitch -1 5 NATURAL)) - tablatureFormat = #fret-letter-tablature-format -} -\new TabVoice { - \set fretLabels = #`(,(markup #:with-color red "a") - "b" - ,(markup #:italic #:smaller "c")) - 4. 8 4 +@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) } @end lilypond @item -Layout objects can be printed over a white background, which whites-out objects -in lower layers which lie beneath: - -@lilypond[verbatim,quote,relative=1] -\time 3/4 -\override Staff.StaffSymbol #'layer = #4 -\once \override Tie #'layer = #2 -b'2.~ -\once \override Staff.TimeSignature #'whiteout = ##t -\once \override Staff.TimeSignature #'layer = #3 -\time 5/4 -b4 -@end lilypond +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. @item -Chords can be repeated using the @code{q} shortcut: - -@lilypond[verbatim,quote,relative=2] -8.-^ q16 q4-^ +The @code{\clef} command supports optional transposition: +@lilypond[verbatim,quote,relative=1] +\clef "treble_(8)" +c2 c +\clef "bass^[15]" +c2 c @end lilypond @item -With two-sided mode, margins for odd and even pages can be set using -@code{inner-margin} and @code{outer-margin}: - +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 -\paper @{ - two-sided = ##t - inner-margin = 10 \mm - outer-margin = 20 \mm -@} +\override Voice.TextSpanner #'(bound-details left text) = "rit." @end example - -@item -Paper margin defaults, as specified in @file{ly/paper@/-defaults-init.ly}, apply -to the default paper size (a4) and are automatically scaled according to the -paper size chosen. - -@item -All combinations of @code{left-margin}, @code{right-margin} and -@code{line-width} work now. There is no more need to set @code{line-width} -manually unless you explicitly want to. - -@item -Support for using an alternative music font, such as Gonville, is now -added. - -@item -In addition to the existing @code{\hspace} markup command, -a new @code{\vspace} command has been added to provide an easy -and flexible way to add vertical space in markups. - -@item -The direction of manual beams can be set with @code{^[} and @code{_[}. - -@item -A version of the breve note head has been added with two vertical lines on each side. -@lilypond[quote,relative=2] -\time 4/2 -\override Staff.NoteHead #'style = #'altdefault -c\breve | b\breve -@end lilypond - -@item -Instrument names and vocal names now take into account the extent of -system start delimiters in other staves for their positioning, -resulting in improved default alignment for left-, center- and -right-aligned names. -@lilypond[quote,indent=18\mm] -<< - \new StaffGroup << - \new GrandStaff << - \new Staff { - \set Staff.instrumentName = #"Piccolo" - c''1 - } - \new Staff { - \set Staff.instrumentName = #"Flute" - c''1 - } - >> - \new Staff { - \set Staff.instrumentName = #"Bassoon" - \clef tenor - c'1 - } - >> - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" - \context Staff = "up" { - c'1 - } - \context Staff = "down" { - \clef bass - c1 - } - >> ->> -@end lilypond - -@item -Braces in markup can now be selected by point size using the markup commands -@code{\left-brace} and @code{\right-brace}. -@lilypond[quote] -\markup { - \left-brace #35 - \hspace #2 - \right-brace #45 -} -@end lilypond - -@item -Intermediate .ps files which are created by LilyPond -during compilation are now deleted by default. To keep them, -add the following line to your input files: +is now equivalent to @example -#(ly:set-option 'delete-intermediate-files #f) +\override Voice.TextSpanner bound-details.left.text = "rit." +@end example +or even +@example +\override #'(Voice TextSpanner) bound-details.left.text = "rit." @end example @item -Dashed and dotted slurs, phrasing slurs, and ties -have been made variable thickness, and -partially dashed slurs are now available: -@lilypond[quote,relative=2] -\slurDashed -c4( d e f) | -\slurDotted -g4( f e d) | -\slurHalfDashed -c4( d e f) -@end lilypond - -@item -An eyeglasses markup was added, indicating strongly to look at the -conductor for instructions: -@lilypond[quote,relative=2] -\mark \markup { \eyeglasses } -c4_\markup { \eyeglasses } -@end lilypond - -@item -A snap-pizzicato (also known as Bartok-pizzicato) articulation was added: -@lilypond[quote,relative=2] -c4\snappizzicato -@end lilypond - -@item -Tuplet number formatting functions are now available to print other fractions -and to add notes to the number or fraction: -@lilypond[quote,relative=2] -\once \override TupletNumber #'text = - #(tuplet-number::non-default-tuplet-denominator-text 7) -\times 2/3 { c4. c4. c4. c4. } - -\once \override TupletNumber #'text = - #(tuplet-number::non-default-tuplet-fraction-text 12 7) -\times 2/3 { c4. c4. c4. c4. } -\once \override TupletNumber #'text = - #(tuplet-number::append-note-wrapper - (tuplet-number::non-default-tuplet-fraction-text 12 7) "8") -\times 2/3 { c4. c4. c4. c4. } - -\once \override TupletNumber #'text = - #(tuplet-number::append-note-wrapper tuplet-number::calc-denominator-text "4") -\times 2/3 { c8 c8 c8 c8 c8 c8 } -\once \override TupletNumber #'text = - #(tuplet-number::append-note-wrapper tuplet-number::calc-fraction-text "4") -\times 2/3 { c8 c8 c8 c8 c8 c8 } - -\once \override TupletNumber #'text = - #(tuplet-number::fraction-with-notes "4." "8") -\times 2/3 { c4. c4. c4. c4. } -\once \override TupletNumber #'text = - #(tuplet-number::non-default-fraction-with-notes 12 "8" 4 "4") -\times 2/3 { c4. c4. c4. c4. } +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 -@item -FretBoards now have a chordChanges property to keep repeated FretBoard objects -from being typeset. - -@item -The vertical spacing engine has been drastically changed, making -it more flexible and easier to control. -The spacing between staves within a system can now change -to better use the space on the page. -User-defined contexts may participate in this flexible spacing, -depending on how their @code{staff-affinity} is defined. -Some page formatting variables (@code{page-top-space}, -@code{between-system-space -padding}, and -@code{before- between- after-title-space}) have been replaced -by flexible vertical dimensions. - @end itemize - - @ifhtml For older news, go to -@uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html}, -@uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS.html}, +@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.