]> git.donarmstrong.com Git - lilypond.git/blobdiff - NEWS.txt
add configure ac patch
[lilypond.git] / NEWS.txt
index 6880edb9f864353bdc273477c8b4829faf05bf1a..a0cefcd144f8ca4e2c64e3f92b3e43aa99bed69d 100644 (file)
--- a/NEWS.txt
+++ b/NEWS.txt
-New features in 2.16 since 2.14
+New features in 2.18 since 2.16
 *******************************
 
-   * Support for cross-staff stems on chords, using `crossStaff' and
-     the `Span_stem_engraver'.  This calculates the length of
-     cross-staff stems automatically.
-
-          [image of music]
+   * The PostScript functionality of stroke adjustment is no longer
+     applied automatically but left to the discretion of the PostScript
+     device (by default, Ghostscript uses it for resolutions up to
+     150dpi when generating raster images).  When it is enabled, a more
+     complex drawing algorithm designed to benefit from stroke
+     adjustment is employed mostly for stems and bar lines.
+
+     Stroke adjustment can be forced by specifying the command line
+     option `-dstrokeadjust' to LilyPond.  When generating `PDF' files,
+     this will usually result in markedly better looking `PDF' previews
+     but significantly larger file size.  Print quality at high
+     resolutions will be unaffected.
+
+   * There is now a new context type called `NullVoice' which, while not
+     appearing in the printed output, can be used to align lyrics.
+     This can be particularly convenient when used in parallel with a
+     `\partcombine' construct.
+
+          soprano = \relative c' { c e g c }
+          alto = \relative c' { a c e g }
+          verse = \lyricmode { This is my song }
+
+          \score {
+            \new Staff <<
+              \partcombine \soprano \alto
+              \new NullVoice = "aligner" \soprano
+              \new Lyrics \lyricsto "aligner" \verse
+            >>
+            \layout {}
+          }
+           [image of music]
 
 
-   * The syntax of words (character sequences recognized without
-     enclosing quotes) and commands (now always a backslash `\'
-     followed by a word) has been unified across all modes: it now
-     consists of alphabetic characters, possibly enclosing isolated
-     dashes `-' and underlines `_'.
+   * Several articulations can be put into a single variable or
+     returned from an event function:
 
-     As one consequence, using unquoted text scripts like (literally!)
-          { c-script c\f_script }
-     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.
+          sempreStacc = -. ^\markup \italic sempre
+          \relative { c''4\sempreStacc c c c }
+           [image of music]
 
-     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.
 
-   * Support for Kievan square notation:
+   * The baseline of score markups is now taken from the reference
+     point (usually the middle of the staff) of the first bottom system
+     rather than the top of the bounding rectangle.  The following
 
