]> git.donarmstrong.com Git - lilypond.git/blobdiff - NEWS.txt
use autoreconf to rebuild the configuration scripts
[lilypond.git] / NEWS.txt
index 1a11d9b769fbd20ee8bba600ad28b85d95df37c4..a0cefcd144f8ca4e2c64e3f92b3e43aa99bed69d 100644 (file)
--- a/NEWS.txt
+++ b/NEWS.txt
-New features in 2.12 since 2.10
+New features in 2.18 since 2.16
 *******************************
 
-   * Fret diagrams can now have variable string thickness:
-
-          [image of music]
-
-
-   * A new fret diagram orientation, opposing-landscape, is available:
-
-          [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]
 
 
-   * Unbeamed 128th notes are now supported:
+   * Several articulations can be put into a single variable or
+     returned from an event function:
 
-          [image of music]
+          sempreStacc = -. ^\markup \italic sempre
+          \relative { c''4\sempreStacc c c c }
+           [image of music]
 
 
-   * Extending LilyPond's existing support for microtones, there are
-     now arrowed accidentals for the notation of microtonal alterations.
-     To use them, redefine the `glyph-name-alist' property of
-     `Accidental' as in the following example which uses quartertones
-     to typeset arrowed accidentals. Alternatively, it is possible to
-     define separate names for all notes with arrowed accidentals (see
-     `ly/makam.ly' for boilerplate code).
+   * 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
 
-          [image of music]
+          \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]
 
 
-   * Straight flags (used in old scores of e.g. Bach, but also in
-     different form in modern scores of e.g. Stockhausen) are now
-     implemented:
+     previously looked like
 
           [image of music]
 
 
-   * `\bookpart' blocks may be used to split a book into several parts,
-     separated by a page break, in order to ease the page breaking, or
-     to use different `\paper' settings in different parts.
-
-          \bookpart {
-            \header {
-              title = "Book title"
-              subtitle = "First part"
+     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
             }
-            \score { ... }
-            ...
-          }
-          \bookpart {
-            \header {
-              subtitle = "Second part"
+            \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" }
+              >>
             }
-            \score { ... }
-            ...
-          }
-
-   * Nested contexts of the same type are now allowed.  This deprecates
-     `InnerStaffGroup' and `InnerChoirStaff'.
-
-          [image of music]
-
-
-   * Percent repeat counters can be shown at regular intervals using the
-     context property `repeatCountVisibility'.
-
-          [image of music]
-
-
-   * In addition to the already existing `showLastLength' property,
-     `showFirstLength' can now be set as well, rendering only the first
-     measures of a piece.  Both properties may be set at the same time:
-
-          [image of music]
-
-
-   * The file extension for MIDI can be set using the command-line
-     program default `midi-extension'.  For Windows, the default
-     extension has been changed to `.mid'.
-
-   * Two variations on the default double repeat bar line are now
-     available.
-
-          [image of music]
-
-
-   * Four automatic accidentals rules have been added: `neo-modern',
-     `neo-modern-cautionary', `dodecaphonic' and `teaching'.  The
-     following example illustrates `neo-modern' rule.
-
-          [image of music]
-
-
-   * Flags can now be generated with Scheme-code using the `'flag'
-     `Stem' grob property.  Existing scores will work without change.
-
-          [image of music]
-
-
-   * Harp pedalling diagrams were added:
-
-          [image of music]
-
-
-   * Predefined, user-configurable, transposable fret diagrams are now
-     available in the `FretBoards' context:
-
-          [image of music]
-
+          >>
+           [image of music]
 
-   * The following syntax changes were made, in chronological order. In
-     addition, fret diagram properties have been moved to
-     `fret-diagram-details', and the `#'style' property is used to
-     select solid/dashed lines instead of `#'dash-fraction'.
-
-          'break-align-symbol -> 'break-align-symbols
-          scripts.caesura -> scripts.caesura.curved
-          \setEasyHeads -> \easyHeadsOn
-          \easyHeadsOff (new command)
-          \fatText -> \textLengthOn
-          \emptyText -> \textLengthOff
-          \set hairpinToBarline -> \override Hairpin #'to-barline
-          \compressMusic -> \scaleDurations
-          \octave -> \octaveCheck
-          \arpeggioUp -> \arpeggioArrowUp
-          \arpeggioDown -> \arpeggioArrowDown
-          \arpeggioNeutral -> \arpeggioNormal
-          \setTextCresc -> \crescTextCresc
-          \setTextDecresc -> \dimTextDecresc
-          \setTextDecr -> \dimTextDecr
-          \setTextDim -> \dimTextDim
-          \setHairpinCresc -> \crescHairpin
-          \setHairpinDecresc -> \dimHairpin
-          \sustainUp -> \sustainOff
-          \sustainDown -> \sustainOn
-          \sostenutoDown -> \sostenutoOn
-          \sostenutoUp -> \sostenutoOff
-          'infinite-spacing-height -> 'extra-spacing-height
-          #(set-octavation oct) -> \ottava #oct
-          \put-adjacent markup axis dir markup -> \put-adjacent axis dir markup markup
-          \pointAndClickOn (new command)
-          \pointAndClickOff (new command)
-          \center-align -> \center-column
-          \hcenter -> \center-align
-          printallheaders -> print-all-headers
-          \bigger -> \larger (already existing command)
-          systemSeparatorMarkup -> system-separator-markup
-
-     Moreover, some files in the `ly/' directory have been renamed; the
-     *-init.ly filenames are now only used for files that are
-     automatically included, while such files as `makam-init.ly' or
-     `gregorian-init.ly' have been renamed to `makam.ly' or
-     `gregorian.ly'.
-
-   * The "tex" and "texstr" backends have been removed.  Font are now
-     accessed via the fontconfig library; the Pango library is used to
-     display text strings.
-
-   * Metronome marks can now also contain a textual description.  The
-     duration and count (if given) are shown in parentheses after the
-     text.
 
-          [image of music]
-
-
-   * In figured bass you can now also use a backslash through a number
-     to indicate a raised 6th step.
-
-          [image of music]
-
-
-   * Arpeggios may now use "parenthesis" style brackets:
-
-          [image of music]
-
-
-   * Single-system scores are now naturally spaced instead of being
-     stretched to fill the line width.  This can be changed by setting
-     `ragged-right = ##f'.
-
-   * Enclosing text within boxes with rounded corners is now possible,
-     using the `\rounded-box' markup command.
-
-   * `lilypond-book' can run any program instead of `latex' to guess
-     the line width, thanks to `--latex-program' command line option.
-
-   * Underlining is now possible with the `\underline' markup command.
-
-   * It is now possible to specify, using the `page-count' variable in
-     the paper block, the number of pages that will be used.
-
-   * A new page breaking function, `ly:minimal-breaking', is dedicated
-     to books with many pages or a lot of text.
-
-   * A table of contents is included using `\markuplines
-     \table-of-contents'.  Elements are added to it using the
-     `\tocItem' command.
-
-   * Text spreading over several pages is entered using the
-     `\markuplines' keyword.  Builtin markup list commands, such as
-     `\justified-lines' or `\wordwrap-lines' may be used, and new ones
-     created using the `define-markup-list-command' Scheme macro.
-
-   * Particular points of a book may be marked with the `\label'
-     command.  Then, the page where these points are placed can be
-     referred to using the `\page-ref' markup command.
-
-   * Page breaking and page turning commands (`\pageBreak',
-     `\noPageBreak', etc.) can be used at top-level, between scores and
-     top-level markups.
-
-   * The following options are now changed as a `-d' sub-option:
-     `--backend', `--safe', `--preview' and `--no-pages' (which became
-     `-dno-print-pages').  The `-b' option does not exist any more.
-
-   * Improved testing procedures now catch changes in CPU and memory
-     performance, page layout, MIDI results and warnings.  This helps to
-     reduce the number of regression errors during development,
-     resulting in more stable releases.
-
-     See `INSTALL.html#Testing-LilyPond' for more information.
-
-   * Nested properties, such as `'details' in `Slur', can be reverted
-     as well.  The syntax for this is
-
-          \revert Slur #'(details closeness-factor)
-
-   * All line spanners are more flexible now in the configuration of
-     their end points.  This includes glissando, voice followers, text
-     crescendos and other text spanners.  The old syntax for setting
-     text on line spanners is no longer valid.
-
-          [image of music]
-
-
-     This feature was sponsored by Trevor Bača.
-
-   * The environment variable `LILYPONDPREFIX' has been renamed
-     `LILYPOND_DATADIR'.
-
-   * Notes or rests, such as a typical end note, that fill an entire
-     measure are preceded by some more space.
+   * New commands `markLengthOn' and `markLengthOff' control the
+     allowance of horizontal space for tempo and rehearsal marks.
 
           [image of music]
 
 
-   * All `\score's in a lilypond-book fragment are now inserted into
-     the document.  Also, toplevel markups don't result in an entire
-     page.
-
-   * Alterations (such as a sharp or flat) may now be arbitrary
-     fractions.  This allows some forms of microtonal music.  For
-     example, Turkish makam music uses 1/9th tone alterations.
+   * 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]
 
 
-   * Tie directions may be set with `^~' and `_~'.
-
-   * Tablature now supports harmonics and slides:
+   * 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.
 
-          [image of music]
+     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]
+
+
+   * The articulation shorthand for `\staccatissimo' has been renamed
+     from `-|' to `-!'.
+
+   * Tempo change ranges are now written as `\tempo 4 = 60 - 68' rather
+     than `\tempo 4 = 60 ~ 68'.
+
+   * Grob `OctavateEight' was renamed to `ClefModifier'.  Related
+     context properties were renamed from `xxxOctavationyyy' to
+     `xxxTranspositionyyy'.
+
+   * 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':
+
+          \relative c { c'4 \absolute { f'' g'' } c }
+           [image of music]
+
+
+   * 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.
 
-
-     This feature was sponsored by Mike Amundsen
-
-   * Horizontal spacing now follows object outlines more accurately.
-     This allows tighter horizontal spacing.
-
-          [image of music]
-
-
-   * Objects that belong outside of the staff are now positioned
-     automatically to avoid collisions.
-
-          [image of music]
-
-
-   * Staves are spaced vertically using a skyline algorithm.  This helps
-     prevent uneven vertical spacing.
+   * 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]
+
+
+   * 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):
+
+          \new Staff \with { \omit Clef }
+          \relative c'' <a e' \hide a>1
+           [image of music]
+
+
+   * 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:
+
+          \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]
+
+
+     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]
+
+
+     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)
+          }
+           [image of music]
+
+
+   * 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.
+
+   * The `\clef' command supports optional transposition:
+
+          \clef "treble_(8)"
+          c2 c
+          \clef "bass^[15]"
+          c2 c
+           [image of music]
+
+
+   * 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]