]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/topdocs/NEWS.texi
* input/test/README: new file.
[lilypond.git] / Documentation / topdocs / NEWS.texi
index 32b2295c3d4757f9ec72c70018b924686b722b75..c0302883035315bce503a8769a4696df94a5cc4d 100644 (file)
 
 @itemize @bullet
 
+@item Running trills now have their own spanner and event,
+for example,
+
+@example
+  c1\startTrillSpan c4\stopTrillSpan 
+@end example
+
+@item There is a new markup command @code{\postscript} that takes a
+string that is dumped as verbatim PostScript in the output.
+
+@item The melody  for a @code{\lyricsto} text can be changed during a
+melody by setting the @code{associatedVoice} property.
+
+@item The @code{\lyricsto} keyword now automatically switches on
+@code{\lyrics} mode.
+
+@item The LilyPond binary  now supports output options
+@code{--dvi} @code{--png} @code{--ps} @code{--pdf} and
+@code{--preview}.  The old wrapper script for La@TeX{} has been
+renamed to @code{lilypond-latex}.
+
+@item Support ambituses has been rewritten. The Ambitus object is now
+a grouping object, composed of @code{AmbitusLine},
+@code{AmbitusAccidental} and @code{AmbitusNoteHead}. These objects may
+be tuned similar to accidentals and note heads.
+
+@item Ledger lines are now shortened when the spacing is tight. This
+prevents ledger lines from colliding with each other.
+
+@item Slur formatting has been rewritten. The new slur code
+works similar to the Beam formatter: scores are assigned for all
+esthetic components of a slur. A large number of combinations for
+begin and end points is then tried out.  Slurs will now also take into
+account collisions with staff lines, scripts (like staccato and
+accent) and accidentals.
+
+
+@item In the LilyPond  emacs mode, entering @code{|} will  display the
+  current beat within the measure.
+
+@item Colliding notes are now correctly aligned relative to notes in other staves.
+
+@item An experimental GNOME output backend is available for developers.
+It depends on several unreleased packages such as gnome-guile TLA and
+Pango CVS.  The output interface coverage is sparse, but it already
+does support point-and-click on the GNOME Canvas.  See also
+@file{scm/output-gnome.scm}.
+
+@item Context definitions are now stored in identifiers that match the
+context name, in other words, to modify a @code{Staff} context, the
+following code may be used.
+
+@example
+\context @{
+  \Staff
+  .. 
+@}
+@end example
+
+@item A new block, @code{\bookpaper} has been introduced to
+hold settings for paper size and output scaling. Further options
+include @code{raggedbottom} (if set, systems are not vertically filled
+to reach the bottom of the page), and @code{raggedlastbottom}.
+
+
+
+@item Support for fret diagrams  has been contributed by Carl
+D. Sorensen. @file{input/test/fret-diagram.ly} contains an example.
+@item The @code{--safe-mode} has been revisited: GUILE evaluation
+is done in the R5RS safe module, with only the basic @code{ly:}
+interface available and malicious @TeX{} code is stopped.  However, to
+be reasonably safe, you are advised to use the PostScript backend
+rather than the @TeX{} backend anyway; and if possible use an UML
+sandbox to run gs or latex.
 
 @item Music syntax can now be extended seamlessly. As an example,
-here is the new implementation @code{\apply},
+here is the new implementation @code{\applymusic},
 
 @example
-  apply = #(ly:make-music-function
+  applymusic = #(ly:make-music-function
      (list procedure? ly:music?) ; signature
      (lambda (where func music)  ; the function
        (func music)))
 @end example
 
-@item Music can be used as a markup.
-When inserting a @code{score} block as part of a @code{\markup},
-it produces a rendered markup of the music.
-
-@example
-@c TODO, see input/test/markup-score.ly
-@end example
+@item @code{\apply} has been renamed to @code{\applymusic}.
 
+@item Music can be used as a markup.
+When inserting a @code{score} block as part of a @code{\markup}, it
+produces a rendered markup of the music.  An example is in
+@file{input/test/markup-score.ly}.
 
 @item LilyPond expressions can be embedded into Scheme. The syntax for
