X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fchanges.tely;h=e1c05e52c8befbc4c9cf4c9068c71af828995596;hb=2047ac3ecaefeface8ca66d8199590b39c317a1c;hp=3e60eb5879a8fe2fc8bb77e336a1538869cfb39a;hpb=c89a1808d10c9a5e60c74e20668e136623db12f2;p=lilypond.git diff --git a/Documentation/changes.tely b/Documentation/changes.tely index 3e60eb5879..e1c05e52c8 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -36,16 +36,11 @@ See user manual, \NAME\ @finalout @node Top -@top New features in 2.13 since 2.12 - -@ifhtml -This document is also available in @uref{changes.pdf,PDF}. It is part of -the @uref{lilypond/manuals.html,LilyPond Documentation}. -@end ifhtml +@top New features in 2.16 since 2.14 @allowcodebreaks false -@itemize @bullet +@itemize @ignore @@ -67,324 +62,311 @@ which scares away people. @end ignore @item -Funk-style and Walker-style shape notes have been added. +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 + } +} +\relative c'' << + { \time 6/8 + 4. b + } \\ { + 4. + } >> +@end lilypond @item -Rests will no longer keep a staff alive if @code{\RemoveEmptyStaffContext} -is used. +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 @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. +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 @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. +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}. + +@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 @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. +Flags are now treated as separate objects rather than as stem parts. +@lilypond[fragment,quote,relative=2] +\override Flag #'color = #red +g8 +@end lilypond @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}. +Two alternative methods for bar numbering can be set, especially for +when using repeated music; - -@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\! +@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 - @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: -@example -\begin@{lilypond@}[@var{options}] @dots{} -@end example +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 previous syntax with options after @samp{\begin} is still accepted -by @command{lilypond-book} but deprecated. Something like -@example -sed -i '/begin\[/s/begin\(\[[^]]*]\)\(@{lilypond@}\)/begin\2\1/' -@end example - -might do the trick for conversion. +The following three items are consequences of this change. @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. +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. @item -A variant of the segno sign is provided: -@lilypond[quote,relative=2] -c4 d e f \bar "S" -g4 f e d -@end lilypond +String numbers and right hand fingerings on single notes now appear +without having to be written inside of chord brackets. @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 - } - } -} +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> } @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 -A half-open articulation was added: -@lilypond[quote,relative=2] -c4\halfopen +@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> @end lilypond -This is sometimes used to indicate half-open hi-hats. @item -The Unicode Bidirectional Algorithm is now fully supported for -single-line markup due to enhanced integration with Pango. +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 -LilyPond is now licensed under the GNU GPL v3+. +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. @item -In tablature, frets can be indicated with labels other than numbers: - -@lilypond[verbatim,quote,relative=1] -\new TabStaff -\with { - stringTunings = #'(17 14 9 5 2 -3) - tablatureFormat = #fret-letter-tablature-format -} -\new TabVoice { - \set fretLabels = #`(,(markup #:with-color red "a") - "b" - ,(markup #:italic #:smaller "c")) - 4. 8 4 -} -@end lilypond +The @code{\markuplines} command has been renamed to @code{\markuplist} +for a better match with its semantics and general Lilypond +nomenclature. @item -Layout objects can be printed over a white background, which whites-out objects -in lower layers which lie beneath: +The interface for specifying string tunings in tablature has been +simplified considerably and employs the scheme function +@code{\stringTuning} for most purposes. -@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 +@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. @item -Chords can be repeated using the @code{q} shortcut: - -@lilypond[verbatim,quote,relative=2] -8.-^ q16 q4-^ -@end lilypond +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. @item -With two-sided mode, margins for odd and even pages can be set using -@code{inner-margin} and @code{outer-margin}: +Music functions (and their close relatives) can now be defined with +optional arguments. -@example -\paper @{ - two-sided = ##t - inner-margin = 10 \mm - outer-margin = 20 \mm -@} -@end example +@item +For defining commands executed only for their side-effects, +@code{define-void-function} is now available. @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. +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 } +@end lilypond @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. +A list of ASCII aliases for special characters can be included. +@lilypond[quote,verbatim] +\paper { + #(include-special-characters) +} +\markup "• † ©right; &OE; &ss; ¶" +@end lilypond @item -Support for using an alternative music font, such as Gonville, is now -added. +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 -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. +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 -The direction of manual beams can be set with @code{^[} and @code{_[}. +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. @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 +New command-line option @option{--loglevel=@var{level}} to control how much output +LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEBUG. @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 - } - >> ->> +@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" @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 -} +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 -@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: -@example -#(ly:set-option 'delete-intermediate-files #f) -@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) +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 -@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 +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 -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. } -@end lilypond +LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz! @item -FretBoards now have a chordChanges property to keep repeated FretBoard objects -from being typeset. +Glissandi can now span multiple lines. @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.10/Documentation/topdocs/NEWS.html}, or @uref{../,go back} to the Documentation index.