X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fchanges.tely;h=83db4ea85980a7ba7bc1dc1b0d02b5ec5e8b3917;hb=413eeca26f5baa563b9b866a60831507e8bc0d3e;hp=b3fe430955eb778f9f8f932c832d8945d433ec8a;hpb=e885a8cabc8335f1c46c48e92d4048e9d258cd10;p=lilypond.git diff --git a/Documentation/changes.tely b/Documentation/changes.tely index b3fe430955..83db4ea859 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -60,6 +60,85 @@ which scares away people. * only show user-visible changes. @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} + +@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. + +@item +Support for Kievan square notation: +@lilypond[quote,relative=1,verbatim] +\new KievanVoice { + \cadenzaOn + c d e f g a bes + \bar "kievan" +} +@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 + } +} +\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 + +@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 @item The LilyPond G clef has been redesigned - upper loop is now more balanced, @@ -127,44 +206,60 @@ 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 +The following three items are consequences of this change. + +@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. + +@item +String numbers and right hand fingerings on single notes now appear +without having to be written inside of chord brackets. + +@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> } @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. +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 -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. +@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 @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. +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