X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fchanges.tely;h=16f0085e98fbbe246fd68ef6443c1f0625a1bac1;hb=a7176ca9118f2d385b352b4477d538d091b19029;hp=8281811608c63ac3b6cf840898e44f43e5c0b298;hpb=252ec5e71b5e121734a9c9897245137cb07e4a1f;p=lilypond.git diff --git a/Documentation/changes.tely b/Documentation/changes.tely index 8281811608..16f0085e98 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -61,6 +61,21 @@ which scares away people. @end ignore +@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] @@ -99,12 +114,17 @@ 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. 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[quote,ragged-right] +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 @@ -113,10 +133,19 @@ 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. String number -indications like @code{\1} can be used on single notes. If you need to -suppress them in some context, override their @code{stencil} with -@code{##f}. +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{}#@}}) @@ -145,7 +174,8 @@ nomenclature. @item The interface for specifying string tunings in tablature has been -simplified considerably. +simplified considerably and employs the scheme function +@code{\stringTuning} for most purposes. @item Beams can now have their slopes preserved over line breaks. @@ -168,10 +198,11 @@ 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 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 @@ -184,7 +215,7 @@ For defining commands executed only for their side-effects, @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 events without requiring a direction specifier +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?) @@ -209,20 +240,27 @@ 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