]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/user/refman.itely
* scm/chord-name.scm: don't export anything from chord module.
[lilypond.git] / Documentation / user / refman.itely
index 9e05bb9b1e785276623a823fd8f7283365c35cd7..9ee10571c849c96c1d4cc0e17cf4f03f2051006a 100644 (file)
@@ -22,7 +22,7 @@
 @end html
 
 This document describes GNU LilyPond and its input format. The last
-revision of this document was made for LilyPond 1.6.2.  It assumes
+revision of this document was made for LilyPond 1.7.10.  It assumes
 that you already know a little bit about LilyPond input (how to
 make an input file, how to create sheet music from that input file,
 etc).  New users are encouraged to study the tutorial before reading
@@ -314,7 +314,7 @@ won't affect the appearance of the notes or rests produced.
 
 Durations can also be produced through GUILE extension mechanism. 
 @lilypond[verbatim,fragment]
- c'\duration #(make-duration 2 1)
+ c'\duration #(ly:make-duration 2 1)
 @end lilypond
 
 
@@ -322,7 +322,7 @@ Durations can also be produced through GUILE extension mechanism.
 
 Dot placement for chords is not perfect.  In some cases, dots overlap:
 @lilypond[]
- \context Voice { <f,4. c'' d e f> }
+ <<f, c'' d e f>>4.
 @end lilypond
 
 
