]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/topdocs/NEWS.tely
Merge master into nested-bookparts
[lilypond.git] / Documentation / topdocs / NEWS.tely
index 6ca65b7e6085d2de8c79b02d7f115c63ebe8242c..c60fc9b5f6d667e8744647e9468997af3fc64c34 100644 (file)
@@ -32,11 +32,8 @@ See user manual, \NAME\
 
 @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
@@ -66,20 +63,218 @@ which scares away people.
 @end ignore
 
 @item
-Enclosing text within boxes with rounded corners is now possible,
-using the @code{rounded-box} command.
+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
-@command{lilypond-book} can run any program instead of @command{latex}
-to guess the line width, thanks to @code{--latex} command line option.
+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
-@code{\setEasyHeads} has been renamed to @code{\easyHeadsOn}, and a new
-command @code{\easyHeadsOff} reverts note heads to normal heads.
+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
-@code{\fatText} and @code{\emptyText} have been renamed to
-@code{\textLengthOn} and @code{\textLengthOff}, respectively.
+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=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
+@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} 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
 Underlining is now possible with the @code{\underline} markup command.
@@ -90,7 +285,7 @@ the paper block, the number of pages that will be used.
 
 @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}.
@@ -98,18 +293,18 @@ Elements are added to it using the @code{\tocItem} command.
 
 @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
@@ -119,14 +314,15 @@ The following options are now changed as a @code{-d} sub-option:
 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
@@ -139,15 +335,16 @@ 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.
 
-@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'
 }
@@ -155,16 +352,15 @@ text on line spanners is no longer valid.
 
 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
@@ -174,61 +370,64 @@ measure are preceded by some more space.
 }
 @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
 }
@@ -236,8 +435,10 @@ uneven vertical spacing.
 \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
     }
   }
 }