@node Top, , ,
@top
+@unnumbered New features in 2.1 since 2.0
-@chapter New features in 1.8 since 1.6
+@itemize @bullet
+
+@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:
+@example
+ f4^#(markup* #:raise 0.2 #:bold "hi")
+ f4^\markup @{ \raise #0.2 \bold hi @}
+@end example
+
+@item Voice names, for vocal lines, have been added. They are similar
+to instrument names. They can be set by defining @code{vocalName}
+and @code{vocNam}.
+
+@item Safe mode has been reinstated for lilypond.
+When lilypond is invoked with @code{--safe-mode}, @TeX{} and
+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.
+
+Warning: this does not protect against denial-of-service attacks using
+Guile, @TeX{} or PostScript.
+
+(This feature is still experimental.)
+
+@item There is now a Scheme macro for defining markup
+commands. Special mark-up commands can be defined in user-files too.
+
+@item Many fixes for dimension scaling have been made,
+resulting in correct results for scores that mix staves in different
+sizes.
+
+@item Improved robustness when layout properties are accidentally removed.
+
+@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
+ \partcombine @var{mus1} @var{mus2}
+@end example
+
+@noindent
+See @file{input/regression/new-part-combine.ly} for an example.
+
+@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
+style. See @file{input/regression/rehearsal-mark-letter.ly},
+@file{input/regression/rehearsal-mark-number.ly}.
+
+@item Formatting of ottava brackets has been much improved.
+
+@item Objects in the output can now be documented: the following fragment
+ boxes the note head, and adds the text ``heads or tails?'' three
+spaces below the box.
+
+@example
+ \context Voice \applyoutput #(add-balloon-text
+ 'NoteHead "heads, or tails?"
+ '(0 . -3))
+
+
+ c8
+@end example
+
+
+@item Default staff sizes are now scalable. There are two new mechanisms for
+setting staff sizes. Both are demonstrated in this fragment:
+
+@example
+ #(set-global-staff-size 15)
+ \paper @{
+ #(paper-set-staff-size (* 15 pt))
+ @}
+@end example
+
+
+@noindent
+Both have the same effect on the global layout of a piece. Similarly,
+the paper size may be changed as follows
+
+@example
+ #(set-default-paper-size "a4")
+ \paper @{
+ #(set-paper-size "a4")
+ @}
+@end example
+
+
+@item Warnings for bar check errors are more cleverly printed. This
+makes @code{barCheckSynchronize} superfluous, so it is now switched
+off by default.
+
+Warning: this will cause problems in scores that use bar checks to
+shorten measures.
+
+@item The black note head was made a little rounder, which causes a less
+ frantic graphic impression.
+
+@item
+A more concise syntax for checking octaves was introduced. A note may
+be followed by @code{=}@var{quotes} which indicates what its absolute
+octave should be. In the following example,
+
+@example
+ \relative c'' @{ c='' b=' d,='' @}
+@end example
+
+@noindent
+the d will generate a warning, because a d'' is
+expected, but a d' is found.
+@c @code adds ` ', very confusing.
+
+@item There is a new mechanism for putting lyrics to melodies.
+With this mechanism, @code{Lyrics} lines can be put melodies
+individually, allowing for different melismatic sections in every
+@code{Lyrics}. See @file{input/regression/lyric-combine-new.ly}.
+
+@item Bar lines may now be dotted.
+
+
+@item The documentation now has links to a wiki, where everyone can
+add personal comments to the manual.
+
+@item Contexts may now be changed locally for an isolated music
+expression. For example,
+
+@example
+ \new Voice \with @{
+ \consists "Pitch_squash_engraver"
+ @} @{
+ c'4
+ @}
+@end example
+
+@item The syntax for changing staffs has changed. The keyword
+@code{\change} should now be used, e.g.
+
+@example
+ \change Staff = up
+@end example
+
+@item Features of spanner contexts, like @code{Staff}, can now be changed
+ using @code{\set}, eg.
+
+@example
+ \new Staff @{
+ \override Staff.StaffSymbol #'line-count = #4
+ c'4
+ @}
+@end example
+
+@noindent
+puts a quarter note C on a staff with 4 lines.
+
+
+@item Multi measure rests are now truly centered between the
+clefs/barlines of the staff, their position is independent of symbols
+on the other staffs.
+
+@item Collision resolution for dots in chords has been improved greatly.
+
+@item
+Spacing following barlines was improved for widely stretched lines.
+
+@item
+Lyric hyphens and extenders now conform to standard typesetting
+practice.
+
+@item
+Lyrics are now aligned under note heads conforming to engraving
+standards. The responsible code has been rewritten, and is drastically
+simpler from the previous version. To aid this rewrite, the syntactic
+function of the extender line ( __ ) has been changed: it is now
+attached to the lyric syllable.
+
+@item
+When redefining a context, the associated identifier is also
+updated. For example, after reading the following snippet,
+@example
+ \translator @{
+ \ScoreContext
+ autoBeaming = ##f
+ @}
+@end example
+the definition of @code{ScoreContext} is updated to include the changed
+setting.
+
+
+@item
+The weight of the stafflines is now heavier at smaller staff sizes.
+The font has been modified to match this look: at smaller sizes, the
+font is heavier and the note heads are more rounded.
+
+@item Processing scores is now done while parsing the file. New
+Scheme functions give more flexibility: for example, it is now possible
+interpret a score, collecting synchronized musical events in a list, and
+manipulate that information using inline Scheme. For an example, see
+@file{input/no-notation/recording.ly}.
+
+@item Font sizes can now truly be scaled continuously: the @code{font-size}
+is similar to the old @code{font-relative-size}, but may be set to
+fractional values; the closest design size will be scaled to achieve
+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 Stem tips are now also engraved with rounded corners.
+
+@item
+The placement of accidentals on chords and ledgered notes is improved.
+
+@end itemize
+
+
+@chapter New features in 2.0 since 1.8
+
+@itemize
+
+@item
+Crescendos can now be drawn dotted or dashed.
+
+@item
+Quarter tones are now supported. They are entered by suffixing
+@code{ih} for a half-sharp and @code{eh} for a half-flat. Hence, the
+following is an ascending list of pitches:
+
+@example
+ ceses ceseh ces ceh c cih cis cisih cisis
+@end example
+
+@item
+The following constructs have been removed from the syntax:
+
+@example
+ \duration #SCHEME-DURATION
+ \pitch #SCHEME-PITCH
+ \outputproperty @var{func} @var{symbol} = @var{value}
+@end example
+
+For @code{\outputproperty}, the following may be substituted:
+
+@example
+ \applyoutput #(outputproperty-compatibility @var{func}
+ @var{symbol} @var{value})
+@end example
+
+@item
+Clefs may now be transposed arbitrarily, for example
+
+@example
+ \clef "G_8"
+ \clef "G_15"
+ \clef "G_9"
+@end example
+
+
+@item
+The syntax for chords and simultaneous music have changed.
+Chords are entered as
+
+@example
+ <@var{pitches}>
+@end example
+
+while simultaneous music is entered as
+
+@example
+ <<@var{..music list..}>>
+@end example
+
+In effect, the meanings of both have been swapped relative to their 1.8
+definition. The syntax for lists in @code{\markup} has changed
+alongside, but figured bass mode was not changed, i.e.:
+
+@example
+ \markup @{ \center <@var{..list of markups..}> @}
+ \figure @{ <@var{figures}> @}
+@end example
+
+As chords the more often used than simultaneous music, this change will
+save keystrokes.
+
+@item
+Each music expression can now be tagged, to make different printed
+versions from the same music expression. In the following example,
+we see two versions of a piece of music, one for the full score, and
+one with cue notes for the instrumental part:
+
+@example
+<< \tag #'part <<
+ @{ c4 f2 g4 @} % in the part, we have cue-notes
+ \\ R1 >>
+ \tag #'score R1 % in the score: only a rest
+>>
+@end example
+
+The same can be applied to articulations, texts, etc.: they are
+made by prepending
+
+@example
+ -\tag #@var{your-tags}
+@end example
+
+to an articulation, for example,
+
+@example
+ c4-\tag #'with-fingerings -4 -\tag #'with-strings \6
+@end example
+
+This defines a note, which has a conditional fingering and a
+string-number indication.
+
+@item
+The settings for chord-fingering are more flexible. You can specify a
+list where fingerings may be placed, eg.
+
+@example
+ \property Voice.fingeringOrientations = #'(left down)
+@end example
+
+This will put the fingering for the lowest note below the chord, and the
+rest to the left.
+
+@item
+The script previously known as @code{ly2dvi} has been renamed to
+@code{lilypond}. The binary itself is now installed as
+@code{lilypond-bin}.
+
+@item
+Markup text (ie. general text formatting) may now be used for lyrics too.
+
+@item
+Two new commands for grace notes have been added, @code{\acciaccatura}
+and @code{\appoggiatura},
+
+@example
+ \appoggiatura f8 e4
+ \acciaccatura g8 f4
+@end example
+
+Both reflect the traditional meanings of acciaccatura and appogiatura,
+and both insert insert a slur from the first grace note to the main
+note.
+
+@item
+Layout options for grace notes are now stored in a context property,
+and may now be set separately from musical content.
+
+@item
+The @code{\new} command will create a context with a unique
+name automatically. Hence, for multi-staff scores, it is no longer
+necessary to invent arbitrary context names. For example, a two-staff
+score may be created by
+
+@example
+ \simultaneous @{
+ \new Staff @{ @var{notes for 1st staff} @}
+ \new Staff @{ @var{notes for 2nd staff} @}
+ @}
+@end example
+
+
+
+@item
+Octave checks make octave errors easier to correct.
+The syntax is
+
+@example
+ \octave @var{pitch}
+@end example
+
+This checks that @var{pitch} (without octave) yields @var{pitch} (with
+octave) in \relative mode. If not, a warning is printed, and the
+octave is corrected.
+
+@item
+All articulations must now be entered postfix. For example,
+
+@example
+ c8[( d8])
+@end example
+
+@noindent
+is a pair of beamed slurred eighth notes.
+
+@item
+The definition of @code{\relative} has been simplified. Octaves are
+now always propagated in the order that music is entered. In the
+following example,
+
+@example
+ PRE
+ \repeat "unfold" 3 BODY \alternative @{ ALT1 ALT2 @}
+ POST
+@end example
+
+@noindent
+the octave of BODY is based on PRE, the starting octave of ALT1 on
+BODY, the starting octave of ALT2 on ALT1, and the starting octave of
+POST on ALT2.
+
+The same mechanism is used for all other music expressions, except the
+chord. Backwards compatibility is retained through a special program option,
+which is set through
+
+@example
+ #(ly:set-option 'old-relative)
+@end example
+
+@item
+Windows users can double click a @code{.ly} file to process and view
+it automagically through the new @code{lily-wins} frontend.
+
+@end itemize
+
+
+
+
+@unnumbered New features in 1.8 since 1.6
@itemize
changed to
@example
- < PITCHES > for chords
+ < PITCHES >
@end example
-and
+for chords, and
@example
- \simultaneous @{ .. @}
+ \simultaneous @{ .. @}
@end example
for simultaneous music.
can be tuned and have ergonomic syntax for entering exceptions.
@item
-Texts may now be put on multimeasure rests, eg.
+Texts may now be put on multimeasure rests, e.g.
@example
R1*20^\markup @{ "GP" @}
Glissandi can now be printed using the zigzag style.
@item
-LilyPond can now print clusters. The syntax is:
+LilyPond can now print clusters. The syntax is
@example
\apply #notes-to-clusters @{ NOTE NOTE .. @}
@item
-Nested horizontal brackets for music analysis can now be printed.
+Nested horizontal brackets for music analysis can now be printed:
@example
NOTE-\startGroup
@end itemize
-@chapter New features in 1.6 since 1.4
+@unnumbered New features in 1.6 since 1.4
@itemize @bullet