@@ -339,7 +339,7 @@ slurs, which indicate articulation, or phrasing slurs, which indicate
 musical phrasing.  A tie is entered using the tilde symbol `@code{~}'.
 
 @lilypond[fragment,verbatim,center]
-  e' ~ e' <c' e' g'> ~ <c' e' g'>
+  e' ~ e' <<c' e' g'>> ~ <<c' e' g'>>
 @end lilypond
 
 When a tie is applied to a chord, all note heads (whose pitches match) are
@@ -351,7 +351,7 @@ If you want less ties created for a chord, you can set
 for every tied chord.
 @lilypond[fragment,verbatim,center]
   \property Voice.sparseTies = ##t
-  <c' e' g'> ~ <c' e' g'>
+  <<c' e' g'>> ~ <<c' e' g'>>
 @end lilypond
 
 In its meaning a tie is just a way of extending a note duration, similar
@@ -437,7 +437,7 @@ should last.  With this, you can make lots of tuplets while typing
 @code{\times} only once, saving you lots of typing.
 
 @lilypond[fragment,  relative, singleline, verbatim]
-\property Voice.tupletSpannerDuration = #(make-moment 1 4)
+\property Voice.tupletSpannerDuration = #(ly:make-moment 1 4)
 \times 2/3 { c'8 c c c c c }
 @end lilypond
 
@@ -599,9 +599,9 @@ preceding note.
 
 @lilypond[fragment,verbatim,center]
   \relative c' {
-    c <c e g
-    <c' e g>
-    <c, e' g>
+    c <<c e g>
+    <<c' e g>>
+    <<c, e' g>>
   }
 @end lilypond 
 @cindex @code{\notes}
@@ -691,9 +691,10 @@ column location.
 @c move this elsewhere?
 
 LilyPond also comes with support files for emacs: lilypond-mode for
-emacs provides indentation, syntax coloring and handy compile
-short-cuts. If lilypond-mode is not installed on your platform, then
-refer to the installation instructions for more information
+emacs provides indentation, autocompletion, syntax coloring, handy
+compile short-cuts and reading Info documents of lilypond inside emacs.
+If lilypond-mode is not installed on your platform,
+then refer to the installation instructions for more information.
 
 @cindex emacs
 @cindex emacs mode
@@ -725,7 +726,7 @@ fonts. Refer to the Xdvi documentation for more information.
 To use point-and-click, add one of these lines to the top of your .ly
 file.
 @example
-#(set-point-and-click! 'line)
+#(ly:set-point-and-click 'line)
 @end example
 @cindex line-location
 
@@ -752,23 +753,27 @@ emacsclient --no-wait +%l %f
 If you use xemacs instead of emacs, you use @code{(gnuserve-start)} in
 your @file{.emacs}, and set @code{XEDITOR} to @code{gnuclient -q +%l %f}
 
-For using Vim, set @code{XEDITOR} to @code{gvim --remote +%l %f}, or use this
-argument with xdvi's @code{-editor} option.
+For using Vim, set @code{XEDITOR} to @code{gvim --remote +%l %f}, or
+use this argument with xdvi's @code{-editor} option.
+
 @cindex NEdit
 For using NEdit, set @code{XEDITOR} to @code{nc -noask +%l %f}, or
 use this argument with xdvi's @code{-editor} option.
 
 If can also make your editor jump to the exact location of the note
-you clicked. This is only supported on Emacs. Users of version 20 must
-apply the patch @file{emacsclient.patch}. Users of version 21 must
-apply @file{server.el.patch} (version 21.2 and earlier).  At the top
-of the @code{ly} file, replace the @code{set!} line with the following
-line,
+you clicked. This is only supported on Emacs and VIM. Users of Emacs version
+20 must apply the patch @file{emacsclient.patch}. Users of version 21
+must apply @file{server.el.patch} (version 21.2 and earlier).  At the
+top of the @code{ly} file, replace the @code{set-point-and-click} line
+with the following line,
 @example
-#(set-point-and-click! 'line-column)
+#(ly:set-point-and-click 'line-column)
 @end example
 @cindex line-colomn-location
-and set @code{XEDITOR} to @code{emacsclient --no-wait +%l:%c %f}.
+and set @code{XEDITOR} to @code{emacsclient --no-wait +%l:%c %f}.  Vim
+users can set @var{XEDITOR} to @code{gvim --remote +:%l:norm%c| %f}.
+
+
 
 @refbugs
 
@@ -805,7 +810,7 @@ such as keys, clefs and time signatures.
 @cindex Staff notation
 
 @menu
-* Staff symbol::
+* Staff symbol::                
 * Key signature::               
 * Clef::                        
 * Time signature::              
@@ -962,6 +967,28 @@ inserted, and how automatic beams should be generated.  Changing the
 value of @code{timeSignatureFraction} also causes a time signature
 symbol to be printed.
 
+More options are available through the Scheme function
+@code{set-time-signature}. In combination with the
+@internalsref{Measure_grouping_engraver}, it will create
+@internalsref{MeasureGrouping} signs. Such signs ease reading
+rhythmically complex modern music.  In the following example, the 9/8
+measure is subdivided in 2, 2, 2 and 3. This is passed to
+@code{set-time-signature} as the third argument @code{(2 2 2 3)}.
+
+@lilypond[verbatim]
+\score { \notes \relative c'' {
+   #(set-time-signature 9 8 '(2 2 2 3))
+   g8 g d d g g a8-[-( bes g-]-) | 
+   #(set-time-signature 5 8 '(3 2))
+   a4. g4
+   }
+   \paper {
+       linewidth = -1.0
+       \translator { \StaffContext
+         \consists "Measure_grouping_engraver"
+   }}}
+@end lilypond 
+
 @c .   {Partial}
 @subsection Partial
 @cindex Partial
@@ -1229,7 +1256,7 @@ same effect as twiddling with @code{stemLeftBeamCount} and
 \property Voice.subdivideBeams = ##t
 [c16 c c c c c c c]
 [c32 c c c c c c c c c c c c c c c]
-\property Score.beatLength = #(make-moment 1 8)
+\property Score.beatLength = #(ly:make-moment 1 8)
 [c32 c c c c c c c c c c c c c c c]
 @end example
 @lilypond[noindent,noquote]
@@ -1239,7 +1266,7 @@ same effect as twiddling with @code{stemLeftBeamCount} and
         \property Voice.subdivideBeams = ##t
         [c16 c c c c c c c]
         [c32 c c c c c c c c c c c c c c c]
-        \property Score.beatLength = #(make-moment 1 8)
+        \property Score.beatLength = #(ly:make-moment 1 8)
         [c32 c c c c c c c c c c c c c c c]
     }
 }
@@ -1326,16 +1353,16 @@ For example, if you want automatic beams to end on every quarter note,
 you can use the following:
 @example
 \property Voice.autoBeamSettings \override
-    #'(end * * * *) = #(make-moment 1 4)
+    #'(end * * * *) = #(ly:make-moment 1 4)
 @end example
 Since the duration of a quarter note is 1/4 of a whole note, it is
-entered as @code{(make-moment 1 4)}.
+entered as @code{(ly:make-moment 1 4)}.
 
 The same syntax can be used to specify beam starting points. In this
 example, automatic beams can only end on a dotted quarter note. 
 @example
 \property Voice.autoBeamSettings \override
-    #'(end * * * *) = #(make-moment 3 8)
+    #'(end * * * *) = #(ly:make-moment 3 8)
 @end example
 In 4/4 time signature, this means that automatic beams could end only on
 3/8 and on the fourth beat of the measure (after 3/4, that is 2 times
@@ -1380,7 +1407,7 @@ durations, i.e., you'll have to specify manual beams to get:
 
 @lilypond[singleline,fragment,relative,noverbatim]
   \property Voice.autoBeamSettings
-  \override #'(end * * * *) = #(make-moment 3 8)
+  \override #'(end * * * *) = #(ly:make-moment 3 8)
   \time 12/8 c'8 c c c16 c c c c c [c c c c] c8 c c4
 @end lilypond
 It is not possible to specify beaming parameters that act differently in
@@ -1609,7 +1636,7 @@ input file:
 
 @lilypond[singleline,fragment,verbatim]
 \property Staff.autoAccidentals = #'( Staff (any-octave . 0) )
-cis'4 <c'' c'> r2 | cis'4 <c' c''> r2 | <cis' c''> r | <c'' cis'> r | 
+cis'4 <<c'' c'>> r2 | cis'4 <<c' c''>> r2 | <<cis' c''>> r | <<c'' cis'>> r | 
 @end lilypond
 
 The only solution is to manually insert the problematic
@@ -1625,6 +1652,7 @@ accidentals using @code{!} and @code{?}.
 * Breath marks::                
 * Tempo::                       
 * Text spanners::               
+* Analysis brackets::           
 @end menu
 
 @node Slurs 
@@ -1770,8 +1798,8 @@ over many measures. This is indicated by following the text with a
 dotted line.  You can create such texts using text spanners. The syntax
 is as follows:
 @example
-\spanrequest \start "text"
-\spanrequest \stop "text"
+ \startTextSpan
+ \stopTextSpan
 @end example
 LilyPond will respond by creating a @internalsref{TextSpanner} object (typically
 in @internalsref{Voice} context).  The string to be printed, as well as the
@@ -1784,10 +1812,36 @@ An application---or rather, a hack---is to fake octavation indications.
   \property Voice.TextSpanner \set #'edge-height = #'(0 . 1.5)
   \property Voice.TextSpanner \set #'edge-text = #'("8va " . "")
   \property Staff.centralCPosition = #-13
-  a\spanrequest \start "text" b c a \spanrequest \stop "text" }
+  a\startTextSpan b c a \stopTextSpan }
 @end lilypond
 
 
+@node Analysis brackets
+@subsection Analysis brackets
+@cindex brackets
+@cindex phrasing brackets
+@cindex musicological analysis
+@cindex note grouping bracket
+
+Brackets are used in musical analysis to indicate structure in musical
+pieces. LilyPond supports a simple form of nested horizontal brackets.
+To use this, add the @internalsref{Horizontal_bracket_engraver} to
+@internalsref{Staff} context.  A bracket is started with
+@code{\groupOpen} and closed with @code{\groupClose}. This produces
+@internalsref{HorizontalBracket} objects.
+
+@lilypond[singleline,verbatim]
+\score { \notes \relative c'' {  
+       c4-\groupOpen-\groupOpen
+       c4-\groupClose
+       c4-\groupOpen
+        c4-\groupClose-\groupClose
+  }
+  \paper { \translator {
+           \StaffContext \consists "Horizontal_bracket_engraver"
+       }}}
+@end lilypond
+
 @c .  {Ornaments}
 @node Ornaments
 @section Ornaments
@@ -1916,7 +1970,6 @@ finger changes, use markup texts:
 @end lilypond
 
 
-@cindex @code{\script}
 @cindex scripts
 @cindex superscript
 @cindex subscript
@@ -2348,7 +2401,8 @@ command can be
 @item 'end-repeat
  Print a :| bar line
 @item (volta . @var{text})
- Print a volta bracket saying @var{text}.
+ Print a volta bracket saying @var{text} (the text can be specified
+ as a text string or as a markup text, see @ref{Text markup}).
 @item (volta . #f)
  Stop a running volta bracket
 @end table
@@ -2661,11 +2715,11 @@ list at the top of your file:
 
 @lilypond[singleline, verbatim]
 #(define mydrums `(
-        (bassdrum     default   #f        ,(make-pitch -1 2 0))
-        (snare        default   #f        ,(make-pitch 0 1 0))
-        (hihat        cross     #f        ,(make-pitch 0 5 0))
-        (pedalhihat   xcircle   "stopped" ,(make-pitch 0 5 0))
-        (lowtom              diamond   #f        ,(make-pitch -1 6 0))
+        (bassdrum     default   #f        ,(ly:make-pitch -1 2 0))
+        (snare        default   #f        ,(ly:make-pitch 0 1 0))
+        (hihat        cross     #f        ,(ly:make-pitch 0 5 0))
+        (pedalhihat   xcircle   "stopped" ,(ly:make-pitch 0 5 0))
+        (lowtom              diamond   #f        ,(ly:make-pitch -1 6 0))
 ))
 \include "drumpitch-init.ly"
 up = \notes { hh8 hh hh hh hhp4 hhp }
@@ -2685,8 +2739,8 @@ list:
 
 @example
 #(define mydrums (append `(
-   (bassdrum default #f ,(make-pitch -1 2 0))
-   (lowtom   diamond #f ,(make-pitch -1 6 0))
+   (bassdrum default #f ,(ly:make-pitch -1 2 0))
+   (lowtom   diamond #f ,(ly:make-pitch -1 6 0))
 ) drums ))
 @end example
 
@@ -2702,7 +2756,7 @@ dutch pitch names anymore. Hence you might wan't to reinclude
 up = \notes { crashcymbal4 hihat8 halfopenhihat hh hh hh openhihat }
 down = \notes { bassdrum4 snare8 bd r bd sn4 }
 \include "nederlands.ly"
-bass = \notes \transpose c, { a4. e8 r e g e }
+bass = \notes \transpose c c,, { a4. e8 r e g e }
 \score {
     <
         \apply #(drums->paper 'drums) \context Staff = drums <
@@ -2837,18 +2891,10 @@ Piano pedal instruction can be expressed using
 @code{\sustainDown}, @code{\sustainUp}, @code{\unaCorda},
 @code{\treCorde}, @code{\sostenutoDown} and @code{\sostenutoUp}.
 
-These identifiers are shorthands for spanner commands of the types
-@internalsref{Sustain}, @internalsref{UnaCorda} and @internalsref{Sostenuto}:
-
-@lilypond[fragment,verbatim]
-c''4 \spanrequest \start "Sustain" c''4
-c''4 \spanrequest \stop "Sustain"
-@end lilypond
-
 The symbols that are printed can be modified by setting
 @code{pedal@var{X}Strings}, where @var{X} is one of the pedal types:
 Sustain, Sostenuto or UnaCorda.  Refer to the generated documentation of
-@rgrob{SustainPedal}, for example, for more information.
+@internalsref{SustainPedal}, for example, for more information.
 
 Pedals can also be indicated by a sequence of brackets, by setting the 
 @code{pedal-type} property of SustainPedal objects: 
@@ -2899,11 +2945,11 @@ f'4 g'4 a'4 \sostenutoUp
 @cindex @code{\arpeggio}
 
 You can specify an arpeggio sign on a chord by attaching an
-@code{\arpeggio} to a note of the chord.
+@code{\arpeggio} to a chord.
 
 
 @lilypond[fragment,relative,verbatim]
-  \context Voice <c\arpeggio e g c>
+  <<c e g c>>-\arpeggio
 @end lilypond
 
 When an arpeggio crosses staves in piano music, you attach an arpeggio
@@ -2913,8 +2959,8 @@ to the chords in both staves, and set
 @lilypond[fragment,relative,verbatim]
   \context PianoStaff <
     \property PianoStaff.connectArpeggios = ##t
-    \context Voice = one  { <c'\arpeggio e g c> }
-    \context Voice = other { \clef bass  <c,,\arpeggio e g>}
+    \context Voice = one  { <<c' e g c>>-\arpeggio }
+    \context Voice = other { \clef bass  <<c,, e g>>-\arpeggio}
   >  
 @end lilypond
 
@@ -2928,9 +2974,9 @@ arpeggio, you should set the arpeggio object property
 @lilypond[fragment,relative,verbatim]
   \context Voice {
      \property Voice.Arpeggio \set #'arpeggio-direction = #1
-     <c\arpeggio e g c>
+     <<c e g c>>-\arpeggio
      \property Voice.Arpeggio \set #'arpeggio-direction = #-1
-     <c\arpeggio e g c>
+     <<c e g c>>-\arpeggio
   }
 @end lilypond
 
@@ -2945,8 +2991,8 @@ arpeggiate the chord. To draw these brackets, set the
     \property PianoStaff.connectArpeggios = ##t
     \property PianoStaff.Arpeggio \override
         #'molecule-callback = \arpeggioBracket
-    \context Voice = one  { <c'\arpeggio e g c> }
-    \context Voice = other { \clef bass  <c,,\arpeggio e g>}
+    \context Voice = one  { <<c' e g c>>-\arpeggio }
+    \context Voice = other { \clef bass  <<c,, e g>>-\arpeggio }
   >  
 @end lilypond
 
@@ -3078,7 +3124,6 @@ middle C, in string order: thus the notes are e, a, d & g)
     \notes {
       a,4 c' a e' e c' a e'
     }
-
   > 
 @end lilypond
 
@@ -3133,13 +3178,13 @@ the standard staff.
 
 LilyPond has support for both entering and printing chords. 
 @lilypond[verbatim,singleline]
-twoWays = \notes \transpose c'' {
+twoWays = \notes \transpose c c' {
   \chords {
     c1 f:sus4 bes/f
   }
-  <c e g>
-  <f bes c'>
-  <f bes d'>
+  <<c e g>>
+  <<f bes c'>>
+  <<f bes d'>>
   }
 
 \score {
@@ -3178,7 +3223,7 @@ Throughout these examples, chords have been shifted around the staff
 using @code{\transpose}.
 
 @lilypond[fragment,verbatim]
-\transpose c'' {
+\transpose c c' {
   \chords {
     c1  c:3-       c:7     c:8
     c:9 c:9-.5+.7+ c:3-.5- 
@@ -3200,7 +3245,7 @@ raises the 5th, `@code{dim}' which lowers the 5th,
 which replaces the 5th with a 4th.
 
 @lilypond[fragment,verbatim]
-\transpose c'' {
+\transpose c c' {
   \chords {
     c1:m c:min7 c:maj c:aug c:dim c:sus
   }
@@ -3213,7 +3258,7 @@ notes to be subtracted are listed after a @code{^} character,
 separated by dots.
 
 @lilypond[fragment,verbatim,center]
-  \transpose c'' {
+  \transpose c c' {
     \chords {
       c1^3 c:7^5.3 c:8^7
     }
@@ -3227,7 +3272,7 @@ transposed down until it is the lowest note in the chord.  If the note
 is not in the chord, a warning will be printed.
 
 @lilypond[fragment,verbatim,center]
-  \transpose c''' {
+  \transpose c c'' {
     \chords {
       c1 c/e c/g c:7/e
     }
@@ -3242,7 +3287,7 @@ adding the specified note to the chord, lowered by an octave,
 so it becomes the lowest note in the chord.
 
 @lilypond[fragment,verbatim,center]
-  \transpose c''' {
+  \transpose c c'' {
     \chords {
       c1 c/+c c/+g c:7/+b
     }
@@ -3285,12 +3330,12 @@ directly using simultaneous music.
 
 @lilypond[verbatim,singleline]
 scheme = \notes {
-  \chords {a1 b c} <d f g>  <e g b>
+  \chords {a1 b c} <<d f g>>  <<e g b>>
 }
 \score {
   \notes<
     \context ChordNames \scheme
-    \context Staff \transpose c'' \scheme
+    \context Staff \transpose c c' \scheme
   >
 }
 @end lilypond
@@ -3309,7 +3354,7 @@ scheme = \chords {
     \context ChordNames {
         \property ChordNames.chordChanges = ##t
         \scheme }
-    \context Staff \transpose c'' \scheme
+    \context Staff \transpose c c' \scheme
   >
 \paper{linewidth= 9.\cm}
 }
@@ -3322,9 +3367,9 @@ are entered as a list of pitches:
 
 @lilypond[verbatim,center,singleline]
 scheme = \notes {
-  <c'1 e' g'>
-  <e' g' c''>
-  <e e' g' c''>
+  <<c' e' g'>>1
+  <<e' g' c''>>
+  <<e e' g' c''>>
 }
 
 \score {
@@ -3366,7 +3411,7 @@ scheme = \chords {
     \context ChordNames = jazz {
       \property ChordNames.ChordName \override
         #'style = #'jazz \scheme }
-    \context Staff \transpose c'' \scheme
+    \context Staff \transpose c c' \scheme
   >
 }
 @end lilypond
@@ -3470,7 +3515,7 @@ adds a box around the bar numbers:
 @end example
 @lilypond[noindent,noquote]
 \score {
-    \context Staff \notes \transpose c''' {
+    \context Staff \notes \transpose c c'' {
        \property Score.BarNumber \override #'break-visibility = #end-of-line-invisible
        \property Score.barNumberVisibility = #(every-nth-bar-number-visible 5)
        \property Score.BarNumber \override #'molecule-callback =
@@ -3482,6 +3527,41 @@ adds a box around the bar numbers:
 }
 @end lilypond
 
+If you would like the bar numbers to appear at regular intervals, but
+not starting from measure zero, you can use the context function,
+@code{set-bar-number-visibility}, to automatically set
+@code{barNumberVisibility} so that the bar numbers appear at regular
+intervals, starting from the @code{\applycontext}:
+
+@example
+resetBarnum = \context Score \applycontext
+  #(set-bar-number-visibility 4)
+...
+\property Score.BarNumber \override #'break-visibility =
+  #end-of-line-invisible
+\mark "A" \resetBarnum
+\repeat unfold 10 c1
+\mark \default \resetBarnum
+\repeat unfold 8 c
+@end example
+@lilypond[noindent,noquote]
+resetBarnum = \context Score \applycontext
+  #(set-bar-number-visibility 4)
+\score {
+    <
+        \notes \transpose c c'' {
+           \property Score.BarNumber \override #'break-visibility =#end-of-line-invisible
+           \property Score.RehearsalMark \override #'padding = #2.5
+           \mark "A" \resetBarnum
+           \repeat unfold 10 c1
+           \mark \default \resetBarnum
+           \repeat unfold 8 c
+            \bar "|."
+        }
+    >
+}
+@end lilypond
+
 See also @seeinternals{BarNumber}.
 
 @refbugs
@@ -3509,13 +3589,13 @@ names:
 
 
 @lilypond[verbatim,singleline]
-#(define text-flat
-  '((font-relative-size . -2 ) (music "accidentals--1")))
-
-\score { \notes {
-  \property Staff.instrument = #`((kern . 0.5) (lines
-    "2 Clarinetti" (columns "     (B" ,text-flat ")")))
-    c'' 4 }
+\score {
+  \notes \context Staff = treble {
+    \property Staff.instrument
+       = \markup { \column << "Clarinetti" { "in B" \smaller \musicglyph #"accidentals--1" } >> }
+    { c''1 }
+  }
+  \paper { linewidth= 8.0\cm }
 }
 @end lilypond
 
@@ -3535,24 +3615,24 @@ the name to avoid a collision.
 A music expression can be transposed with @code{\transpose}.  The syntax
 is
 @example
-  \transpose @var{pitch} @var{musicexpr}
+  \transpose @var{from} @var{to} @var{musicexpr}
 @end example
 
-This means that middle C in @var{musicexpr} is transposed to
-@var{pitch}.
+This means that @var{musicexpr} is transposed to by the interval
+between @var{from} is @var{to}.
 
 @code{\transpose} distinguishes between enharmonic pitches: both
-@code{\transpose cis'} or @code{\transpose des'} will transpose up half
-a tone.  The first version will print sharps and the second version
-will print flats.
+@code{\transpose c cis} or @code{\transpose c des} will transpose up
+half a tone.  The first version will print sharps and the second
+version will print flats.
 
 @lilypond[singleline, verbatim]
 mus =\notes { \key d \major cis d fis g }
 \score { \notes \context Staff {
   \clef "F" \mus
   \clef "G"
-  \transpose g'' \mus
-  \transpose f'' \mus
+  \transpose c g' \mus
+  \transpose c f' \mus
 }}
 @end lilypond
 
@@ -3569,11 +3649,10 @@ effect music that appears inside a @code{\transpose}.
 
 Multi measure rests are entered using `@code{R}'. It is specifically
 meant for full bar rests and for entering parts: the rest can expand to
-fill a score with 
-rests, or it can be printed as a single multimeasure rest This expansion
-is controlled by the property @code{Score.skipBars}. If this is set to true,
-Lily will not expand empty measures, and the appropriate number is added
-automatically.
+fill a score with rests, or it can be printed as a single multimeasure
+rest This expansion is controlled by the property
+@code{Score.skipBars}. If this is set to true, Lily will not expand
+empty measures, and the appropriate number is added automatically.
 
 @lilypond[fragment,verbatim]
  \time 4/4 r1 | R1 | R1*2
@@ -3601,14 +3680,29 @@ rest centered in the measure, regardless of the time signature.
 
 @cindex whole rests for a full measure 
 
-The object for this object is @internalsref{MultiMeasureRest}.
+The object for this object is @internalsref{MultiMeasureRest}, and
+@internalsref{MultiMeasureRestNumber}.
 
 @refbugs
 
 Currently, there is no way to automatically condense multiple rests
 into a single multimeasure rest. Multi measure rests do not take part
-in rest collisions. There is no way to put texts centered on
-multi-measure rests.
+in rest collisions.
+
+Multi-measure rests do not accept @var{note}-@code{text} syntax for
+putting texts and scripts on the rest.  This has to be done by setting
+@code{#'text} in @internalsref{MultiMeasureRestNumber}. An identifier is
+provided for a fermata:
+
+@cindex text on multi-measure rest
+@cindex script on multi-measure rest
+@cindex fermata on multi-measure rest
+
+@lilypond[verbatim,fragment]
+  \time 3/4
+  \setMmRestFermata R2.
+@end lilypond
+
 
 @cindex condensing rests
 
@@ -3763,7 +3857,7 @@ output.
 
 @menu
 * Ancient note heads::          
-* Ancient clefs::               
+* Ancient clefs ::              
 * Custodes::                    
 * Ligatures::                   
 * Figured bass::                
@@ -4084,7 +4178,7 @@ a ligature by small square angles:
 
 @lilypond[singleline,verbatim]
 \score {
-    \notes \transpose c'' {
+    \notes \transpose c c' {
        \[ g c a f d' \]
        a g f
        \[ e f a g \]
@@ -4127,7 +4221,7 @@ Example:
 
 @lilypond[singleline,verbatim]
 \score {
-    \notes \transpose c'' {
+    \notes \transpose c c' {
        \property Score.timing = ##f
        \property Score.defaultBarType = "empty"
        \property Voice.NoteHead \set #'style = #'neo_mensural
@@ -4153,7 +4247,7 @@ following:
 
 @lilypond[singleline,verbatim]
 \score {
-    \notes \transpose c'' {
+    \notes \transpose c c' {
        \property Score.timing = ##f
        \property Score.defaultBarType = "empty"
        \property Voice.NoteHead \set #'style = #'neo_mensural
@@ -4249,8 +4343,8 @@ affecting a whole set of objects.  Second, you can select one specific
 object, and set a object property in that object.
 
 @menu
-* Tuning groups of objects ::     
-* Tuning per object ::            
+* Tuning groups of objects ::   
+* Tuning per object ::          
 * Font selection::              
 * Text markup::                 
 @end menu
@@ -4424,7 +4518,7 @@ property.
   \context Staff \outputproperty
   #(make-type-checker 'note-head-interface)
   #'extra-offset = #'(0.5 . 0.75)
-  <c8 e g> }
+  <<c e g>>8 }
 @end lilypond
 
 @cindex @code{extra-offset}
@@ -4433,7 +4527,7 @@ In this example, the predicate checks the @code{text} object property, to
 shift only the `m.d.' text,  but not the fingering instruction "2".
 @lilypond[verbatim,singleline]
 #(define (make-text-checker text)
-   (lambda (grob) (equal? text (ly-get-grob-property grob 'text))))
+   (lambda (grob) (equal? text (ly:get-grob-property grob 'text))))
 
 \score {    
   \notes\relative c''' {
@@ -4472,6 +4566,8 @@ example of those is in @file{input/test/cue-notes.ly}.
 @cindex cue notes
 @cindex font size
 @cindex size
+@cindex symbol size
+@cindex glyph size
 
 The font used for printing a object can be selected by setting
 @code{font-name}, e.g.
@@ -4561,87 +4657,170 @@ family, and the style sheet can not be modified easiyl.
 @cindex text markup
 @cindex markup text
 
-LilyPond has an internal mechanism to typeset texts. You can
-form text markup expressions by composing scheme expressions
-in the following way.
-
-@lilypond[verbatim, singleline]
- \relative c' {
-    \fatText
-    a^#"upright"
-    b_#'(bold "bold")
-    c^#'(italic "italic")
-    d_#'((bold italic) "ff")
-    e^#'(dynamic "ff")
-    f_#'(lines "one" (bold "two"))
-    g^#'(music "noteheads-2" ((raise . 2.4) "flags-u3"))
-  }
+
+@cindex typeset text
+
+LilyPond has an internal mechanism to typeset texts. You can access it
+with the keyword @code{\markup}. Within markup mode, you can enter texts
+similar to lyrics: simply enter them, surrounded by spaces. 
+@cindex markup
+
+@lilypond[verbatim,fragment,relative=1]
+ c1^\markup { hello }
+ c1_\markup { hi there }
+ c1^\markup { hi \bold there, is \italic anyone home? }
 @end lilypond
 
-Normally, the Scheme markup text is stored in the @code{text} property
-of a object.  Formally, it is defined as follows:
+@cindex font switching
 
+The line of the example demonstrates font switching commands. Notice
+that the command only apply to the first following word; enclose a set
+of texts with braces to apply a command to more words.
 @example
-text: string | (head? text+)
-head: markup | (markup+)
-markup-item: property | abbrev
-property: (@var{key} . @var{value})
-abbrev: @code{columns lines roman music bold italic named super sub}
-        @code{overstrike text finger volta timesig mmrest mark script}
-        @code{large Large dynamic}
+  \markup @{ \bold @{ hi there @} @}
 @end example
+For clarity, you can also do this for single arguments, e.g.
+@example
+  \markup @{ is \italic @{ anyone @} home @}
+@end example
+
+@cindex font size, texts
+
 
-The markup is broken down and converted into a list of object properties,
-which are prepended to the property list.  The @var{key}-@var{value}
-pair is a object property. A list of properties available is included in
-the generated documentation for @internalsref{text-interface}.
+The following size commands set abolute sizes
+
+@cindex \teeny
+@cindex \tiny
+@cindex \small
+@cindex \large
+@cindex \huge
 
-The following abbreviations are defined:
 @table @code
-@item columns
- horizontal mode: set all text on one line (default)
-@item lines
- vertical mode: set every text on a new line
-@item roman
- select roman font
-@item music
- selects the Feta font (the standard font for music notation glyphs),
-and uses named lookup
-
-@item bold
- select bold series
-@item italic
- select italic shape
-@item named
- lookup by character name
-@item text
- plain text lookup (by character value)
-@item super
- superscript
-@item sub
- subscript
-@item overstrike
- the next text or character overstrikes this one
-@item finger
- select fingering number fontstyle
-@item volta
- select volta number fontstyle
-@item timesig
- select time signature number fontstyle
-@item mmrest
- select multi measure rest number fontstyle
-@item mark
- select mark number fontstyle
-@item script
- select scriptsize roman fontstyle
-@item large
- select large roman fontstyle
-@item Large
- select Large roman fontstyle
-@item dynamic
- select dynamics fontstyle
+@item \teeny
+@item \tiny
+@item \small
+@item \large
+@item \huge
+@end table
+
+You can also make letter larger or smaller relative to their neighbors,
+with the commands @code{\larger} and @code{\smaller}.
+@cindex smaller
+@cindex larger
+
+@cindex font style, for texts
+@cindex \bold
+@cindex \dynamic
+@cindex \number
+@cindex \italic
+
+The following font change commands are defined:
+@table @code
+@item \dynamic
+This changes to the font used for dynamic signs. Note that this font
+doesn't contain all characters of the alphabet.
+@item \number
+This changes to the font used for time signatures. It only contains
+numbers and a few punctuation marks.
+@item \italic
+@item \bold
+@end table
+
+@cindex raising text
+@cindex lowering text
+@cindex moving text
+@cindex translating text
+
+@cindex \sub
+@cindex \super
+
+Raising and lowering texts can be done with @code{\super} and
+@code{\sub}.
+
+@lilypond[verbatim,fragment,relative=1]
+ c1^\markup { E "=" mc \super "2" }
+@end lilypond
+
+@cindex \raise
+
+If you want to give an explicit amount for lowering or raising, use
+@code{\raise}.  This command takes a Scheme valued argument,
+@lilypond[verbatim,fragment,relative=1]
+ c1^\markup { C \small \raise #1.0 { "9/7+" }}
+@end lilypond
+The argument to @code{\raise} is the vertical displacement amount,
+measured in (global) staff spaces.
+
+Other commands taking  single arguments include
+@table @code
+
+@item \musicglyph
+@cindex \musicglyph
+  This is converted to a musical symbol, e.g. @code{\musicglyph
+#"accidentals-0"} will select the natural sign from the music font.
+See @ref{The Feta font} for  a complete listing of the possible glyphs.
+@item \char
+This produces a single character, e.g. @code{\char #65} produces the 
+letter 'A'.
+
+@item \hspace #@var{amount}
+@cindex \hspace
+This produces a invisible object taking horizontal space.
+@example 
+\markup @{ A \hspace #2.0 B @} 
+@end example
+will put extra space between A and B. Note that lilypond 
+inserts space before and after @code{\hspace}. 
+
+@item \fontsize #@var{size}
+@cindex \fontsize
+This sets the relative font size, eg.
+@example
+A \fontsize #2 @{ B C @} D
+@end example
+
+This will enlarge the B and the C by two steps.
+@item  \translate #(cons @var{x} @var{y})
+@cindex  \translate
+This translates an object. It's first argument is a cons of numbers
+@example
+A \translate #(cons 2 -3) @{ B C @} D
+@end example
+This moves `B C' 2 spaces to the right, and 3 down.
+
+@item \magnify  #@var{mag}
+@cindex \magnify
+This sets the font magnification for the its argument. In the following
+example, the middle A will be 10% larger.
+@example
+A \magnify #1.1 @{ A @} A
+@end example
+
+
+@item \override #(@var{key} . @var{value})
+@cindex \override
+This overrides a  formatting property for its argument. The argument
+should be a key/value pair, e.g.
+@example
+m \override #'(font-family . math) m m
+@end example
 @end table
 
+In markup mode you can compose expressions, similar to mathematical
+expressions, XML documents and music expressions.  The braces group
+notes into horizontal lines. Other types of lists also exist: you can
+stack expressions grouped with @code{<<}, and @code{>>} vertically with
+the command @code{\column}.
+
+@lilypond[verbatim,fragment,relative=1]
+ c1^\markup { \column << a b c >> }
+ c1^\markup { \line << a b c >> }
+@end lilypond
+
+The markup mechanism is very flexible and extensible.  Refer to
+@file{scm/new-markup.scm} for more information on extending the markup
+mode.
+
 
 @cindex metronome mark
 
@@ -4649,36 +4828,29 @@ One practical application of complicated markup is to fake a metronome
 marking:
 
 @lilypond[verbatim]
-#(define note '(columns
-  (music "noteheads-2" ((kern . -0.1) "flags-stem"))))
-#(define eight-note `(columns ,note ((kern . -0.1)
-  (music ((raise . 3.5) "flags-u3")))))
-#(define dotted-eight-note
-  `(columns ,eight-note (music "dots-dot")))
+eigthStem = \markup \combine
+       \musicglyph #"flags-stem"
+       \translate #'(0.0 . 3.5) \musicglyph #"flags-u3"
+eighthNote = \markup
+       \override #'(word-space . 0.0)
+       { \musicglyph #"noteheads-2"
+         \translate #'(-0.05 . 0.1) \eigthStem }
 
 \score {
   \notes\relative c'' {
-    a1^#`((columns (font-relative-size . -1))
-           ,dotted-eight-note " = 64")
-  }
-  \paper {
-    linewidth = -1.
-    \translator{
-      \ScoreContext
-      TextScript \override #'font-shape = #'upright
-    }
+    a1^\markup { \magnify #0.9 \eighthNote " = 64" }
   }
 }
 @end lilypond
 
 @refbugs
 
-The syntax and semantics of markup texts are not clean, and both
-syntax and semantics are slated for a rewrite.
+@cindex kerning
 
-LilyPond does not do kerning, and there generally spaces texts
-slightly too wide.
+LilyPond does not account for kerning in its text formatting, so it
+spaces texts slightly too wide.
 
+Syntax errors for markup mode are confusing.
 
 
 @node Global layout
@@ -4715,6 +4887,8 @@ are chosen whenever the page gets full.
 @cindex distance between staves
 @cindex staff distance
 @cindex between staves, distance
+@cindex staffs per page
+
 
 The height of each system is determined automatically by lilypond, to
 keep systems from bumping into each other, some minimum distances are
@@ -4851,9 +5025,9 @@ kneed stems.
 
 @lilypond
 \score {
-     \context PianoStaff \notes \transpose c''' <
+     \context PianoStaff \notes \transpose c c'' <
      \context Staff = up { s1 }
-     \context Staff = down { [c8 c \translator Staff=up <c d> c 
+     \context Staff = down { [c8 c \translator Staff=up <<c d>> c 
 \translator Staff=down c c c] }
      >
      \paper { linewidth = -1 }
@@ -4930,10 +5104,10 @@ This makes the following 28 measures (assuming 4/4 time) be broken every
 @cindex @code{indent}
 @cindex @code{linewidth}
 
-The most basic settings influencing the spacing are @code{linewidth}
-and @code{indent}, both set in the @code{\paper} block.  They control
-the indentation of the first line of music, and the lengths of the
-lines.  If @code{linewidth} set to a negative value, a single
+The most basic settings influencing the spacing are @code{indent} and
+@code{linewidth}. They are set in the @code{\paper} block. They
+control the indentation of the first line of music, and the lengths of
+the lines.  If @code{linewidth} set to a negative value, a single
 unjustified line is produced.  A similar effect for scores that are
 longer than one line, can be produced by setting @code{raggedright} to
 true in the @code{\paper} block.