]> git.donarmstrong.com Git - lilypond.git/blobdiff - NEWS.txt
Imported Upstream version 2.16.0
[lilypond.git] / NEWS.txt
index 64fcff492d4d7d3a8e6590d501f4a474e2efaab1..6880edb9f864353bdc273477c8b4829faf05bf1a 100644 (file)
--- a/NEWS.txt
+++ b/NEWS.txt
-New features in 2.14 since 2.12
+New features in 2.16 since 2.14
 *******************************
 
-   * Lilypond now helps beams avoid collisions with other grobs!  This
-     feature works completely with manual beams.  It also works for all
-     automatic beams that do not end right before a change in staff.
-     For this special case, please use manual beams.
+   * Support for cross-staff stems on chords, using `crossStaff' and
+     the `Span_stem_engraver'.  This calculates the length of
+     cross-staff stems automatically.
 
-   * The Articulate script by Peter Chubb, which is GPLv3 licensed, is
-     now a part of the distribution.  It allows easy generation of
-     improved MIDI files that perform non-legato by default, legato
-     slurs, staccato, tempo markings, trills, etc.
-
-          \include "articulate.ly"
-          \articulate <<
-                all the rest of the score...
-          >>
-
-   * Single beat repeats for sixteenth or shorter notes and beat
-     repeats for measures containing notes of varying durations are now
-     supported.
-
-     [image of music]
-
-   * Lilypond now engraves woodwind fingering charts.
-
-     [image of music]
-
-   * MIDI output has been improved
-        * the option `\set Score.midiChannelMapping = #'voice' puts
-          each voice on its own midi MIDI channel
-
-        * the option `\set Score.midiChannelMapping = #'instrument'
-          puts identical instruments on the same MIDI channel.  This
-          means that e.g. for a full orchestral score there are always
-          16 (15 plus percussion) differently sounding instruments
-          available, unrestricted by the number of staves or voices.
-          (Some MIDI players will cut off notes, however, if two voices
-          play the same pitch simultaneously on the same channel.) This
-          option also stores each voice in a separate track in the MIDI
-          file.
-
-        * the default, `\set Score.midiChannelMapping = #'staff',
-          assigns one MIDI channel per staff.  This setting allows
-          instrument changes (implemented as MIDI program changes) to
-          re-use single MIDI channel.
-
-        * dynamics are now rendered as note velocities, no longer as
-          midi volume.  This improves the sound on [high end] midi
-          renderers.
-
-   * MIDI-import through Midi2ly is improved
-        * Midi2ly now also works on Windows systems
-
-        * MIDI-files with more than 32 tracks are now handled
-
-        * notes on certain simultaneous voices no longer ignored
-
-        * notes overrunning a bar line are no longer truncated
-
-        * initial key signature and time signature are respected
-
-        * a problem with octaves in subsequent tracks/voices is fixed
-
-        * initial support for multiple voices notated on one staff
+          [image of music]
 
-        * the instrumentName is set from track data
 
-        * new -skip option, rests are displayed by default
+   * 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 `_'.
 
-        * rests overrunning a bar line are not truncated
+     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.
 
-        * new -include-header option for setting titles
+     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.
 
-        * new -preview option for big MIDI-files
-     The first feature was sponsored by Valentin Villenave, the other
-     features were sponsored by Image-Line Software for FL Studio.
+   * Support for Kievan square notation:
 
-   * A new `Completion_rest_engraver' is available for automatically
-     converting long rests which overrun bar lines, matching the
-     `Completion_heads_engraver' for notes
-          \layout {
-            \context {
-              \Voice
-              \remove "Note_heads_engraver"
-              \consists "Completion_heads_engraver"
-              \remove "Rest_engraver"
-              \consists "Completion_rest_engraver"
-            }
-          }
-     This feature was sponsored by Image-Line Software for FL Studio.
-
-   * Dots can be added to the table of contents items using:
-          \paper {
-            tocItemMarkup = \tocItemWithDotsMarkup
+          \new KievanVoice {
+            \cadenzaOn
+            c d e f g a bes
+            \bar "kievan"
           }
+           [image of music]
 
-   * New markup commands `\pattern' and `\fill-with-pattern' are
-     available.  [image of music]
 
-   * A minimal composer toolkit of modal transformations is provided.
-     A motif may be transposed, inverted and/or converted to its
-     retrograde within any scale.
+   * 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]
+          [image of music]
 