-          \new KievanVoice {
-            \cadenzaOn
-            c d e f g a bes
-            \bar "kievan"
+          \markup {
+            violin: \score { \new Staff { <g d' a' e''>1 }
+                             \layout { indent=0 } } ,
+            cello: \score { \new Staff { \clef "bass" <c, g, d a> }
+                            \layout { indent=0 } }
           }
            [image of music]
 
 
-   * Augmentation dots now avoid the other voice in two-voice polyphony
-     so that users can move the `Dot_column_engraver' to set dots
-     independently for each `Voice'.
+     previously looked like
 
           [image of music]
 
 
-   * A Scheme function to adjust the control points of curves such as
-     slurs and ties, developed by several users, is now included in
-     LilyPond.
-
-          g8->( bes,-.) d4
-          \shape Slur #'((-0.5 . 1.5) (-3 . 0) (0 . 0) (0 . 0))
-          g8->( bes,!-.) d4
+     without a reliable way to get both scores to line up.
+
+   * LilyPond no longer automatically infers a `\defaultchild' context
+     in a context definition with `\accepts' clauses.  Any context
+     definition without an explicit or inherited `\defaultchild'
+     definition counts as a `Bottom' context and will be eligible for
+     rhythmic events and overrides without causing the implicit
+     creation of other contexts.  Be sure to specify a `\defaultchild'
+     for non-`Bottom' contexts when defining them from scratch.
+
+   * There is now extensive support for both discant and bass accordion
+     register symbols in the `scm accreg' module, see *note Accordion
+     Registers: (lilypond-notation)Accordion Registers.
+
+          #(use-modules (scm accreg))
+          \new PianoStaff
+          <<
+            \new Staff \relative
+            { \clef "treble"  \discant "10"
+              r8 s32 f'[ bes f] s e[ a e] s d[ g d] s16 e32[ a]
+              \discant "121"
+              << { r16 <f bes> r <e a> r <d g> } \\
+                 { d r a r bes r } >> |
+              <cis e a>1
+            }
+            \new Staff \relative
+            { \clef "treble"  \freeBass "1"
+              r8 d'32 s16. c32 s16. bes32 s16. a32[ cis] s16
+              \clef "bass"  \stdBass "Master"
+              << { r16 <f, bes d>^"b" r <e a c>^"am" r <d g bes>^"gm" |
+                   <e a cis>1^"a" } \\
+                 { d8_"D" c_"C" bes_"B" | a1_"A" }
+              >>
+            }
+          >>
            [image of music]
 
 
-   * Use of `\tempo' specifications in `\midi' blocks (removed in
-     2.9.16 in favor of explicit `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
-     \layout { \accidentalStyle modern }
-     \midi { \tempo 4. = 66 }
-
-   * 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: old version
-     (http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#clef-glyphs),
-     new version
-     (http://lilypond.org/doc/v2.15/Documentation/notation/the-feta-font.html#clef-glyphs).
-
-   * 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:
-        * `beam'
-
-        * `bezier-sandwich'
-
-        * `bracket'
-
-        * `dashed-slur'
-
-        * `dot'
-
-        * `oval'
-
-        * `repeat-slash'
-
-        * `zigzag-line'
-
-   * Flags are now treated as separate objects rather than as stem
-     parts.
+   * New commands `markLengthOn' and `markLengthOff' control the
+     allowance of horizontal space for tempo and rehearsal marks.
 
           [image of music]
 
 
-   * Two alternative methods for bar numbering can be set, especially
-     for when using repeated music;
+   * Rehearsal marks at the beginning of a line are now placed to the
+     right of the clef and key signature by default.  As in previous
+     versions, the `break-alignable-interface' controls the behavior.
 
           [image of music]
 
 
-   * The following is a fundamental change in LilyPond's music
-     representation: Rhythmic events like `LyricEvent' and `NoteEvent'
-     are no longer wrapped in `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
-     `\eventChords' or the Scheme function `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.
-
-   * The repetitive chord entry aid `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
-     `\chordRepeats' manually.
-
-   * String numbers and right hand fingerings on single notes now appear
-     without having to be written inside of chord brackets.
-
-   * 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
-
-          tonic=fis'
-          { <\tonic \transpose c g \tonic> }
+   * Decimal numbers can now be written directly in music, without a
+     hash sign.  Together with the previous change in the way object
+     properties are specified, the code to change the length of stems
+     has changed from this:
+     \override Stem #'length = #5.6
+     e' f' g' a'
+     to this:
+     \override Stem.length = 5.6
+     e' f' g' a'
+
+     One has to write a digit on both sides of the dot - values like
+     `4.' or `-.3' are not allowed.
+
+     Decimal fractions are also not accepted in `\chordmode'.
+
+   * A number of shorthands like `(', `)', `|', `[', `]', `~', `\(',
+     `\)' and others can now freely be redefined like normal commands.
+     An example would be
+
+          "\\{" = (
+          "\\}" = )
+          "(" = \melisma
+          ")" = \melismaEnd
+
+          \new Staff <<
+            \relative c' {
+              c8 \{ d e f \} % slurred
+              g ( a b c ) % no slur, but with melisma
+              c,1 \bar "|."
+             }
+             \addlyrics { Li -- ly -- pond. }
+          >>
            [image of music]
 
 
-     now works as expected.  One can use `#{...#}' for constructing
-     chord constituents.  `\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.
-
-   * `\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:
-
-          <\tweak Accidental #'color #red   cis4
-           \tweak Accidental #'color #green es
-                                            g>
-           [image of music]
-
+   * The articulation shorthand for `\staccatissimo' has been renamed
+     from `-|' to `-!'.
 
-   * Scheme expressions inside of embedded Lilypond (`#{...#}') are now
-     executed in lexical closure of the surrounding Scheme code.  `$'
-     is no longer special in embedded Lilypond.  It can be used
-     unconditionally in Lilypond code for immediate evaluation of Scheme
-     expressions, similar to how `ly:export' could previously be used.
-     `ly:export' has been removed.  As a consequence, `#' 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 `splicing' operators `$@'
-     and `#@' for interpreting the members of a list individually.
+   * Tempo change ranges are now written as `\tempo 4 = 60 - 68' rather
+     than `\tempo 4 = 60 ~ 68'.
 
-   * To reduce the necessity for using `$', Scheme expressions written
-     with `#' are interpreted as music inside of music lists, and as
-     markups or markup lists inside of markups.
+   * Grob `OctavateEight' was renamed to `ClefModifier'.  Related
+     context properties were renamed from `xxxOctavationyyy' to
+     `xxxTranspositionyyy'.
 
-   * 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.  *note Customizing chord names:
-     (lilypond-notation)Customizing chord names. for more information.
+   * There is a new `\absolute' command explicitly marking music as
+     being entered in absolute pitch.  While this has been the default
+     previously, an explicit `\absolute' also prevents reinterpretation
+     when the passage is placed inside of `\relative':
 
-   * The `\markuplines' command has been renamed to `\markuplist' for a
-     better match with its semantics and general Lilypond nomenclature.
+          \relative c { c'4 \absolute { f'' g'' } c }
+           [image of music]
 
-   * The interface for specifying string tunings in tablature has been
-     simplified considerably and employs the scheme function
-     `\stringTuning' for most purposes.
 
-   * Beams can now have their slopes preserved over line breaks.
+   * When `\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 `c''.  Since that choice was somewhat arbitrary,
+     recommended usage was to always specify the reference pitch.
 
-          [image of music]
+   * A new command `\single' can be used for converting a property
+     override into a tweak to be applied on a single music expression:
 
+          <a \single\voiceTwoStyle e' a>1
+           [image of music]
 
-     To do this, several callback functions are now deprecated.
-        * `ly:beam::calc-least-squares-positions'
 
-        * `ly:beam::slope-damping'
+   * Two ways of letting graphical objects not appear in the output are
+     overriding its `transparent' property with `#t' (retaining the
+     original spacing) or overriding its `stencil' property with `#f'
+     (not using any space at all).  Those two operations now have the
+     shorthands `\hide' and `\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 `\single' on the override form):
 
-        * `ly:beam::shift-region-to-valid'
-     Furthermore, `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 `positions' parameter.
+          \new Staff \with { \omit Clef }
+          \relative c'' <a e' \hide a>1
+           [image of music]
 
-   * 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
-     `-3' as a number or a fingering event.
 
-   * Music functions (and their close relatives) can now be defined with
-     optional arguments.
+   * A new command `\temporary' can be applied to overrides in order to
+     not have them replace previous property settings.  If a `\revert'
+     is applied to the same property subsequently, the previous setting
+     reappears:
 
-   * For defining commands executed only for their side-effects,
-     `define-void-function' is now available.
+          \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
+           [image of music]
 
-   * There is a new `define-event-function' command in analogy to
-     `define-music-function' that can be used for defining music
-     functions acting as post events without requiring a direction
-     specifier (`-', `^', or `_') placed before them.
 
-          dyn=#(define-event-function (parser location arg) (markup?)
-                   (make-dynamic-script arg))
-          \relative c' { c\dyn pfsss }
+     This is mainly useful for writing music functions that need to
+     have some property changed just for the duration of the function.
+
+   * `\tag', `\removeWithTag', and `\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 `\keepWithTag' since one cannot achieve the same
+     effect by using multiple consecutive `\keepWithTag' commands.
+
+   * The `-d old-relative' option has been removed.  Not actually
+     accessible from the command line any more, its remaining use was
+     for interpretating `\relative' in LilyPond files converted
+     automatically from version 1.8 or older.  It is unclear how much
+     of this was actually still operative.
+
+   * The meaning of `instrumentTransposition' has been reversed.  After
+     \set instrumentTransposition = #{ b #}
+     a written `c'' now sounds like `b'.  Previously, this would have
+     been the other way round.  This and the following change should
+     make dealing with transposing instruments more straightforward.
+
+   * The music generated by `\set' and `\override' commands is no
+     longer affected by `\transpose'.  The main consequence is that
+     `\transpose' will transpose audible/concert pitch and printed
+     pitch by the same amount even when the transposed music contains
+     `\transposition'.  Previously,
+     \transpose c' f' \transposition bes'
+     was equivalent to `\transposition f''.  Now it stays equivalent to
+     `\transposition bes''.
+
+   * When checking 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:
+
+     [image of music]
+
+     Previously, the above snippet looked like this:
+
+     [image of music]
+
+     Affected objects include `Accidentals', `Beams', `Clefs',
+     `Dynamics', `FiguredBass', `Flags', `Glissandos', `Lyrics',
+     `MetronomeMarks', `OttavaBrackets', `Pedals', `RehearsalMarks',
+     `Rests', `Scripts', `TextScripts', `Ties', `Tuplets' and
+     `VoltaBrackets'.
+
+   * Tuplets are now created with the `\tuplet' command, which takes a
+     fraction `T/N' to specify that T notes are played in the time
+     usually allowed for N. One `\tuplet' command can create several
+     tuplet groups if their duration is typed after the fraction.
+
+          \tuplet 3/2 { c8 d e } \tuplet 3/2 { f e d } c2
+          \tuplet 3/2 4 { c8 d e f e d } c2
            [image of music]
 
 
-   * A list of ASCII aliases for special characters can be included.
-
-          \paper {
-            #(include-special-characters)
+     The `\times' command with its inverted fraction order `N/T' is
+     still available.
+
+   * Introducing two new markup-commands; `\draw-dashed-line' and
+     `\draw-dotted-line'.
+
+     The dashed-line extends to the whole length given by DEST, if
+     `full-length' is set to `#t' (this is the default) without any
+     space at the beginning or end.  `off' will then be altered to fit.
+     To insist on the given (or default) values of `on', `off' use
+     `\override #'(full-length . #f)'.  Manual settings for `on', `off'
+     and `phase' are possible.
+
+     The dotted-line always extends to the whole length given by DEST,
+     without any space at the beginning or end.  Manual settings for
+     `off' are possible to get larger or smaller space between the dots.
+     The given (or default) value of `off' will be altered to fit the
+     line-length.
+
+          \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)
           }
-          \markup "&bull; &dagger; &copyright; &OE; &ss; &para;"
            [image of music]
 
 
-   * There is a new `define-scheme-function' command in analogy to
-     `define-music-function' that can be used to define functions
-     evaluating to Scheme expressions while accepting arguments in
-     Lilypond syntax.
-
-   * The construct `#{ ... #}' can now be used not just for
-     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 `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.
+   * Starting with version 2.17.10, error messages or the `textedit'
+     URI used for point-and-click functionality specify column numbers
+     starting with 1 rather than 0.  The byte offset (also part of
+     `textedit' URIs) still starts at 0.
 
-   * 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.
+   * The `\clef' command supports optional transposition:
 
-   * New command-line option `--loglevel=LEVEL' to control how much
-     output LilyPond creates. Possible values are ERROR, WARN,
-     BASIC_PROGRESS, PROGRESS, DEBUG.
-
-   * `\once \set' now correctly resets the property value to the
-     previous value.
-
-          [image of music]
-
-
-   * The alignment of dynamic spanners (hairpins, text crescendo, etc.)
-     is now automatically broken if a different direction is explicitly
-     given.
-
-          [image of music]
-
-
-   * Appoggiaturas and acciaccaturas now also work inside a slur, not
-     only inside a phrasing slur. Also, a function `\slashedGrace' was
-     added that does not use a slur from the acciaccatura note.
-
-          [image of music]
+          \clef "treble_(8)"
+          c2 c
+          \clef "bass^[15]"
+          c2 c
+           [image of music]
 
 
-   * To suppress the line on a crescendo text spanner (and other
-     similar spanners), LilyPond now fully supports the `#'style =
-     #'none' property.
+   * The LilyPond syntax of dot-separated words `Voice.Accidental' has
+     been made interchangeable with `#'(Voice Accidental)', a Scheme
+     list of symbols.  As one result, code like
+     \override Voice.TextSpanner #'(bound-details left text) = "rit."
+     is now equivalent to
+     \override Voice.TextSpanner bound-details.left.text = "rit."
+     or even
+     \override #'(Voice TextSpanner) bound-details.left.text = "rit."
+
+   * Grob and grob property path no longer need to be specified as two
+     separate arguments to commands like `\override' and `\revert',
+     allowing for the syntax
+     \override Voice.TextSpanner.bound-details.left.text = "rit."
+     Since complementary music functions like `\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 `\override' and `\revert' for compatibility
+     reasons, is deprecated.
+
+   * Due to words now being accepted as symbol function arguments, the
+     interfaces of `\accidentalStyle', `\alterBroken', `\footnote' and
+     `\tweak' had to be redesigned where optional symbol arguments were
+     involved.  Please check the respective music function
+     documentation for details.
+
+   * Several commands now accept symbol lists (conveniently entered as
+     dot-separated words) for various kinds of arguments.  These
+     include `\accidentalStyle', `\alterBroken', `\footnote', `\hide',
+     `\omit', `\overrideProperty', `\shape', and `\tweak'.
+
+   * 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 as `.|:'. The command `\defineBarLine' provides an easy way
+     to define additional bar line styles.
+
+   * Accidentals in the key signature may be printed in octaves other
+     than their traditional positions, or in multiple octaves.
 
           [image of music]
 
 
-   * LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!
-
-   * Glissandi can now span multiple lines.
-
 
 
 \1f