-this is @code{#@{ ... #@}}. Within such a block, Scheme forms, for
-instance variable names, can be introduced thanks to a @code{$}
-character (@code{$$} results in a single `$' character).  These forms
-are then printed in the pattern.
+this is @code{#@{ ... #@}}. Within such a block, Scheme forms can be
+introduced using a @code{$} character (@code{$$} results in a single
+`$' character).  These forms are then inserted in the pattern.
 
 @example
 #(define (textoffset dx dy)
    (ly:export
      #@{ \override Voice.TextScript #'extra-offset = #(cons $dx $dy) #@}))
 
-\score @{
-  \notes @{
-    c'^"normal text"
-    %% the following statement is the same as
-    %% \override Voice.TextScript #'extra-offset = #(cons 2 -3)
-    #(textoffset 2 -3)
-    c'^"text with offset" 
-  @}
+@{
+  c'^"normal text"
+  %% The following embedded scheme call is the same as
+  %% \override Voice.TextScript #'extra-offset = #(cons 2 -3)
+  #(textoffset 2 -3)
+  c'^"text with offset" 
 @}
 @end example
 
-@c FIXME: un-geekify
-@item Music lists are allowed at toplevel, and are handled by
-@code{default-toplevel-music-handler}.  Similarly, a @code{score} block
-at toplevel is handled by @code{default-toplevel-score-handler} an a
-@code{book} at toplevel is handled by @code{default-toplevel-book-handler}.
-
-These default handlers have the following effect.  A Music list at
-toplevel is encapsulated in a @code{score} block, and a @code{score}
-block at toplevel is encapsulated in a @code{book} block.  A
-@code{book} block at toplevel generates printed output.
+@item A music list at toplevel is interpreted as implicit @code{\score}
+a @code{\score} block at toplevel is interpreted as an implicit
+@code{\book} and @code{\notes} mode is the default lexer mode.  The
+result is that
 
 @example
 \header @{ title = "The Title" @}
-\notes @{ a b c @}
+@{ a b c @}
 @end example
 
-is the same as
+is interpreted as
 
 @example
 \header @{ title = "The Title" @}
@@ -77,14 +141,29 @@ is the same as
 @}    
 @end example
 
+This is handled by the function defined in
+@code{toplevel-music-handler}.  Similarly, @code{\score} and
+@code{\book} are handled by @code{toplevel-score-handler} and a
+@code{toplevel-book-handler}.  By changing these variables, different
+results can be obtained.
+
+This required a small change in the syntax. Mode changing commands,
+such as @code{\chords} and @code{\figures} now be directly followed by
+delimeters. The following example demonstrates the new behavior,
+
+@verbatim
+  \figures \context Figures { .. } % wrong
+  \context Figures \figures { .. } % right
+@end verbatim 
+
+
 @item Start pitch for @code{relative} music is optional for music lists.
-The default value is one octave below middle C.
+The default value is middle C.
 
 @c update-me?  formal definition of newaddlyrics, once it works
-@item Combining lyrics with music can be @code{newlyrics}
+@item Combining lyrics with music can be done with @code{\newlyrics}
 
 @example
-<<
     \relative @{
        \clef bass
        d2 d c4 bes a2 \break
@@ -95,17 +174,16 @@ The default value is one octave below middle C.
     \newlyrics @{
        Not much can go wrong!
     @}
->>
 @end example
 
-Syntactically, @code{\newlyrics} acts like an infix operator
+Syntactically, @code{\newlyrics} acts like an infix operator.
 
 @item The parser is encapsulated in a Scheme function
 @code{ly:parse-file}, so the following fragment processes two files
 
 @verbatim
-  #(ly:parse-file "another.ly")
-  \score { \notes  { c4 }}
+#(ly:parse-file "another.ly")
+\score { \notes { c4 }}
 @end verbatim
 
 @item The @code{font-encoding} property can now be used to select
@@ -118,24 +196,26 @@ package installed to function properly.
 @code{\encoding}. The strings for markup texts are translated
 automatically.
 
-@item The toplevel block @code{book} introduces page layout.
-A @code{book} groups @code{score} blocks into one page layout entity.
-Page layout consists of markup titles, headers and footers, and page
-breaking.  Two page breaking algorithms are available, the classic
-ragged pages (the default), and optimal page breaking
+@item The toplevel block @code{\book} introduces page layout.
+A @code{\book} groups @code{\score} blocks into one page layout
+entity. For example, two scores are combined in one book with   
 
 @example
-\paper @{
-    %% Select page breaking function.
-    %% #(define page-breaking ly:ragged-page-breaks)
-    #(define page-breaking ly:optimal-page-breaks)
-@}
 \book @{
      \score @{ ... @}
      \score @{ ... @}
 @}
 @end example
 
+Titling and page breaks are handled by LilyPond.  For automatic page
+breaking, two algorithms are available, the classic ragged pages (the
+default), and optimal page breaking.  
+Page  breaks may be inserted manually with
+@example
+  \pageBreak
+@end example
+
+@item
 The @code{lilypond} program does not generate La@TeX{} titles or page
 layout.  If you need La@TeX{} titles, you can use the
 @code{lilypond-book} program.
@@ -795,7 +875,7 @@ for chords, and
 for simultaneous music.
 
 To convert your files from <PITCHES> to <<PITCHES>>, use the script
-included in buildscripts/convert-new-chords.py
+included in @file{buildscripts/convert-new-chords.py}.
 
 This change was introduced for the following reasons