]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/changes.tely
Release: update news.
[lilypond.git] / Documentation / changes.tely
index 6b48fb5177cd05677fcd0419064ae0826ff754eb..e57bbe7562eba77fe817a45b9d492552fcc550a8 100644 (file)
@@ -2,6 +2,8 @@
 @setfilename lilypond-changes.info
 @settitle LilyPond Changes
 
+@include macros.itexi
+
 @ifhtml
 @macro inputfileref{DIR,NAME}
 @uref{../../\DIR\/collated-files.html#\NAME\,@file{\DIR\/\NAME\}}@c
@@ -34,22 +36,18 @@ See user manual, \NAME\
 @finalout
 
 @node Top
-@top New features in 2.13 since 2.12
-
-@ifhtml
-This document is also available in @uref{changes.pdf,PDF}. It is part of
-the @uref{lilypond/Manuals.html,LilyPond Documentation}.
-@end ifhtml
+@top New features in 2.16 since 2.14
 
+@allowcodebreaks false
 
-
-
-@itemize @bullet
+@itemize
 
 @ignore
 
 HINTS
 
+* add new items at the top
+
 * only show verbatim input for syntax/input changes
 
 * try to be as brief possible in those cases
@@ -64,144 +62,269 @@ which scares away people.
 @end ignore
 
 @item
-A version of the breve notehead has been added with two vertical lines on each side.
-@lilypond
-\relative c'' {
-  \time 4/2
-  \override Staff.NoteHead  #'style = #'altdefault
-  c\breve b\breve
-}
-@end lilypond
+Use of @code{\tempo} specifications in @code{\midi} blocks (removed in
+2.9.16 in favor of explicit @code{tempoWholesPerMinute} settings) has
+seen a revival: now any kind of property-setting music is turned into
+context definitions within of output specifications, allowing for
+declarations like
+@example
+\layout @{ \accidentalStyle modern @}
+\midi @{ \tempo 4. = 66 @}
+@end example
 
+@item
+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:
+@uref{http://lilypond.org/doc/v2.14/Documentation/notation/the-feta-font.html#clef-glyphs, old version},
+@uref{http://lilypond.org/doc/v2.15/Documentation/notation/the-feta-font.html#clef-glyphs, new version}.
 
 @item
-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.
-@lilypond[quote,indent=18\mm]
-<<
-  \new StaffGroup <<
-    \new GrandStaff <<
-      \new Staff {
-        \set Staff.instrumentName = #"Piccolo"
-        c''1
-      }
-      \new Staff {
-        \set Staff.instrumentName = #"Flute"
-        c''1
-      }
-    >>
-    \new Staff {
-      \set Staff.instrumentName = #"Bassoon"
-      \clef tenor
-      c'1
-    }
-  >>
-  \new PianoStaff <<
-    \set PianoStaff.instrumentName = #"Piano"
-    \context Staff = "up" {
-      c'1
+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:
+@itemize
+@item @code{beam}
+@item @code{bezier-sandwich}
+@item @code{bracket}
+@item @code{dashed-slur}
+@item @code{dot}
+@item @code{oval}
+@item @code{repeat-slash}
+@item @code{zigzag-line}
+@end itemize
+
+@item
+Flags are now treated as separate objects rather than as stem parts.
+@lilypond[fragment,quote,relative=2]
+\override Flag #'color = #red
+g8
+@end lilypond
+
+@item
+Two alternative methods for bar numbering can be set, especially for
+when using repeated music;
+
+@lilypond[fragment,quote,relative=1,noragged-right]
+\relative c'{
+  \set Score.alternativeNumberingStyle = #'numbers
+  \repeat volta 3 { c4 d e f | }
+    \alternative {
+      { c4 d e f | c2 d \break }
+      { f4 g a b | f4 g a b | f2 a | \break }
+      { c4 d e f | c2 d }
     }
-    \context Staff = "down" {
-      \clef bass
-      c1
+  c1 \break
+  \set Score.alternativeNumberingStyle = #'numbers-with-letters
+  \repeat volta 3 { c,4 d e f | }
+    \alternative {
+      { c4 d e f | c2 d \break }
+      { f4 g a b | f4 g a b | f2 a | \break }
+      { c4 d e f | c2 d }
     }
-  >>
->>
+  c1
+}
 @end lilypond
 
 @item
-Braces in markup can now be selected by point size using the markup commands
-@code{\left-brace} and @code{\right-brace}.
-@lilypond[quote]
-\markup {
-  \left-brace #35
-  \hspace #2
-  \right-brace #45
-}
+The following is a fundamental change in LilyPond's music
+representation: Rhythmic events like @code{LyricEvent} and
+@code{NoteEvent} are no longer wrapped in @code{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 @code{\eventChords} or
+the Scheme function @code{event-chord-wrap!}  converts to the old
+representation; using one of those might be easiest for keeping legacy
+code operative.
+
+The advantages of making input and music match more closely are
+numerous: music functions previously worked differently when used inside
+or outside of chords.  Now they are the same, including all the
+possibilities of argument parsing.  You can now use music variables
+inside of chords: a construct like
+@lilypond[verbatim,quote,ragged-right]
+tonic=fis'
+{ <\tonic \transpose c g \tonic> }
 @end lilypond
+@noindent
+would have been unthinkable previously.  You can use
+@code{#@{@dots{}#@}} for constructing chord constituents.  Music
+functions inside of chords are no longer specially treated and thus
+accept the same arguments as outside of chords.  @code{\tweak} now works
+on single notes without needing to wrap them in a chord.  In theory, it
+can also work on command events and lyrics now.  Since that was not
+possible before, it depends on luck on a case-by-case basis whether the
+tweak internals are already receiving the necessary information.  Users
+are asked to report those cases where they find @code{\tweak} not
+working according to reasonable expectations.
 
 @item
-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:
-@example
-#(ly:set-option 'delete-intermediate-files #f)
-@end example
+As one consequence, it was possible to reimplement the repetitive chord
+entry aid @code{q}.  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 @code{\chordRepeats} manually.
+
+@item
+Scheme expressions inside of embedded Lilypond (@code{#@{@dots{}#@}})
+are now executed in lexical closure of the surrounding Scheme code.
+@code{$} is no longer special in embedded Lilypond.  It can be used
+unconditionally in Lilypond code for immediate evaluation, similar to
+how @code{ly:export} could previously be used.  @code{ly:export} has
+been removed.  As a consequence, @code{#} is now free to delay
+evaluation of its argument until the parser actually reduces the
+containing expression, greatly reducing the potential for premature
+evaluation.
+
+@item
+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.
+@ruser{Customizing chord names} for more information.
+
+@item
+The @code{\markuplines} command has been renamed to @code{\markuplist}
+for a better match with its semantics and general Lilypond
+nomenclature.
 
 @item
-Dashed and dotted slurs, phrasing slurs, and ties
-have been made variable thickness, and
-partially dashed slurs are now available:
-@lilypond[quote,relative=2]
-\slurDashed
-c4( d e f) |
-\slurDotted
-g4( f e d) |
-\slurHalfDashed
-c4( d e f)
+The interface for specifying string tunings in tablature has been
+simplified considerably and employs the scheme function
+@code{\stringTuning} for most purposes.
+
+@item
+Beams can now have their slopes preserved over line breaks.
+@lilypond[fragment,quote,relative=2]
+\override Beam #'breakable = ##t
+a8[ b c d e f g \bar "" \break f e d c b a]
+\once \override Beam #'positions = #beam::align-with-broken-parts
+a8[ b c d e f g \bar "" \break f e d c b a]
+\once \override Beam #'positions = #beam::slope-like-broken-parts
+a8[ b c d e f g \bar "" \break f e d c b a]
 @end lilypond
+To do this, several callback functions are now deprecated.
+@itemize
+@item @code{ly:beam::calc-least-squares-positions}
+@item @code{ly:beam::slope-damping}
+@item @code{ly:beam::shift-region-to-valid}
+@end itemize
+Furthermore, @code{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 @code{positions} parameter.
+
+@item
+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 @code{-3} as a number or a fingering event.
+
+@item
+Music functions (and their close relatives) can now be defined with
+optional arguments.
 
 @item
-An eyeglasses markup was added, indicating strongly to look at the
-conductor for instructions:
-@lilypond[quote,relative=2]
-\mark \markup { \eyeglasses }
-c4_\markup{ \eyeglasses }
+For defining commands executed only for their side-effects,
+@code{define-void-function} is now available.
+
+@item
+There is a new @code{define-event-function} command in analogy to
+@code{define-music-function} that can be used for defining music
+functions acting as post events without requiring a direction specifier
+(@code{-}, @code{^}, or @code{_}) placed before them.
+@lilypond[quote,verbatim,ragged-right]
+dyn=#(define-event-function (parser location arg) (markup?)
+         (make-dynamic-script arg))
+\relative c' { c\dyn pfsss }
 @end lilypond
 
 @item
-A snap-pizzicato (also known as Bartok-pizzicato) articulation was added:
-@lilypond[quote,relative=2]
-c4\snappizzicato
+A list of ASCII aliases for special characters can be included.
+@lilypond[quote,verbatim]
+\paper {
+  #(include-special-characters)
+}
+\markup "&bull; &dagger; &copyright; &OE; &ss; &para;"
 @end lilypond
 
 @item
-Tuplet number formatting functions are now available to print other fractions
-and to add notes to the number or fraction:
-@lilypond[quote,relative=2]
-\once \override TupletNumber #'text =
-  #(tuplet-number::non-default-tuplet-denominator-text 7)
-\times 2/3 { c4. c4. c4. c4. }
-
-\once \override TupletNumber #'text =
-  #(tuplet-number::non-default-tuplet-fraction-text 12 7)
-\times 2/3 { c4. c4. c4. c4. }
-\once \override TupletNumber #'text =
-  #(tuplet-number::append-note-wrapper
-    (tuplet-number::non-default-tuplet-fraction-text 12 7) "8")
-\times 2/3 { c4. c4. c4. c4. }
-
-\once \override TupletNumber #'text =
-  #(tuplet-number::append-note-wrapper tuplet-number::calc-denominator-text "4")
-\times 2/3 { c8 c8 c8 c8 c8 c8 }
-\once \override TupletNumber #'text =
-  #(tuplet-number::append-note-wrapper tuplet-number::calc-fraction-text "4")
-\times 2/3 { c8 c8 c8 c8 c8 c8 }
-
-\once \override TupletNumber #'text =
-  #(tuplet-number::fraction-with-notes "4." "8")
-\times 2/3 { c4. c4. c4. c4. }
-\once \override TupletNumber #'text =
-  #(tuplet-number::non-default-fraction-with-notes 12 "8" 4 "4")
-\times 2/3  { c4. c4. c4. c4. }
+There is a new @code{define-scheme-function} command in analogy to
+@code{define-music-function} that can be used to define functions
+evaluating to Scheme expressions while accepting arguments in Lilypond
+syntax.
+
+@item
+The construct @code{#@{ @dots{} #@}} 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 @code{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.
+
+@item
+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.
+
+@item
+New command-line option @option{--loglevel=@var{level}} to control how much output
+LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEBUG.
+
+@item
+@code{\once \set} now correctly resets the property value to the previous value.
+@lilypond[fragment,quote,relative=2]
+  \set fingeringOrientations = #'(left)
+  <e-1>4
+  \once \set fingeringOrientations = #'(right)
+  <e-1>
+  <e-1>-"left"
 @end lilypond
 
 @item
-FretBoards now have a chordChanges property to keep repeated FretBoard objects
-from being typeset.
+The alignment of dynamic spanners (hairpins, text crescendo, etc.) is now
+automatically broken if a different direction is explicitly given.
+@lilypond[fragment,quote,relative=2]
+c4_\< c c^\> c c1_\p
+@end lilypond
 
 
+@item
+Appoggiaturas and acciaccaturas now also work inside a slur, not only inside
+a phrasing slur. Also, a function @code{\slashedGrace} was added that does
+not use a slur from the acciaccatura note.
+@lilypond[fragment,quote,relative=2]
+c4( \appoggiatura e8 d4 \acciaccatura e8 d4 \slashedGrace e8 c4)
+@end lilypond
 
-@end itemize
 
+@item
+To suppress the line on a crescendo text spanner (and other similar spanners),
+LilyPond now fully supports the @code{#'style = #'none} property.
+@lilypond[fragment,quote,relative=2]
+\override DynamicTextSpanner #'style = #'none
+c4\cresc c c g, c'\p
+@end lilypond
+
+@item
+LilyPond.app now supports MacOS X 10.7, thanks Christian Hitz!
 
+@item
+Glissandi can now span multiple lines.
+
+@end itemize
 
 @ifhtml
 For older news, go to
+@uref{http://lilypond.org/doc/v2.14/Documentation/changes/},
 @uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS.html},
-@uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS.html},
 or @uref{../,go back} to the Documentation index.