X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fchanges.tely;h=b3fe430955eb778f9f8f932c832d8945d433ec8a;hb=be3a3ba0486e28fef1b163c828075bedf7f3d2c1;hp=70544254f84e832faa41e57d1e4e6d44c6e66a82;hpb=14141519116528444054b33419d910903f902ee7;p=lilypond.git diff --git a/Documentation/changes.tely b/Documentation/changes.tely index 70544254f8..b3fe430955 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -61,28 +61,214 @@ which scares away people. @end ignore +@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}. + +@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 +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 +Two alternative methods for bar numbering can be set, especially for +when using repeated music; + +@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 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 advantages of making input and music match more closely are +numerous: music functions previously worked differently when used inside +or outside of chords. Now they are the same, including all the +possibilities of argument parsing. You can now use music variables +inside of chords: a construct like +@lilypond[verbatim,quote,ragged-right] +tonic=fis' +{ <\tonic \transpose c g \tonic> } +@end lilypond +@noindent +would have been unthinkable previously. You can use +@code{#@{@dots{}#@}} for constructing chord constituents. Music +functions inside of chords are no longer specially treated and thus +accept the same arguments as outside of chords. @code{\tweak} now works +on single notes without needing to wrap them in a chord. In theory, it +can also work on command events and lyrics now. Since that was not +possible before, it depends on luck on a case-by-case basis whether the +tweak internals are already receiving the necessary information. Users +are asked to report those cases where they find @code{\tweak} not +working according to reasonable expectations. + +@item +As one consequence, it was possible to reimplement the repetitive chord +entry aid @code{q}. 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 +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, 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. + +@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. + +@item +The @code{\markuplines} command has been renamed to @code{\markuplist} +for a better match with its semantics and general Lilypond +nomenclature. + +@item +The interface for specifying string tunings in tablature has been +simplified considerably and employs the scheme function +@code{\stringTuning} for most purposes. + +@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 +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 +Music functions (and their close relatives) can now be defined with +optional arguments. + +@item +For defining commands executed only for their side-effects, +@code{define-void-function} is now available. + +@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 } +@end lilypond + +@item +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 There is a new @code{define-scheme-function} command in analogy to -@code{define-music-function} which can be used to define functions +@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 single music events, -void music expressions, post events, markups (mostly freeing users from +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. + @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. @item -@code{\set \once} now correctly resets the property value to the previous value. +@code{\once \set} now correctly resets the property value to the previous value. @lilypond[fragment,quote,relative=2] \set fingeringOrientations = #'(left) 4 @@ -91,7 +277,6 @@ LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEB -"left" @end lilypond - @item The alignment of dynamic spanners (hairpins, text crescendo, etc.) is now automatically broken if a different direction is explicitly given. @@ -103,8 +288,8 @@ c4_\< c c^\> c c1_\p @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 -does not use a slur from the acciaccatura note. -@lilypond[fragment,relative=2] +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