-   * Added minimal support for black mensural notation.
 
-   * Enhanced support for obliqua shapes within white mensural
-     ligatures.
+   * A Scheme function to adjust the control points of curves such as
+     slurs and ties, developed by several users, is now included in
+     LilyPond.
 
-     [image of music]
+          g8->( bes,-.) d4
+          \shape Slur #'((-0.5 . 1.5) (-3 . 0) (0 . 0) (0 . 0))
+          g8->( bes,!-.) d4
+           [image of music]
 
-   * New markup functions `\with-link' and `\page-link' that add
-     hyperlinks to a given label or a given page number. This works in
-     the PDF backend only. All entries to the table of contents now
-     automatically add hyperlinks to the pages they are referring to.
 
-   * Compound time signatures are now supported by the `\compoundMeter'
-     command, which can be used instead of `\time':
+   * 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 }
 
-     [image of music]
+   * 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).
 
-   * Lyrics above a staff must have their `staff-affinity' set to
-     `DOWN' or must have their `alignAboveContext' property set in
-     order to be properly aligned.  For more information, see *note
-     Placing lyrics vertically: (lilypond-notation)Placing lyrics
-     vertically.
+   * 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'
 
-   * `stringTunings' property values have changed from a list of
-     semitones above middle C to a list of LilyPond pitch values.
-     convert-ly will handle the change automatically where the value of
-     `stringTunings' is set to a Scheme constant value.
+        * `bezier-sandwich'
 
-     New commands `makeStringTuning' and `contextStringTuning' allow
-     the creation of string tunings in the form of a Lilypond chord
-     construct.
+        * `bracket'
 
-   * By using `\cueDuringWithClef', cue notes can now also have their
-     own clef, which is correctly reset at the end of the cue notes.
-     At the begin of each line, the standard clef is still displayed,
-     but the cue clef is shown after the time/key signature in smaller
-     size.
+        * `dashed-slur'
 
-     [image of music]
+        * `dot'
 
-   * Note names can be selected with a new `\language "italiano"'
-     command, which can be used in safe mode.  The old `\include
-     "italiano.ly"' syntax is still supported for now, but will be
-     deprecated in the future.
+        * `oval'
 
-   * autobeaming is now disabled by `\cadenzaOn' and enabled by
-     `\cadenzaOff'.  Beaming in cadenzas should be indicated manually.
-     Also, if a cadenza is used in a piece with autobeaming disabled, it
-     will need to be disabled again after the cadenza.
+        * `repeat-slash'
 
-   * The user is now able to specify the name of the predefined
-     fretboard table.  This allows the use of multiple tables, with
-     switching between them based on user input.
+        * `zigzag-line'
 
-   * The part-combiner's decision to combine/not combine notes can now
-     be customized
+   * Flags are now treated as separate objects rather than as stem
+     parts.
 
           [image of music]
 
 
-   * Tablature staves show fret numbers only by default. To get the
-     former style, `\tabFullNotation' is provided.
+   * Two alternative methods for bar numbering can be set, especially
+     for when using repeated music;
 
-   * Funk-style and Walker-style shape notes have been added.
+          [image of music]
 
-   * Rests will no longer keep a staff alive if
-     `\RemoveEmptyStaffContext' is used.
 
-   * New option `-dinclude-settings=INCLUDEFILE.ly', which causes
-     lilypond to include the given file before the score is processed.
-     This allows the user to change global settings without the need to
-     change the score itself.  That way, several different
-     editions/version (e.g. different page sizes) can be generated from
-     a file without having to modify the score for each version.
+   * 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 autobeaming settings syntax has been changed.  beatLength,
-     beatGrouping, beamSettings, and measureGrouping have all been
-     eliminated.  Autobeaming is now controlled by baseMoment,
-     beatStructure, and beamExceptions.  Default settings for each of
-     these properties can be stored for any time signature in
-     time-signature-settings, so that when the time signature is
-     changed, the autobeaming will automatically change.  The new
-     syntax should be much easier and require fewer overrides.
+     The following three items are consequences of this change.
 
