]> git.donarmstrong.com Git - lilypond.git/blobdiff - NEWS.txt
Imported Upstream version 2.16.0
[lilypond.git] / NEWS.txt
index 1a11d9b769fbd20ee8bba600ad28b85d95df37c4..6880edb9f864353bdc273477c8b4829faf05bf1a 100644 (file)
--- a/NEWS.txt
+++ b/NEWS.txt
-New features in 2.12 since 2.10
+New features in 2.16 since 2.14
 *******************************
 
-   * Fret diagrams can now have variable string thickness:
+   * 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]
 
 
-   * A new fret diagram orientation, opposing-landscape, is available:
+   * 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 `_'.
 
-          [image of music]
-
-
-   * Unbeamed 128th notes are now supported:
-
-          [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).
-
-          [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:
-
-          [image of music]
+     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.
 
+     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.
 
-   * `\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.
+   * Support for Kievan square notation:
 
-          \bookpart {
-            \header {
-              title = "Book title"
-              subtitle = "First part"
-            }
-            \score { ... }
-            ...
+          \new KievanVoice {
+            \cadenzaOn
+            c d e f g a bes
+            \bar "kievan"
           }
-          \bookpart {
-            \header {
-              subtitle = "Second part"
-            }
-            \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]
+           [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:
+   * 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'.
 
           [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]
-
+   * A Scheme function to adjust the control points of curves such as
+     slurs and ties, developed by several users, is now included in
+     LilyPond.
 
-   * Four automatic accidentals rules have been added: `neo-modern',
-     `neo-modern-cautionary', `dodecaphonic' and `teaching'.  The
-     following example illustrates `neo-modern' rule.
+          g8->( bes,-.) d4
+          \shape Slur #'((-0.5 . 1.5) (-3 . 0) (0 . 0) (0 . 0))
+          g8->( bes,!-.) d4
+           [image of music]
 
-          [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 }
 
-   * Flags can now be generated with Scheme-code using the `'flag'
-     `Stem' grob property.  Existing scores will work without change.
+   * 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).
 
-          [image of music]
+   * 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'
 
-   * Harp pedalling diagrams were added:
+        * `bracket'
 
-          [image of music]
+        * `dashed-slur'
 
+        * `dot'
 
-   * Predefined, user-configurable, transposable fret diagrams are now
-     available in the `FretBoards' context:
+        * `oval'
 
-          [image of music]
+        * `repeat-slash'
 
+        * `zigzag-line'
 
-   * 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.
+   * Flags are now treated as separate objects rather than as stem
+     parts.
 
           [image of music]
 
 
-   * In figured bass you can now also use a backslash through a number
-     to indicate a raised 6th step.
+   * Two alternative methods for bar numbering can be set, especially
+     for when using repeated music;
 
           [image of music]
 
 
-   * Arpeggios may now use "parenthesis" style brackets:
+   * 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> }
+           [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]
+
+
+   * 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.
+
+   * 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.
+
+   * 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.
+
+   * The `\markuplines' command has been renamed to `\markuplist' for a
+     better match with its semantics and general Lilypond nomenclature.
+
+   * 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.
 
           [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.
+     To do this, several callback functions are now deprecated.
+        * `ly:beam::calc-least-squares-positions'
 
-   * It is now possible to specify, using the `page-count' variable in
-     the paper block, the number of pages that will be used.
+        * `ly:beam::slope-damping'
 
-   * A new page breaking function, `ly:minimal-breaking', is dedicated
-     to books with many pages or a lot of text.
+        * `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.
 
-   * A table of contents is included using `\markuplines
-     \table-of-contents'.  Elements are added to it using the
-     `\tocItem' command.
+   * 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.
 
-   * 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.
+   * Music functions (and their close relatives) can now be defined with
+     optional arguments.
 
-   * 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.
+   * For defining commands executed only for their side-effects,
+     `define-void-function' is now available.
 
-   * Page breaking and page turning commands (`\pageBreak',
-     `\noPageBreak', etc.) can be used at top-level, between scores and
-     top-level markups.
+   * 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.
 
-   * 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.
+          dyn=#(define-event-function (parser location arg) (markup?)
+                   (make-dynamic-script arg))
+          \relative c' { c\dyn pfsss }
+           [image of music]
 
-   * 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]
 
+   * A list of ASCII aliases for special characters can be included.
 
-     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.
-
-          [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.
+          \paper {
+            #(include-special-characters)
+          }
+          \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.
+
+   * 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.
+
+   * 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]
 
 
-   * Tie directions may be set with `^~' and `_~'.
-
-   * Tablature now supports harmonics and slides:
+   * The alignment of dynamic spanners (hairpins, text crescendo, etc.)
+     is now automatically broken if a different direction is explicitly
+     given.
 
           [image of music]
 
 
-     This feature was sponsored by Mike Amundsen
-
-   * Horizontal spacing now follows object outlines more accurately.
-     This allows tighter horizontal spacing.
+   * 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]
 
 
-   * Objects that belong outside of the staff are now positioned
-     automatically to avoid collisions.
+   * To suppress the line on a crescendo text spanner (and other
+     similar spanners), LilyPond now fully supports the `#'style =
+     #'none' property.
 
           [image of music]
 
 
-   * Staves are spaced vertically using a skyline algorithm.  This helps
-     prevent uneven vertical spacing.
-
-          [image of music]
+   * LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!
 
+   * Glissandi can now span multiple lines.