]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/changes.tely
Rename OctavateEight to ClefModifier
[lilypond.git] / Documentation / changes.tely
index 6079329d65245e81d5e7b2f7f94baed7230cd96b..2c36d2c13240db7f4fd25ff191dff9f02269e8ec 100644 (file)
@@ -61,6 +61,261 @@ which scares away people.
 
 @end ignore
 
+@item
+Grob @code{OctavateEight} was renamed to @code{ClefModifier}.
+Related context properties were renamed from @code{xxxOctavationyyy}
+to @code{xxxTranspositionyyy}.
+
+@item
+Horizontal space is allowed for tempo and rehearsal marks,
+so that these marks do not overlap each other.
+A new command @code{\markLengthOff} turns this feature off.
+@lilypond[quote,relative=0]
+\compressFullBarRests
+\tempo "Molto vivace" c''2 c'
+\mark\default
+\tempo "Meno mosso" R1*16
+@end lilypond
+
+@item
+There is a new @code{\absolute} command explicitly marking music
+as being entered in absolute pitch.  While this has been the
+default previously, an explicit @code{\absolute} also prevents
+reinterpretation when the passage is placed inside of
+@code{\relative}:
+@lilypond[verbatim,quote]
+\relative c { c'4 \absolute { f'' g'' } c }
+@end lilypond
+
+@item
+When @code{\relative} is used without an explicit reference pitch,
+the reference pitch now is the middle of the first octave, making
+the first entered pitch indistinguishable from absolute pitch.
+Previously, omitting the reference pitch would have lead to a
+default of @code{c'}.  Since that choice was somewhat arbitrary,
+recommended usage was to always specify the reference pitch.
+
+@item
+A new command @code{\single} can be used for converting a property
+override into a tweak to be applied on a single music expression:
+
+@lilypond[quote,verbatim,relative=2]
+<a \single\voiceTwoStyle e' a>1
+@end lilypond
+
+@item
+Two ways of letting graphical objects not appear in the output are
+overriding its @code{transparent} property with @code{#t}
+(retaining the original spacing) or overriding its @code{stencil}
+property with @code{#f} (not using any space at all).  Those two
+operations now have the shorthands @code{\hide} and @code{\omit},
+respectively.  They can either be given a music expression to
+tweak, or the name of a graphical object for which an override
+should be created (for specifying both, use @code{\single} on the
+override form):
+
+@lilypond[quote,verbatim]
+\new Staff \with { \omit Clef }
+\relative c'' <a e' \hide a>1
+@end lilypond
+
+@item
+A new command @code{\temporary} can be applied to overrides in
+order to not have them replace previous property settings.  If a
+@code{\revert} is applied to the same property subsequently, the
+previous setting reappears:
+
+@lilypond[quote,verbatim,relative=2]
+\override NoteHead.color = #red c4
+\override NoteHead.color = #green d
+\revert NoteHead.color e2
+\override NoteHead.color = #red c4
+\temporary\override NoteHead.color = #green d
+\revert NoteHead.color e
+\revert NoteHead.color c
+@end lilypond
+
+This is mainly useful for writing music functions that need to
+have some property changed just for the duration of the function.
+
+@item
+@code{\tag}, @code{\removeWithTag}, and @code{\keepWithTag} can
+now accept a list of symbols rather than just a single symbol for
+marking, removing, and keeping music with any of multiple tags.
+This is particularly important for @code{\keepWithTag} since one
+cannot achieve the same effect by using multiple consecutive
+@code{\keepWithTag} commands.
+
+@item
+The @samp{-d old-relative} option has been removed.  Not actually
+accessible from the command line any more, its remaining use was
+for interpretating @code{\relative} in LilyPond files converted
+automatically from version@tie{}1.8 or older.  It is unclear how
+much of this was actually still operative.
+
+@item
+The meaning of @code{instrumentTransposition} has been reversed.
+After
+@example
+\set instrumentTransposition = #@{ b #@}
+@end example
+a written @code{c'} now sounds like @code{b}.  Previously, this
+would have been the other way round.  This and the following change
+should make dealing with transposing instruments more
+straightforward.
+
+@item
+The music generated by @code{\set} and @code{\override} commands
+is no longer affected by @code{\transpose}.  The main consequence
+is that @code{\transpose} will transpose audible/@/concert pitch and
+printed pitch by the same amount even when the transposed music
+contains @code{\transposition}.  Previously,
+@example
+\transpose c' f' \transposition bes'
+@end example
+was equivalent to @code{\transposition f'}.  Now it stays
+equivalent to @code{\transposition bes'}.
+
+@item
+When checknig for collisions, LilyPond no longer treats objects as
+rectangles.  Instead, the actual shape of objects is approximated
+using an integral-like approach.  This generally results in more
+even and snug positioning of objects and systems:
+
+@lilypond[relative=1]
+#(ly:set-option 'debug-skylines #t)
+\dynamicUp
+c'4\f a4\f d\f( f)
+a,4\< c c c\!
+d4-.\downbow a4^"r'venu..." c \tempo "T1" e
+@end lilypond
+
+Previously, the above snippet looked like this:
+
+@lilypond[relative=1]
+#(ly:set-option 'debug-skylines #t)
+\override Hairpin #'vertical-skylines = #'()
+\override DynamicText #'vertical-skylines = #'()
+\override TextScript #'vertical-skylines = #'()
+\override Score.MetronomeMark #'vertical-skylines = #'()
+\override Staff.Clef #'vertical-skylines = #'()
+\dynamicUp
+c'4\f a4\f d\f( f)
+a,4\< c c c\!
+d4-.\downbow a4^"r'venu..." c \tempo "T1" e
+@end lilypond
+
+Affected objects include @code{Accidentals}, @code{Beams}, @code{Clefs},
+@code{Dynamics}, @code{FiguredBass}, @code{Flags}, @code{Glissandos},
+@code{Lyrics}, @code{MetronomeMarks}, @code{OttavaBrackets},
+@code{Pedals}, @code{RehearsalMarks}, @code{Rests}, @code{Scripts},
+@code{TextScripts}, @code{Ties}, @code{Tuplets} and @code{VoltaBrackets}.
+
+@item
+Tuplets are now created with the @code{\tuplet} command, which
+takes a fraction @code{@var{t}/@var{n}} to specify that @var{t}
+notes are played in the time usually allowed for @var{n}. One
+@code{\tuplet} command can create several tuplet groups if their
+duration is typed after the fraction.
+@lilypond[quote,verbatim,relative=2]
+\tuplet 3/2 { c8 d e } \tuplet 3/2 { f e d } c2
+\tuplet 3/2 4 { c8 d e f e d } c2
+@end lilypond
+The @code{\times} command with its inverted fraction order
+@code{@var{n}/@var{t}} is still available.
+
+@item
+Introducing two new markup-commands; @code{\draw-dashed-line} and
+@code{\draw-dotted-line}.
+
+@noindent
+The dashed-line extends to the whole length given by @var{dest}, if
+@code{full-length} is set to @code{#t} (this is the default) without any
+space at the beginning or end.  @code{off} will then be altered to fit.
+To insist on the given (or default) values of @code{on}, @code{off} use
+@code{\override #'(full-length . #f)}.  Manual settings for @code{on},
+@code{off} and @code{phase} are possible.
+
+@noindent
+The dotted-line always extends to the whole length given by @var{dest},
+without any space at the beginning or end.  Manual settings for
+@code{off} are possible to get larger or smaller space between the dots.
+The given (or default) value of @code{off} will be altered to fit the
+line-length.
+
+@lilypond[verbatim,quote]
+\markup {
+  \draw-dashed-line #'(5.1 . 2.3)
+  \override #'(on . 0.3)
+  \override #'(off . 0.5)
+  \draw-dashed-line #'(5.1 . 2.3)
+  \draw-dotted-line #'(5.1 . 2.3)
+  \override #'(thickness . 2)
+  \override #'(off . 0.2)
+  \draw-dotted-line #'(5.1 . 2.3)
+}
+@end lilypond
+
+@item
+Starting with version@tie{}2.17.10, error messages or the
+@code{textedit} @acronym{URI} used for point-and-click
+functionality specify column numbers starting with@tie{}1 rather
+than@tie{}0.  The byte offset (also part of @code{textedit}
+@acronym{URI}s) still starts at@tie{}0.
+
+@item
+The @code{\clef} command supports optional transposition:
+@lilypond[verbatim,quote,relative=1]
+\clef "treble_(8)"
+c2 c
+\clef "bass^[15]"
+c2 c
+@end lilypond
+
+@item
+The LilyPond syntax of dot-separated words @code{Voice.Accidental}
+has been made interchangeable with @code{#'(Voice Accidental)}, a
+Scheme list of symbols.  As one result, code like
+@example
+\override Voice.TextSpanner #'(bound-details left text) = "rit."
+@end example
+is now equivalent to
+@example
+\override Voice.TextSpanner bound-details.left.text = "rit."
+@end example
+or even
+@example
+\override #'(Voice TextSpanner) bound-details.left.text = "rit."
+@end example
+
+@item
+Grob and grob property path no longer need to be specified as two
+separate arguments to commands like @samp{\override} and
+@code{\revert}, allowing for the syntax
+@example
+\override Voice.TextSpanner.bound-details.left.text = "rit."
+@end example
+Since complementary music functions like @samp{\overrideProperty}
+cannot support forms with and without separating space at the same
+time, using a single dotted path is now the preferred form.
+Specifying grob path and grob property path separately, currently
+still supported with @samp{\override} and @samp{\revert} for
+compatibility reasons, is deprecated.
+
+@item
+Due to words now being accepted as symbol function arguments, the
+interfaces of @samp{\accidentalStyle}, @samp{\alterBroken},
+@samp{\footnote} and @samp{\tweak} had to be redesigned where
+optional symbol arguments were involved.  Please check the
+respective music function documentation for details.
+
+@item
+Several commands now accept symbol lists (conveniently entered as
+dot-separated words) for various kinds of arguments.  These
+include @samp{\accidentalStyle}, @samp{\alterBroken},
+@samp{\footnote}, @samp{\hide}, @samp{\omit},
+@samp{\overrideProperty}, @samp{\shape}, and @samp{\tweak}.
+
 @item
 The bar line user interface has changed. Bar glyphs now resemble the
 appearance of the bar line, so a left repeat sign has to be coded