X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fchanges.tely;h=83db4ea85980a7ba7bc1dc1b0d02b5ec5e8b3917;hb=3b84da64116a14f6329b8a3b1d981163c61efbde;hp=50f2022cb29c087161107d3d1c074a52f692e37e;hpb=0640f8495c4af9cf7cf2ca7b952b3ee0bcd0b2bf;p=lilypond.git diff --git a/Documentation/changes.tely b/Documentation/changes.tely index 50f2022cb2..83db4ea859 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -60,6 +60,115 @@ 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, +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 @@ -86,16 +195,71 @@ when using repeated music; } @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 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 +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 +@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 @@ -113,7 +277,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. @@ -136,10 +301,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 @@ -152,7 +318,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?) @@ -177,20 +343,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 @@ -210,7 +383,7 @@ 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. +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