]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/changes.tely
Merge branch 'master' into translation
[lilypond.git] / Documentation / changes.tely
index 37df7f9f75450e8fc62f7f2ab5837fad4ceb5857..f8dd50a2e429b7129af277ac5f814efcdbe59352 100644 (file)
@@ -29,7 +29,7 @@ See user manual, \NAME\
 @end macro
 
 
-@documentencoding utf-8
+@documentencoding UTF-8
 @documentlanguage en
 @afourpaper
 
@@ -60,6 +60,410 @@ which scares away people.
 * only show user-visible changes.
 
 @end ignore
+
+@item
+Additional bass strings (for lute tablature) are supported.
+@lilypond[quote,verbatim]
+m = { f'4 d' a f d a, g, fis, e, d, c,  \bar "|." }
+
+\score {
+  \new TabStaff \m
+  \layout {
+    \context {
+      \Score
+      tablatureFormat = #fret-letter-tablature-format
+    }
+    \context {
+      \TabStaff
+      stringTunings = \stringTuning <a, d f a d' f'>
+      additionalBassStrings = \stringTuning <c, d, e, fis, g,>
+      fretLabels = #'("a" "b" "r" "d" "e" "f" "g" "h" "i" "k")
+    }
+  }
+}
+@end lilypond
+
+@item
+The markup-list-command @code{\table} is now available.
+Each column may be aligned differently.
+@lilypond[quote,verbatim]
+\markuplist {
+    \override #'(padding . 2)
+    \table
+      #'(0 1 0 -1)
+      {
+        \underline { center-aligned right-aligned center-aligned left-aligned }
+        one "1" thousandth "0.001"
+        eleven "11" hundredth "0.01"
+        twenty "20" tenth "0.1"
+        thousand "1000" one "1.0"
+      }
+}
+@end lilypond
+
+@item
+A new markup-command, @code{\with-dimensions-from}, makes
+@code{\with-dimensions} easier to use by taking the new
+dimensions from a markup object, given as first argument.
+@lilypond[quote,verbatim]
+\markup {
+  \pattern #5 #Y #0 "x"
+  \pattern #5 #Y #0 \with-dimensions-from "x" "f"
+  \pattern #5 #Y #0 \with-dimensions-from "x" "g"
+  \override #'(baseline-skip . 2)
+  \column {
+    \pattern #5 #X #0 "n"
+    \pattern #5 #X #0 \with-dimensions-from "n" "m"
+    \pattern #5 #X #0 \with-dimensions-from "n" "!"
+  }
+}
+@end lilypond
+
+@item
+A new page breaking function @code{ly:one-line-auto-height-breaking}
+places a whole score on a single line and changes the page width
+to match, just like @code{ly:one-line-breaking}.  The difference is that
+it also automatically modifies the height of the page to fit the height
+of the music.
+
+@item
+Markup-command @code{\draw-squiggle-line} is now available.
+Customizing is possible with overrides of @code{thickness}, @code{angularity},
+@code{height} and @code{orientation}
+@lilypond[quote,verbatim]
+\markup
+  \overlay {
+    \draw-squiggle-line #0.5 #'(3 . 3) ##t
+
+    \translate #'(3 . 3)
+    \override #'(thickness . 4)
+    \draw-squiggle-line #0.5 #'(3 . -3) ##t
+
+    \translate #'(6 . 0)
+    \override #'(angularity . -5)
+    \draw-squiggle-line #0.5 #'(-3 . -3) ##t
+
+    \translate #'(3 . -3)
+    \override #'(angularity . 2)
+    \override #'(height . 0.3)
+    \override #'(orientation . -1)
+    \draw-squiggle-line #0.2 #'(-3 . 3) ##t
+  }
+@end lilypond
+
+@item
+A new command, @code{\RemoveAllEmptyStaves}, has been made available, which
+acts exactly like @code{\RemoveEmptyStaves}, except for also removing empty
+staves on the first system in a score.
+
+@item
+Markup-commands @code{\undertie} and @code{\overtie} are now available, as well
+as the generic markup-command @code{\tie}.
+@lilypond[quote,verbatim]
+\markup {
+  \undertie "undertied"
+  \overtie "overtied"
+}
+
+m = {
+  c''1 \prall -\tweak text \markup \tie "131" -1
+}
+
+{ \voiceOne \m \voiceTwo \m }
+@end lilypond
+
+@item
+@code{TabStaff} is now able to print micro-tones for bendings etc.
+@lilypond[quote,verbatim]
+\layout {
+  \context {
+    \Score
+    supportNonIntegerFret = ##t
+  }
+}
+
+mus = \relative { c'4 cih d dih }
+
+<<
+  \new Staff << \clef "G_8" \mus >>
+  \new TabStaff \mus
+>>
+@end lilypond
+
+@item
+Two new styles of whiteout are now available.  The @code{outline} style
+approximates the contours of a glyph's outline, and its shape is
+produced from multiple displaced copies of the glyph.  The
+@code{rounded-box} style produces a rounded rectangle shape.  For all
+three styles, including the default @code{box} style, the whiteout
+shape's @code{thickness}, as a multiple of staff-line thickness, can be
+customized.
+
+@lilypond[verbatim,quote]
+\markup {
+  \combine
+    \filled-box #'(-1 . 15) #'(-3 . 4) #1
+    \override #'(thickness . 3)
+    \whiteout whiteout-box
+}
+\markup {
+  \combine
+    \filled-box #'(-1 . 24) #'(-3 . 4) #1
+    \override #'(style . rounded-box)
+    \override #'(thickness . 3)
+    \whiteout whiteout-rounded-box
+}
+\markup {
+  \combine
+    \filled-box #'(-1 . 18) #'(-3 . 4) #1
+    \override #'(style . outline)
+    \override #'(thickness . 3)
+    \whiteout whiteout-outline
+}
+\relative {
+  \override Staff.Clef.whiteout-style = #'outline
+  \override Staff.Clef.whiteout = 3
+  g'1
+}
+@end lilypond
+
+@item
+All of @code{\override}, @code{\revert}, @code{\set}, and
+@code{\unset} now work with the @code{\once} prefix for making
+one-time settings.
+@lilypond[quote,verbatim]
+\relative {
+  c'4 d
+  \override NoteHead.color = #red
+  e4 f |
+  \once \override NoteHead.color = #green
+  g4 a
+  \once \revert NoteHead.color
+  b c |
+  \revert NoteHead.color
+  f2 c |
+}
+@end lilypond
+
+@item
+When outputting MIDI, LilyPond will now store the @code{title}
+defined in a score's @code{\header} block (or, if there is no
+such definition on the @code{\score} level, the first such
+definition found in a @code{\header} block of the score's
+enclosing @code{\bookpart}, @code{\book}, or top-level scope)
+as the name of the MIDI sequence in the MIDI file.  Optionally,
+the name of the MIDI sequence can be overridden using the new
+@code{midititle} @code{\header} field independently of
+@code{title} (for example, in case @code{title} contains markup
+code which does not render as plain text in a satisfactory way
+automatically).
+
+@item
+Music (and scheme and void) functions and markup commands that
+just supply the final parameters to a chain of overrides, music
+function and markup command calls can now be defined in the form
+of just writing the expression cut short with @code{\etc}.
+
+@lilypond[verbatim,quote]
+bold-red-markup = \markup \bold \with-color #red \etc
+highlight = \tweak font-size 3 \tweak color #red \etc
+
+\markup \bold-red "text"
+\markuplist \column-lines \bold-red { One Two }
+
+{ c' \highlight d' e'2-\highlight -! }
+@end lilypond
+
+@item
+LilyPond functions defined with @code{define-music-function},
+@code{define-event-function}, @code{define-scheme-function} and
+@code{define-void-function} can now be directly called from Scheme
+as if they were genuine Scheme procedures.  Argument checking and
+matching will still be performed in the same manner as when
+calling the function through LilyPond input.  This includes the
+insertion of defaults for optional arguments not matching their
+predicates.  Instead of using @code{\default} in the actual
+argument list for explicitly skipping a sequence of optional
+arguments, @code{*unspecified*} can be employed.
+
+@item
+Current input location and parser are now stored in GUILE fluids
+and can be referenced via the function calls @code{(*location*)}
+and @code{(*parser*)}.  Consequently, a lot of functions
+previously taking an explicit @code{parser} argument no longer do
+so.
+
+Functions defined with @code{define-music-function},
+@code{define-event-function}, @code{define-scheme-function} and
+@code{define-void-function} no longer use @code{parser} and
+@code{location} arguments.
+
+With those particular definitions, LilyPond will try to recognize
+legacy use of @code{parser} and @code{location} arguments,
+providing backwards-compatible semantics for some time.
+
+@item
+In the "english" notename language, the long notenames for pitches
+with accidentals now contain a hyphen for better readability.  You
+now have to write
+@example
+\key a-flat \major
+@end example
+instead of the previous
+@example
+\key aflat \major
+@end example
+
+Double accidentals do not get another hyphen, so the Dutch
+@code{cisis} has the long English notename @code{c-sharpsharp}.
+
+@item
+The visual style of tremolo slashes (shape, style and slope)
+is now more finely controlled.
+@lilypond[quote,relative=2]
+  a8:32 b: c: d:
+  \override StemTremolo.shape = #'beam-like
+  a: b: c: d:
+  \override StemTremolo.style = #'constant
+  a: b: c: d:
+  g,2
+@end lilypond
+
+
+@item
+Multi-measure rests have length according to their total duration,
+under the control of @code{MultiMeasureRest.space-increment}.
+@lilypond[quote]
+{ \compressFullBarRests
+  \override Staff.MultiMeasureRest.space-increment = 3.0
+  R1*2 R1*12 R1*64 }
+@end lilypond
+
+@item
+Page numbers may now be printed in roman numerals, by setting the
+@code{page-number-type} paper variable.
+
+@item
+It is now possible to use @code{\time} and @code{\partial}
+together to change the time signature in mid measure.
+
+@lilypond[verbatim,quote,relative=1]
+\override Score.BarNumber.break-visibility = #end-of-line-invisible
+\partial 4 \time 3/4 f4 | 2 4 | 2 \bar "||"
+\time 9/8 \partial 4. f8 8 8 | 2. 8 8 8 |
+@end lilypond
+
+@item
+It is now possible to override the @code{text} property of
+chord names.
+
+@lilypond[verbatim,fragment,quote]
+<<
+\new ChordNames \chordmode {
+  a' b c:7
+  \once \override ChordName.text = #"foo"
+  d
+}
+>>
+@end lilypond
+
+@item
+Improved horizontal alignment when using @code{TextScript},
+with @code{DynamicText} or @code{LyricText}.
+
+@item
+A new command @code{\magnifyStaff} has been added which scales staff
+sizes, staff lines, bar lines, beamlets and horizontal spacing generally
+at the @code{Staff} context level.  Staff lines are prevented from being
+scaled smaller than the default since the thickness of stems, slurs, and
+the like are all based on the staff line thickness.
+
+@item
+@code{InstrumentName} now supports @code{text-interface}.
+
+@item
+There is now support for controlling the @q{expression level} of
+MIDI channels using the @code{Staff.midiExpression} context property.
+This can be used to alter the perceived volume of even sustained notes
+(albeit in a very @q{low-level} way) and accepts a number value between
+@code{0.0} and @code{1.0}.
+
+@example
+\score @{
+  \new Staff \with @{
+    midiExpression = #0.6
+    midiInstrument = #"clarinet"
+  @}
+  <<
+    @{ a'1~ a'1 @}
+    @{
+      \set Staff.midiExpression = #0.7 s4\f\<
+      \set Staff.midiExpression = #0.8 s4
+      \set Staff.midiExpression = #0.9 s4
+      \set Staff.midiExpression = #1.0 s4
+
+      \set Staff.midiExpression = #0.9 s4\>
+      \set Staff.midiExpression = #0.8 s4
+      \set Staff.midiExpression = #0.7 s4
+      \set Staff.midiExpression = #0.6 s4\!
+    @}
+  >>
+  \midi @{ @}
+@}
+@end example
+
+@item
+Support for making it easier to use alternative @q{music} fonts other
+than the default Emmentaler in LilyPond has been added.  See
+@uref{http://fonts.openlilylib.org/} for more information.
+
+@item
+Grobs and their parents can now be aligned separately allowing
+more flexibility for grob positions.  For example the @q{left} edge of a
+grob can now be aligned on the @q{center} of its parent.
+
+@item
+Improvements to the @code{\partial} command have been made to
+avoid problems when using multiple, parallel contexts.
+
+@item @code{\chordmode} can now use @code{< >} and @code{<< >>}
+constructs.
+
+@item
+A new command @code{\tagGroup} has now been added.  This complements
+the existing @code{\keepWithTag} and @code{\removeWithTag} commands.
+For Example:
+
+@example
+\tagGroup #'(violinI violinII viola cello)
+@end example
+
+declares a list of @q{tags} that belong to a single @q{tag group}.
+
+@example
+\keepWithTag #'violinI
+@end example
+
+Is now only concerned with @q{tags} from @q{violinI}’s tag group.
+
+Any element of the included music tagged with one or more tags from the
+group, but @emph{not} with @var{violinI}, will be removed.
+
+@item
+The @code{\addlyrics} function now works with arbitrary contexts
+incuding @code{Staff}.
+
+@item
+String numbers can now also be used to print roman numerals
+(e.g. for unfretted string instruments).
+@lilypond[verbatim,quote,relative=2]
+c2\2
+\romanStringNumbers
+c\2
+\arabicStringNumbers
+c1\3
+@end lilypond
+
 @item
 The @code{thin-kern} property of the @code{BarLine} grob has been
 renamed to @code{segno-kern}.
@@ -194,7 +598,7 @@ improved.  Previously, tuplet numbers were placed according to the
 position of the tuplet bracket, even if it was not printed.  This could
 lead to stranded tuplet numbers.  Now they are now positioned
 closer to the kneed-beam when an appropriate beam segment exists for its
-placement and when the the bracket is not drawn.
+placement and when the bracket is not drawn.
 
 Collision detection is also added, offsetting horizontally if too close
 to an adjoining note column but preserving the number's vertical
@@ -355,7 +759,7 @@ Four new Clef glyphs have been added @emph{Double G}, @emph{Tenor G},
   \clef "varC" c c c c
   \clef "altovarC" c c c c
   \clef "tenorvarC" c c c c
-  \clef "baritonevarC" c c c
+  \clef "baritonevarC" c c c c
   \clef "varpercussion" c c c c
 @end lilypond
 
@@ -379,6 +783,15 @@ examples where this makes for readable input:
 \new Staff { r16 c'16 ~ 8 ~ 4 ~ 2 | }
 @end lilypond
 
+@item
+@code{\displayLilyMusic} and its underlying Scheme functions no
+longer omit redundant note durations.  This makes it easier to
+reliably recognize and format standalone durations in expressions
+like
+@example
+@{ c4 d4 8 @}
+@end example
+
 @item
 Beaming exceptions can now be constructed using the
 @code{\beamExceptions} scheme function.  One can now write