-   * The SVG backend has optional support for WOFF fonts
-     (http://www.w3.org/Submission/WOFF).  Using the Scheme option `-d
-     svg-woff' together with the SVG backend selection `-d
-     backend=svg', produces SVG output with CSS WOFF font selection.
+   * 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.
 
-   * The LilyPond G clef has been rotated 1.5 degrees clockwise for
-     improved balance.  The old and new versions can be compared by
-     looking at the documentation: old version
-     (http://lilypond.org/doc/v2.12/Documentation/user/lilypond/The-Feta-font.html#Clef-glyphs),
-     new version
-     (http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#Clef-glyphs).
+   * String numbers and right hand fingerings on single notes now appear
+     without having to be written inside of chord brackets.
 
-   * Text crescendo spanners can now be added directly using `\cresc',
-     `\dim' and `\decresc'.
+   * 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
 
-          [image of music]
+          tonic=fis'
+          { <\tonic \transpose c g \tonic> }
+           [image of music]
 
 
-   * The documented syntax of `lilypond' environments in the LaTeX mode
-     of `lilypond-book' has been changed to conform with standard LaTeX
-     syntax: options now come after the environment name:
-          \begin{lilypond}[OPTIONS] ...
+     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.
 
-     The previous syntax with options after `\begin' is still accepted
-     by `lilypond-book' but deprecated.  Something like
-          sed -i '/begin\[/s/begin\(\[[^]]*]\)\({lilypond}\)/begin\2\1/'
+   * `\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:
 
-     might do the trick for conversion.
+          <\tweak Accidental #'color #red   cis4
+           \tweak Accidental #'color #green es
+                                            g>
+           [image of music]
 
-   * Aesthetics of shape note heads have been enhanced.  Variable line
-     thicknesses have been implemented.  All note widths have been made
-     consistent.  Minor shape note commands that use the relative major
-     key for scale steps have been added.
 
-   * A variant of the Segno sign is provided:
+   * 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.
 
-          [image of music]
+   * 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.
 
-   * Context modifications (`\with' blocks) can be stored in variables
-     and inserted into contexts or other `\with' blocks:
-
-          coloredheads = \with { \override NoteHead #'color = #red }
-          noclef = \with { \remove "Clef_engraver" }
-          \score {
-            \new Staff {
-              \new Voice \with { \coloredheads } \relative c' { c4 e g c }
-            }
-            \layout {
-              \context {
-                \Staff
-                \noclef
-              }
-            }
-          }
-           [image of music]
+   * 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.
 
-   * A half-open articulation was added:
+   * Beams can now have their slopes preserved over line breaks.
 
           [image of music]
 
 
-     This is sometimes used to indicate half-open hi-hats.
+     To do this, several callback functions are now deprecated.
+        * `ly:beam::calc-least-squares-positions'
 
-   * The Unicode Bidirectional Algorithm is now fully supported for
-     single-line markup due to enhanced integration with Pango.
+        * `ly:beam::slope-damping'
 
-   * LilyPond is now licensed under the GNU GPL v3+.
+        * `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.
 
-   * In tablature, frets can be indicated with labels other than
-     numbers:
+   * 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.
 
-          \new TabStaff
-          \with {
-            stringTunings = #`(,(ly:make-pitch 1 3 NATURAL)
-                               ,(ly:make-pitch 1 1 NATURAL)
-                            ,(ly:make-pitch 0 5 NATURAL)
-                            ,(ly:make-pitch 0 3 NATURAL)
-                            ,(ly:make-pitch 0 1 NATURAL)
-                            ,(ly:make-pitch -1 5 NATURAL))
-            tablatureFormat = #fret-letter-tablature-format
-          }
-          \new TabVoice {
-            \set fretLabels = #`(,(markup #:with-color red "a")
-                                 "b"
-                                 ,(markup #:italic #:smaller "c"))
-            <f d>4. <bes>8 <g e>4
-          }
-           [image of music]
+   * Music functions (and their close relatives) can now be defined with
+     optional arguments.
 
+   * For defining commands executed only for their side-effects,
+     `define-void-function' is now available.
 
-   * Layout objects can be printed over a white background, which
-     whites-out objects in lower layers which lie beneath:
+   * 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.
 
-          \time 3/4
-          \override Staff.StaffSymbol #'layer = #4
-          \once \override Tie #'layer = #2
-          b'2.~
-          \once \override Staff.TimeSignature #'whiteout = ##t
-          \once \override Staff.TimeSignature #'layer = #3
-          \time 5/4
-          b4
+          dyn=#(define-event-function (parser location arg) (markup?)
+                   (make-dynamic-script arg))
+          \relative c' { c\dyn pfsss }
            [image of music]
 
 
-   * Chords can be repeated using the `q' shortcut:
+   * A list of ASCII aliases for special characters can be included.
 
-          <c e g>8.-^ q16 q4-^
+          \paper {
+            #(include-special-characters)
+          }
+          \markup "&bull; &dagger; &copyright; &OE; &ss; &para;"
            [image of music]
 
 
-   * With two-sided mode, margins for odd and even pages can be set
-     using `inner-margin' and `outer-margin':
-
-     \paper {
-       two-sided = ##t
-       inner-margin = 10 \mm
-       outer-margin = 20 \mm
-     }
-
-   * Paper margin defaults, as specified in
-     `ly/paper-defaults-init.ly', apply to the default paper size (a4)
-     and are automatically scaled according to the paper size chosen.
-
-   * All combinations of `left-margin', `right-margin' and `line-width'
-     work now.  There is no more need to set `line-width' manually
-     unless you explicitly want to.
+   * 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.
 
-   * Support for using an alternative music font, such as Gonville, is
-     now added.
-
-   * In addition to the existing `\hspace' markup command, a new
-     `\vspace' command has been added to provide an easy and flexible
-     way to add vertical space in markups.
-
-   * The direction of manual beams can be set with `^[' and `_['.
-
-   * A version of the breve note head has been added with two vertical
-     lines on each side.
-
-          [image of music]
-
-
-   * Instrument names and vocal names now take into account the extent
-     of system start delimiters in other staves for their positioning,
-     resulting in improved default alignment for left-, center- and
-     right-aligned names.
-
-          [image of music]
-
-
-   * Braces in markup can now be selected by point size using the
-     markup commands `\left-brace' and `\right-brace'.
-
-          [image of music]
+   * 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.
 
-   * Intermediate .ps files which are created by LilyPond during
-     compilation are now deleted by default.  To keep them, add the
-     following line to your input files:
-     #(ly:set-option 'delete-intermediate-files #f)
+   * New command-line option `--loglevel=LEVEL' to control how much
+     output LilyPond creates. Possible values are ERROR, WARN,
+     BASIC_PROGRESS, PROGRESS, DEBUG.
 
-   * Dashed and dotted slurs, phrasing slurs, and ties have been made
-     variable thickness, and partially dashed slurs are now available:
+   * `\once \set' now correctly resets the property value to the
+     previous value.
 
           [image of music]
 
 
-   * An eyeglasses markup was added, indicating strongly to look at the
-     conductor for instructions:
+   * The alignment of dynamic spanners (hairpins, text crescendo, etc.)
+     is now automatically broken if a different direction is explicitly
+     given.
 
           [image of music]
 
 
-   * A snap-pizzicato (also known as Bartok-pizzicato) articulation was
-     added:
+   * 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]
 
 
-   * Tuplet number formatting functions are now available to print
-     other fractions and to add notes to the number or fraction:
+   * To suppress the line on a crescendo text spanner (and other
+     similar spanners), LilyPond now fully supports the `#'style =
+     #'none' property.
 
           [image of music]
 
 
-   * FretBoards now have a chordChanges property to keep repeated
-     FretBoard objects from being typeset.
+   * LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!
 
-   * The vertical spacing engine has been drastically changed, making
-     it more flexible and easier to control.  The spacing between
-     staves within a system can now change to better use the space on
-     the page.  User-defined contexts may participate in this flexible
-     spacing, depending on how their `staff-affinity' is defined.  Some
-     page formatting variables (`page-top-space', `between-system-space
-     -padding', and `before- between- after-title-space') have been
-     replaced by flexible vertical dimensions.
+   * Glissandi can now span multiple lines.