]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/topdocs/NEWS.texi
* tex/GNUmakefile (TEX_FILES): add texinfo.cnf
[lilypond.git] / Documentation / topdocs / NEWS.texi
index 95ea4ad53266b562f0df9e144d56963029198d2c..4b6390bd571d6145ce120b432a31c5f4c1f44666 100644 (file)
 
 @node Top, , , 
 @top
+@unnumbered New features in 2.4 since 2.2
 
-@chapter New features in 2.1 since 2.0
+@itemize @bullet
 
-@ignore
-Unreleased:
+@item Parts that use @code{\quote} can now be transposed.
 
-@itemize
+@item LilyPond does not try to produce output for files that
+have a parse error.
+
+@item @code{lilypond-book} will now remove any output  files that
+contain failed music snippets.
+
+@item The mode changing commands  (@code{\chords}, @code{\lyrics}, etc.)
+have been renamed to @code{\chordmode}, @code{\lyricmode}, etc. The
+command @code{\chords} is an abbreviation for
+
+@example
+  \new ChordNames \chordmode ... 
+@end example
+
+@noindent
+@code{\drums}, @code{\lyrics}, @code{\chords}, @code{\figures}
+function similarly.
+
+@item The types of events quoted with @code{\quote}  can  now be tuned
+with @code{quotedEventTypes}. By default, only notes and rests end up
+in quotes.
+
+@item  LilyPond will try to keep
+staves at the same distances across a page, but it will stretch
+distances to prevent collisions. This results in a more even
+appearance of the page.
+
+@item Key signature cancellations are now printed before the bar line,
+and their appearance has been improved.
+
+@item Different voices that all use  @code{\quote} can now refer to
+each other.
+
+
+@item The automatic staff changer, which is invoked with
+@code{\autochange}, now creates the @code{up} and @code{down} staff
+automatically, and uses bass clef for the bottom staff.
+
+@item There is now support for putting two slurs on chords, both above
+and below. This is switched on with the @code{doubleSlurs} property.
+
+@item Running trills now have their own spanner and event,
+
+@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
+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 for ambitus 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
+The @code{\paper} block has been renamed to @code{\layout}.  A new
+@code{\paper} block 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{\applymusic},
+
+@example
+  applymusic = #(ly:make-music-function
+     (list procedure? ly:music?) ; signature
+     (lambda (where func music)  ; the function
+       (func music)))
+@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 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) #@}))
+
+@{
+  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
+
+@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{\notemode} mode is the default lexer mode.  The
+result is that
+
+@example
+\header @{ title = "The Title" @}
+@{ a b c @}
+@end example
+
+is interpreted as
+
+@example
+\header @{ title = "The Title" @}
+\book @{
+  \score @{
+    \notemode @{ a b c @}
+  @}
+@}    
+@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.
+
+@item Mode changing commands,
+such as @code{\chordmode} and @code{\figuremode} must now be directly
+followed by delimiters. The following example demonstrates the new
+behavior,
+
+@verbatim
+  \figuremode \context Figures { .. } % wrong
+  \context Figures \figuremode { .. } % right
+@end verbatim 
+
+
+@item The starting pitch for @code{relative} music is optional for music lists.
+The default value is middle C.
+
+@item Combining lyrics with music can be done with @code{\addlyrics}
+
+@example
+    \relative @{
+       \clef bass
+       d2 d c4 bes a2 \break
+    @}
+    \addlyrics @{
+       My first Li -- ly song,
+    @}
+    \addlyrics @{
+       Not much can go wrong!
+    @}
+@end example
+
+Syntactically, @code{\addlyrics} is an infix operator. It is a
+shortcut for a combination of @code{\new Lyrics}, @code{\lyricmode}
+and @code{\lyricsto}.
+
+@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 }}
+@end verbatim
+
+@item The @code{font-encoding} property can now be used to select
+differently encoded fonts. The previous default setting
+@code{TeX-text} has been replaced by latin1. LilyPond requires the
+@uref{http://www.lilypond.org/download/fonts/,ec-fonts-mftraced}
+package installed to function properly.
+
+@item The encoding of a file can be switched with
+@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. For example, two scores are combined in one book with   
+
+@example
+\book @{
+     \score @{ ... @}
+     \score @{ ... @}
+@}
+@end example
+
+
+@item
+Titling and page breaks are handled by LilyPond.  Page breaks may be
+inserted manually with
+
+@example
+  \pageBreak
+@end example
+
+@item
+Invoking @code{lilypond} runs the actual binary, which not use
+La@TeX{} for titling or page layout.  If you need La@TeX{} code in
+titles, you can use the @code{lilypond-book} program. The former
+@code{lilypond} script has been retained as @code{lilypond-latex}.
+
+@item There is now less of a noticeable ``hook'' at the end of a long slur.
+
+@item The meaning of the @code{|} in the input can be redefined, by
+ assigning a music expression to @code{pipeSymbol}.
 @end itemize
 
-Version 2.1.13
-@end ignore
+
+
+@c ****************************************************************
+
+@unnumbered New features in 2.2 since 2.0
 
 @itemize @bullet
+
+@item Setting @code{raggedlast = ##t} in the @code{\paper} block
+causes the last line to be set flush-left instead of justified. 
+
+@item The @code{Timing_engraver} now sets the @code{Timing} alias on
+its containing context automatically.
+
+@item The code for font selection has been rewritten. In addition to
+existing font selection properties, the property @code{font-encoding}
+has been added, which makes the switch between normal @code{text} and
+other encodings like @code{braces}, @code{music} and @code{math}.
+
+@item The pmx2ly script has been removed from the distribution.
+
+@item Pedal brackets will now run to the last bar of a piece if they are not
+explicitly ended.
+
+@item Context definitions now use the word @code{\context} instead of @code{\translator}.
+
+@item Property functions may be used as an argument to @code{set!},
+for example
+
+@example
+  (set! (ly:grob-property grob 'beam) ... )
+@end example
+
+@item In anticipation of Emacs 21.4 or 22.1, the info documentation contains
+images.
+
+@item Cue notes can be quoted directly from the parts that
+contain them. This will take into account transposition of source and target
+instrument. For example,
+
+@verbatim
+\addquote clarinet \notes\relative c' {
+  \transposition bes
+  fis4 fis fis fis
+}
+
+\score {
+    \notes \relative c'' {
+       c8 d8 \quote 2 oboe es8 gis  
+    }
+}
+@end verbatim
+
+@item The transposition of an instrument can be specified using the
+@code{\transposition} command.  An
+E-flat alto saxophone is specified as 
+
+@example
+  \transposition es'
+@end example 
+
+@item The naming of exported Scheme functions now follows Scheme conventions.
+Changes be applied to Scheme files with 
+
+@example
+        convert-ly -e -n --from=2.1.24 --to=2.1.26 *.scm 
+@end example
+
+
+@item Notes can  be excluded from auto-beaming, by  marking them with
+@code{\noBeam}
+@example
+  c8 c \noBeam c c 
+@end example
+
+@noindent
+will print two separate eighth notes, and two beamed notes.
+
+@item  Translators and contexts have been split. The result of this
+internal cleanup is that @code{Score} no longer is the top context;
+@code{Score} is contained in the @code{Global} context. Consequently,
+it is possible to tweak @code{Score} as follows:
+
+@example
+  \context Score \with @{
+    @dots{}
+  @}
+@end example
+
+@item The number of staff lines  in Tablature notation is now
+automatically deduced from the @code{stringTunings} property.
+
+@item The program reference has been cleaned up and revised.
+
+@item The syntax for setting properties has been simplified:
+the following table lists the differences:
+
+@example
+      (old)                           (new)
+
+\property A.B = #C                \set A.B = #C
+\property A.B \unset              \unset A.B
+\property A.B \set #C = #D        \override A.B #C = #D 
+\property A.B \override #C = #D   (removed)
+\property A.B \revert #C          \revert A.B #C
+@end example
+
+Furthermore, if @code{A} is left out, the bottommost context is used
+by default.  In other words, it is no longer necessary to explicitly
+mention @code{Voice}, @code{Lyrics} or @code{ChordNames}. 
+
+Old:
+
+@example
+   \property Voice.autoBeaming = ##f
+   \property Staff.TimeSignature \set #'style = #'C
+@end example
+
+New:
+
+@example
+   \set autoBeaming = ##f
+   \override Staff.TimeSignature #'style = #'C
+@end example
+
+
+@item Tweaks  made with @code{\override} and @code{\revert} no longer
+hide tweaks at higher context levels.
+
+@item Melismata in lyrics are also properly handled  in the MIDI output.
+
+@item The lilypond-book script has been rewritten.
+It is shorter, cleaner and faster.  The special construct
+@code{mbinclude} has been removed, plain @code{@@include} or
+@code{\input} can be used now.
+
+It now supports running convert-ly on the lilypond snippets,
+@example
+    lilypond-book --filter='convert-ly --from=2.0.0' my-book.tely
+@end example
+
+@item The @code{LyricsVoice} context has been removed. Lyrics should only
+be constructed in @code{Lyrics}.
+
+@item The @code{Thread} context has been removed. Note heads and rests
+are now constructed at @code{Voice} level.
+
+@item  Harmonic notes can now be entered as
+
+@example
+   <c' g''\harmonic>
+@end example
+
+@item Drum notation is now supported  as a regular feature:
+percussion may be entered in @code{\drums} mode, and printed or
+performed in a @code{DrumStaff} context:
+
+@example
+  \score @{
+    \drums \new DrumStaff @{ hihat4 cowbell8 @}
+  @}
+@end example
+
+@item The automatic staff changer was internally rewritten. As a
+result, the syntax has been simplified as well:
+
+@example
+  \autochange @var{the-music}
+@end example
+
 @item The ergonomic syntax of @code{\markup} now has an equivalent in
 Scheme. The @code{markup*} macro creates such objects; the following
 two markup commands are equivalent:
@@ -35,8 +462,8 @@ PostScript file output is disallowed, and lilypond-bin is invoked with
 @code{--safe-mode}, the user's Guile expressions are evaluated in a
 safe environment and file inclusion is not allowed.
 
-Be warned that a DOS attack using Guile, @TeX{} or PostScript is
-rather easy.
+Warning: this does not protect against denial-of-service attacks using
+Guile, @TeX{} or PostScript.
 
 (This feature is still experimental.)
 
@@ -52,14 +479,12 @@ sizes.
 @item A  more cleanly constructed part combiner has been installed.
 It is more robust and less buggy. The part-combiner can be used with
 @example
-  \newpartcombine @var{mus1} @var{mus2}
+  \partcombine @var{mus1} @var{mus2}
 @end example
 
 @noindent
 See @file{input/regression/new-part-combine.ly} for an example.
 
-(This feature is still experimental.)
-
 @item Formatting of rehearsal marks has been improved. The @code{\mark}
 command now only does automatic incrementing for marks specified as
 integer. For example, @code{\mark #1} will print an A in the default
@@ -94,11 +519,14 @@ setting staff sizes. Both are demonstrated in this fragment:
 
 
 @noindent
-Both have  the same effect on the global layout  of a
-piece. Similarly, the paper size may be changed as follows
+Both have the same effect on the global layout of a piece. Similarly,
+the paper size may be changed as follows
 
 @example
-  #(set-paper-size "a4")
+  #(set-default-paper-size "a4")
+  \paper @{
+    #(set-paper-size "a4")
+  @}
 @end example 
 
 
@@ -124,12 +552,12 @@ octave should be.  In the following example,
 @noindent
 the d will generate a warning, because a d'' is
 expected, but a d' is found.
-@c @code adds ` ' very confusing.
+@c @code adds ` ', very confusing.
 
 @item There is a new mechanism for putting lyrics to melodies.
-With this mechanism, @code{LyricVoice}s can be put melodies
+With this mechanism, @code{Lyrics} lines can be put melodies
 individually, allowing for different melismatic sections in every
-@code{LyricVoice}. See @file{input/regression/lyric-combine-new.ly}.
+@code{Lyrics}. See @file{input/regression/lyric-combine-new.ly}.
 
 @item Bar lines may now be dotted.
 
@@ -156,11 +584,11 @@ expression. For example,
 @end example 
 
 @item Features of spanner contexts, like @code{Staff}, can now be changed
-  using @code{\property}, eg.
+  using @code{\set}, eg.
 
 @example
   \new Staff @{
-       \property Staff.StaffSymbol \set #'line-count = #4
+       \override Staff.StaffSymbol #'line-count = #4
        c'4
   @} 
 @end example
@@ -191,13 +619,16 @@ attached to the lyric syllable.
 
 @item
 When redefining a context, the associated identifier is also
-updated. For example, after reading the following snippet,
+updated. For example, after reading 
+
 @example
  \translator @{
         \ScoreContext
         autoBeaming = ##f
  @}
 @end example
+
+@noindent
 the definition of @code{ScoreContext} is updated to include the changed
 setting.
 
@@ -220,7 +651,7 @@ the desired size. As a side-effect, there are now no longer
 limitations in using smaller fonts (eg. grace notes) at small staff
 sizes.
 
-@item The appearance of stem tips is now also engraved with rounded corners.
+@item Stem tips are now also engraved with rounded corners.
 
 @item
 The placement of accidentals on chords and ledgered notes is improved.
@@ -228,7 +659,7 @@ The placement of accidentals on chords and ledgered notes is improved.
 @end itemize
 
 
-@chapter New features in 2.0 since 1.8
+@unnumbered New features in 2.0 since 1.8
 
 @itemize
 
@@ -432,7 +863,7 @@ it automagically through the new @code{lily-wins} frontend.
 
 
 
-@chapter New features in 1.8 since 1.6
+@unnumbered New features in 1.8 since 1.6
 
 @itemize
 
@@ -495,7 +926,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
 
@@ -609,7 +1040,7 @@ The manual has been completely revised and extended.
 
 @end itemize
 
-@chapter New features in 1.6 since 1.4
+@unnumbered New features in 1.6 since 1.4
 
 
 @itemize @bullet