@finalout
-@ifnottex
@node Top
-@top
-@end ifnottex
-@unnumbered New features in 2.11 since 2.10
+@top New features in 2.11 since 2.10
@ifhtml
This document is also available in @uref{NEWS.pdf,PDF}. It's part of
@end ignore
+@item
+The file extension for MIDI can be set using the command-line
+program default @code{midi-extension}. For Windows, the default
+extension has been changed to @code{.mid}.
+
+@item
+Two variations on the default double repeat bar line are now available.
+@lilypond[]
+{
+ \set Score.doubleRepeatType = #":|.:"
+ \repeat volta 2 {
+ c'1
+ }
+ \repeat volta 2 {
+ c'1
+ }
+ \bar ":|.|:"
+ c'1
+}
+@end lilypond
+
+@item
+Four automatic accidentals rules have been added: @code{neo-modern},
+@code{neo-modern-cautionary}, @code{dodecaphonic} and @code{teaching}.
+The following example illustrates @code{neo-modern} rule.
+@lilypond[]
+notes = {
+ <<
+ \relative c' {
+ cis'8 fis, d'4 <a cis>8 f bis4 |
+ cis2. <c, fis>4 |
+ }
+ \\
+ \relative c' {
+ ais'2 cis, |
+ fis8 b a4 cis2 |
+ }
+ >>
+}
+
+\new Staff {
+ #(set-accidental-style 'neo-modern)
+ \notes
+}
+@end lilypond
+
+@item
+Flags can now be generated with Scheme-code using the @code{'flag}
+@code{Stem} grob property. Existing scores will work without change.
+@lilypond[]
+testnotes = {
+ \autoBeamOff
+ c'8 d'16 c''8 d''16
+}
+
+#(define (inverted-flag stem-grob)
+ (let* ((dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u"))
+ (flag (retrieve-glyph-flag "" dir "" stem-grob))
+ (line-thickness (ly:staff-symbol-line-thickness stem-grob))
+ (stem-thickness (ly:grob-property stem-grob 'thickness))
+ (stem-width (* line-thickness stem-thickness))
+ (stroke-style (ly:grob-property stem-grob 'stroke-style))
+ (stencil (if (null? stroke-style) flag
+ (add-stroke-glyph flag stem-grob dir stroke-style "")))
+ (rotated-flag (ly:stencil-rotate-absolute stencil 180 0 0)))
+ (ly:stencil-translate rotated-flag (cons (- (/ stem-width 2)) 0))))
+
+#(define-public (weight-flag stem-grob)
+ (let* ((log (- (ly:grob-property stem-grob 'duration-log) 2))
+ (is-up (eqv? (ly:grob-property stem-grob 'direction) UP))
+ (yext (if is-up (cons (* log -0.8) 0) (cons 0 (* log 0.8))))
+ (flag-stencil (make-filled-box-stencil '(-0.4 . 0.4) yext))
+ (stroke-style (ly:grob-property stem-grob 'stroke-style))
+ (stroke-stencil (if (equal? stroke-style "grace") (make-line-stencil 0.2 -0.9 -0.4 0.9 -0.4) empty-stencil)))
+ (ly:stencil-add flag-stencil stroke-stencil)))
+
+{
+ \time 3/8
+ \override Stem #'flag = #weight-flag
+ \testnotes
+
+ \override Stem #'flag = #inverted-flag
+ \testnotes
+}
+@end lilypond
+
+@item
+Harp pedalling diagrams were added:
+
+@lilypond[]
+\markup { \harp-pedal #"^v-|vv-o^" }
+@end lilypond
+
+@item
+Predefined, user-configurable, transposable fret diagrams
+are now available in the @code{FretBoards} context:
+@lilypond[]
+\include "predefined-guitar-fretboards.ly"
+<<
+ \new ChordNames {
+ \chordmode {
+ c1
+ \transpose c e { c }
+ }
+ }
+ \new FretBoards {
+ \chordmode {
+ c1
+ \transpose c e { c }
+ }
+ }
+>>
+@end lilypond
+
+@item
+The following syntax changes were made, in chronological order. In
+addition, fret diagram properties have been moved to
+@code{fret-diagram-details}, and the @code{#'style} property is
+used to select solid/dashed lines instead of @code{#'dash-fraction}.
+
+@example
+'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)
+@end example
+
+@noindent
+Moreover, some files in the @code{ly/} directory have been renamed;
+the *-init.ly filenames are now only used for files that are automatically
+included, while such files as @code{makam-init.ly} or @code{gregorian-init.ly}
+have been renamed to @code{makam.ly} or @code{gregorian.ly}.
+
+@item
+Metronome marks can now also contain a textual description. The
+duration and count (if given) are shown in parentheses after the text.
+
+@lilypond[]
+{
+ \tempo "Fast"
+ c'4 c' c' c'
+ c'4 c' c' c'
+ \tempo "Andante" 4 = 120
+ c'4 c' c' c'
+ c'4 c' c' c'
+ \tempo 4 = 100
+ c'4 c' c' c'
+ c'4 c' c' c'
+ \tempo "" 4 = 30
+ c'4 c' c' c'
+ c'4 c' c' c'
+}
+@end lilypond
+
+@item
+In figured bass you can now also use a backslash through a number to
+indicate a raised 6th step.
+
+@lilypond[]
+\new FiguredBass \figuremode { < 6\\ 5\\ > < 6/ > }
+@end lilypond
+
@item
Arpeggios may now use ``parenthesis'' style brackets:
-@lilypond[relative,ragged-right]
- \override Arpeggio #'stencil = #ly:arpeggio::brew-chord-slur
+@lilypond[relative=1]
+\override Arpeggio #'stencil = #ly:arpeggio::brew-chord-slur
- % Note: does not work for cross staff arpeggios.
- \override Arpeggio #'X-extent = #ly:grob::stencil-width
- <c g' c>2\arpeggio ~ c
+% Note: does not work for cross-staff arpeggios.
+\override Arpeggio #'X-extent = #ly:grob::stencil-width
+<c g' c>2\arpeggio ~ c
@end lilypond
+@item
+Single-system scores are now naturally spaced instead of being
+stretched to fill the line width. This can be changed by setting
+@code{ragged-right = ##f}.
+
@item
Enclosing text within boxes with rounded corners is now possible,
-using the @code{rounded-box} command.
+using the @code{\rounded-box} markup command.
@item
@command{lilypond-book} can run any program instead of @command{latex}
to guess the line width, thanks to @code{--latex-program} command line
option.
-@item
-@code{\setEasyHeads} has been renamed to @code{\easyHeadsOn}, and a new
-command @code{\easyHeadsOff} reverts note heads to normal heads.
-
-@item
-@code{\fatText} and @code{\emptyText} have been renamed to
-@code{\textLengthOn} and @code{\textLengthOff}, respectively.
-
@item
Underlining is now possible with the @code{\underline} markup command.
@item
A new page breaking function, @code{ly:minimal-breaking}, is dedicated
-to books with many pages or a lot of texts.
+to books with many pages or a lot of text.
@item
A table of contents is included using @code{\markuplines \table-of-contents}.
@item
Text spreading over several pages is entered using the
-@code{\markuplines} keyword. Builtin markup list commands, such as
+@code{\markuplines} keyword. Builtin markup list commands, such as
@code{\justified-lines} or @code{\wordwrap-lines} may be used, and new
ones created using the @code{define-markup-list-command} Scheme macro.
@item
Particular points of a book may be marked with the @code{\label}
-command. Then, the page where these points are placed can be refered to
-using the @code{\page-ref} markup command.
+command. Then, the page where these points are placed can be
+referred to using the @code{\page-ref} markup command.
@item
Page breaking and page turning commands (@code{\pageBreak},
-@code{\noPageBreak}, etc) can be used at top-level, between scores and
+@code{\noPageBreak}, etc.) can be used at top-level, between scores and
top-level markups.
@item
option does not exist any more.
@item
-Improved testing procedure now catch changes in CPU and memory
+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 @uref{INSTALL.html#testing} for more information.
+See @uref{INSTALL.html#Testing-LilyPond} for more information.
+
@item
-Nested properties, such as @code{details} in @code{Slur}, can be
+Nested properties, such as @code{'details} in @code{Slur}, can be
reverted as well. The syntax for this is
@example
crescendos and other text spanners. The old syntax for setting
text on line spanners is no longer valid.
-@c with ragged-right we can't see the gliss.
@lilypond[]
\relative c'' {
- \override Glissando #'bound-details #'right #'text = \markup { \hcenter \bold down }
+ \override Glissando #'bound-details #'right #'text = \markup { \center-align \bold down }
\override Glissando #'bound-details #'right #'Y = #-4
\override Glissando #'bound-details #'right #'padding = #0.0
\override Glissando #'bound-details #'left #'arrow = ##t
\override Glissando #'bound-details #'left #'padding = #3.0
\override Glissando #'style = #'trill
+ \override Glissando #'springs-and-rods = #ly:spanner::set-spacing-rods
+ \override Glissando #'minimum-length = #12
c1 \glissando c'
}
This feature was sponsored by Trevor Bača.
-
@item
-The environment variable LILYPONDPREFIX has been renamed to
-LILYPOND_DATADIR.
+The environment variable @code{LILYPONDPREFIX} has been renamed
+@code{LILYPOND_DATADIR}.
@item
Notes or rests, such as a typical end note, that fill an entire
measure are preceded by some more space.
-@lilypond[ragged-right]
+@lilypond[]
\relative c' {
\time 4/4
s1
}
@end lilypond
-@item All @code{\score}s in a lilypond-book fragment are now inserted
-into the document. Also, toplevel markups don't result in an entire
+@item
+All @code{\score}s in a lilypond-book fragment are now inserted
+into the document. Also, toplevel markups don't result in an entire
page.
-@item Alterations (such as a sharp and flat) may now be arbitrary
-fractions. This allows some forms of microtonal music. For example,
+@item
+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.
-@lilypondfile{makam.ly}
-
+@lilypondfile{makam-example.ly}
+@item
+Tie directions may be set with @code{^~} and @code{_~}.
-@item Tie directions may be set with @code{^~} and @code{_~}
-
-@item Tablature now supports harmonics and slides,
+@item
+Tablature now supports harmonics and slides:
-@lilypond[fragment,ragged-right,relative=1]
-\new TabVoice
-{
- <c g'\harmonic> d\2\glissando e\2
+@lilypond[relative=1]
+\new TabVoice {
+ <c g'\harmonic>4 d\2\glissando e2\2
}
@end lilypond
This feature was sponsored by Mike Amundsen
-@item Horizontal spacing now follows object outlines more
-accurately. This allows tighter horizontal spacing.
+@item
+Horizontal spacing now follows object outlines more accurately.
+This allows tighter horizontal spacing.
-@lilypond[fragment,ragged-right]
+@lilypond[]
{
- \stemUp c''4...*1/2
- ceses'!
+ \stemUp
+ c''4... ceses'! s16
}
@end lilypond
-
-@item Objects that belong outside of the staff are
-now positioned automatically to avoid collisions.
-
-@lilypond[fragment,ragged-right,relative=1]
- c''
- \once \override TextScript #'self-alignment-X = #CENTER
- a,^"this doesn't collide with the c"
- b^"this goes above the previous markup"
- a8_"this goes below the dynamic"
- a\f
+@item
+Objects that belong outside of the staff are now positioned
+automatically to avoid collisions.
+
+@lilypond[relative=1]
+c''4
+\once \override TextScript #'self-alignment-X = #CENTER
+a,4^"this doesn't collide with the c"
+b4^"this goes above the previous markup"
+a8_"this goes below the dynamic"
+a8\f
@end lilypond
-@item Staves are spaced vertically using a skyline algorithm. This helps to avoid
-uneven vertical spacing.
+@item
+Staves are spaced vertically using a skyline algorithm. This helps
+prevent uneven vertical spacing.
@lilypond[ragged-right]
%% todo: fix 'landscape PDF.
-#(set-default-paper-size "a6" )
+#(set-default-paper-size "a6")
\header {
tagline = ##f
}
\book {
\score {
{
- a,,1 | a'4 b' c'' d'' \break
- \repeat unfold 2 {a' b' c'' d''} | b''''1
+ a,,1
+ a'4 b' c'' d'' \break
+ \repeat unfold 2 { a'4 b' c'' d''}
+ b''''1
}
}
}