]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/user/refman.itely
release: 1.5.29
[lilypond.git] / Documentation / user / refman.itely
index d2fb4cf5c0d561d39edf521b8662a6ab9559648c..9bc3526865c9c9cb0a6f61af4a761f9c85d8358e 100644 (file)
@@ -5,18 +5,44 @@
 @c     M-x texinfo-all-menus-update
 @c to automagically fill in these menus before saving changes
 
+@c FIXME: singular vs. plural:  Beams/Beam
+
 
 @macro refbugs
 @strong{BUGS}
 
 @end macro
 
+@ifhtml
+@macro internalsref{NAME}
+@uref{../lilypond-internals/\NAME\.html,\NAME\}
+@cindex \NAME\
+@end macro
+@macro seeinternals{NAME}
+See @internalsref{\NAME\}
+@end macro
+@end ifhtml
+
+
+@ifnothtml
+@macro seeinternals{NAME}
+@end macro
+@macro internalsref{NAME}
+\NAME\
+@cindex \NAME\
+
+@end macro
+@end ifnothtml
 
 @c .{Reference Manual}
 
 @node Reference Manual
 @chapter Reference Manual
 
+@html
+<!--- @@WEB-TITLE@@=Reference Manual --->
+@end html
+
 This document describes GNU LilyPond and its input format. The last
 revision of this document was made for LilyPond 1.4.1.  It supposes a
 passing familiarity with how LilyPond input works. New users are
@@ -99,6 +125,7 @@ These threemanship of tasks (parsing, translating, typesetting) and
 data-structures (music, context, graphical objects) permeates the entire
 design of the program.
 
+@c FIXME: Note entry vs Music entry at top level menu is confusing.
 @c . {Note entry}
 @node Note entry
 @section Note entry
@@ -148,6 +175,8 @@ question mark `@code{?}' after the pitch.
   cis' d' e' cis'  c'? d' e' c'!
 @end lilypond
 
+The grob for a note head is called @internalsref{NoteHead}.
+
 
 @c .  {Pitches}
 @node Pitches
@@ -216,26 +245,58 @@ octave; each @code{,} lowers the pitch by an octave.
 @subsection Rests
 @cindex Rests
 
-Rests are entered like notes, with note name `@code{r}'. The grob is
-@code{Rest}. Whole bar rests centered in the bar are specified using
-@code{R}, see @ref{Multi measure rests}.
+A rest is entered like a note, with note name `@code{r}':
+
+@lilypond[singleline,verbatim]
+r1 r2 r4 r8
+@end lilypond
+
+The grob is @internalsref{Rest}. Whole bar rests centered in the bar are
+specified using @code{R}, see @ref{Multi measure rests}.
 
 
 @c .  {Skips}
+@c FIXME: naming.
 @node Skips
 @subsection Skips
 @cindex Skip
+@cindex Invisible rest
+@cindex Space note
 
+An invisible rest, or skip, can be entered like a note with note name
+`@code{s}':
 
-@example
-  \skip @var{duration} 
-  s@var{duration}
-@end example
-@cindex @code{\skip}
+@lilypond[singleline,verbatim]
+a2 s4 a4 s1 a4
+@end lilypond
+
+Actually, this is a shorthand for the @code{\skip} command, and it is
+only available in Note mode and Chord mode.
+
+@c FIXME: in lyrics mode, we have " " and _
+
+In Lyrics mode, you can use `@code{" "}' and `@code{_}':
+@lilypond[singleline,verbatim]
+<
+  \context Lyrics \lyrics { lah2 di4 " " dah2 _4 di }
+  \notes\relative c'' { a2 a4 a a2 a4 a }
+>
+@end lilypond
+
+The unabbreviated `@code{\skip} @var{duration}' also works outside of
+note mode:
+
+@lilypond[singleline,verbatim]
+\score {
+  \context Staff <
+    { \time 4/8 \skip 2 \time 4/4 } 
+    \notes\relative c'' { a2 a1 }
+  >
+}
+@end lilypond
+
+Note that the skip does not produce any output, not even transparent output.
 
-Skips the amount of time specified by @var{duration}.  If no other music
-is played, a gap will be left for the skipped time without any notes
-printed.  The shorthand is only available in Note and Chord mode.
 
 @c .  {Durations}
 @node Durations
@@ -268,7 +329,7 @@ r1 r2 r4 r8 r16 r32 r64 r64
 @lilypond[]
 \score {
   \notes \relative c'' {
-        a\breve  \autoBeamOff
+    a\breve  \autoBeamOff
     a1 a2 a4 a8 a16 a32 a64 a64 
     r\longa r\breve  
     r1 r2 r4 r8 r16 r32 r64 r64 
@@ -348,7 +409,8 @@ exactly the same concept.
 \time 3/4 c'2. c'2 ~ c'4
 @end lilypond
 
-The name of the tie grob is  @code{Voice.Tie}.
+The name of the tie grob is @internalsref{Tie}, and it is created in the
+@internalsref{Voice} context.
 
 @refbugs
 
@@ -420,7 +482,8 @@ The typesetting of brackets and numbers is controlled by the properties
 @cindex @code{tupletNumberFormatFunction}
 @cindex tuplet formatting 
 
-Tuplet brackets are printed as @code{TupletBracket} grobs
+Tuplet brackets are printed as @internalsref{TupletBracket} grobs, most
+often in the @internalsref{Voice} context.
 
 @c .  {Defining pitch names}
 @node Defining pitch names
@@ -456,12 +519,12 @@ Hal-Leonard Inc.  music publishers.
 @lilypond[singleline,verbatim]
 \include "paper23.ly"
 \score {
-        \notes { c'2 e'4 f' | g'1 }
-        \paper { \translator { \EasyNotation } } 
+  \notes { c'2 e'4 f' | g'1 }
+  \paper { \translator { \EasyNotation } } 
 }
 @end lilypond
 
-Note that @code{EasyNotation} overrides a @code{Score} context.  You
+Note that @internalsref{EasyNotation} overrides a @internalsref{Score} context.  You
 probably will want to print it with magnification to make it more
 readable, see @ref{Output scaling}.
 
@@ -520,9 +583,10 @@ The standard mode names @code{\ionian},
 
 This command sets the context property @code{Staff.keySignature}. 
 Non-standard key signatures can be specified by setting this property
-directly, see the generated documentation for @rgrob{KeySignature}.
+directly.
 
-The printed signature is a @code{KeySignature} grob.
+The printed signature is a @internalsref{KeySignature} grob, typically
+created in @internalsref{Staff} context.
 
 @cindex @code{keySignature}
 
@@ -545,7 +609,8 @@ Shortcut for
   \property Staff.clefOctavation = @var{extra transposition of clefname}
 @end example
 
-Any change in these properties creates a clef (a @code{Clef} grob).
+
+Any change in these properties creates a clef (A @internalsref{Clef} grob).
 
 Supported clef-names include 
 
@@ -576,7 +641,12 @@ G clef on 2nd line
 @end table
 
 By adding @code{_8} or @code{^8} to the clef name, the clef is
-transposed one octave down or up, respectively.
+transposed one octave down or up, respectively.  Note that you have to
+enclose @var{clefname} in quotes if you use underscores or digits in the
+name. For example,
+@example
+       \clef "G_8"
+@end example 
 
 Supported associated glyphs (for @code{Staff.clefGlyph}) are:
 
@@ -651,7 +721,7 @@ should be inserted, and how automatic beams should be
 generated.
 
 Changing the value of @code{timeSignatureFraction} also causes a
-fraction to be printed. This grob is @code{TimeSignature}.
+fraction to be printed. This grob is @internalsref{TimeSignature}.
 
 The actual symbol that's printed can be customized with the style
 property.
@@ -769,7 +839,7 @@ a measure it is set to @code{defaultBarType}. The contents of
 @code{\bar  }.  These settings take precedence over the automatic
 @code{whichBar} settings. 
 
-@code{BarLine} grobs are created by the @code{Bar_engraver}.
+@internalsref{BarLine} grobs are created by the @code{Bar_engraver}.
 
 @c .   {Polyphony}
 @node Polyphony
@@ -789,7 +859,7 @@ When there are more than two voices on a staff, you must also indicate
 which voice should moved horizontally in case of a collision. This can
 be done with the identifiers @code{\shiftOff}, @code{\shiftOn},
 @code{\shiftOnn}, etc. (which sets the grob property @code{horizontal-shift}
-in @code{NoteColumn}).
+in @internalsref{NoteColumn}).
 
 @lilypond[fragment, verbatim]
   \context Staff \notes\relative c''<
@@ -843,11 +913,9 @@ LilyPond also vertically shifts rests that are opposite of a stem.
 @end lilypond
 
 Note head collisions (horizontal shifting of note heads) are handled by
-the @code{NoteCollision} grob. @code{RestCollision} handles vertical
+the @internalsref{NoteCollision} grob. @internalsref{RestCollision} handles vertical
 shifting of rests.
 
-@cindex @code{NoteCollision}
-@cindex @code{RestCollision}
 
 
 @refbugs
@@ -994,12 +1062,12 @@ property, it's value will be used only once, and then it is erased.
 @end lilypond
 @cindex @code{stemRightBeamCount}
 
-The beam symbol (grob @code{Voice.Beam}, both for automatic and manual
-beams) can be tweaked through grob-properties @code{height} and
-@code{staff-position}. These specify vertical location and vertical
-span. Both are measured in half staff-spaces, @code{staff-position=0}
-corresponds to the middle staff line.
-
+The beam symbol (grob @internalsref{Beam} in @internalsref{Voice}
+context), both for automatic and manual beams) can be tweaked through
+grob-properties @code{height} and @code{staff-position}. These specify
+vertical location and vertical span. Both are measured in half
+staff-spaces, @code{staff-position=0} corresponds to the middle staff
+line.
 
 Set @code{height} to zero, to get horizontal beams:
 
@@ -1017,7 +1085,9 @@ horizontal, falls two staff spaces:
   \property Voice.Beam \set #'height = #-4
   [c8 c] 
 @end lilypond
-@cindex @code{default-neutral-direction}
+
+@c TODO -> why this ref? Document? 
+@cindex @code{neutral-direction}
 
 @node Expressive marks
 @section Expressive marks
@@ -1046,8 +1116,9 @@ They are entered using parentheses:
 Slurs avoid crossing stems, and are generally attached to note heads.
 However, in some situations with beams, slurs may be attached to stem
 ends.  If you want to override this layout you can do this through the
-@code{Voice.Slur}'s grob-property @code{attachment}. It's value is a
-pair of symbols, specifying the attachment type of the left and right end points.
+grob-property @code{attachment} of @internalsref{Slur} in
+@internalsref{Voice} context It's value is a pair of symbols, specifying
+the attachment type of the left and right end points.
 
 @lilypond[fragment,relative,verbatim]
   \property Voice.Slur \set #'direction = #1
@@ -1073,7 +1144,7 @@ stems might look better:
 Similarly, the curvature of a slur is adjusted to stay clear of note
 heads and stems.  When that would increase the curvature too much, the
 slur is reverted to its default shape.  The threshold for this decision
-is in @code{Voice.Slur}'s grob-property @code{beautiful}.  It is loosely
+is in @internalsref{Slur}'s grob-property @code{beautiful}.  It is loosely
 related to the enclosed area between the slur and the notes.  Usually,
 the default setting works well, but in some cases you may prefer a
 curved slur when LilyPond decides for a vertically moved one.  You can
@@ -1110,13 +1181,14 @@ respectively.
 @end lilypond
 
 Typographically, the phrasing slur behaves almost exactly like a normal
-slur. The grob associated with it is @code{Voice.PhrasingSlur}.
+slur. The grob associated with it is @internalsref{PhrasingSlur}, in
+@internalsref{Voice} context.
 
 @node Breath marks
 @subsection Breath marks
 
 Breath marks are entered using @code{\breathe}.  The result is a
-@code{Voice.BreathingSign} grob.
+@internalsref{BreathingSign} grob in @internalsref{Voice} context.
 
 @lilypond[fragment,relative]
 c'4 \breathe d4
@@ -1167,9 +1239,9 @@ is as follows:
 \spanrequest \start "text"
 \spanrequest \stop "text"
 @end example
-LilyPond will respond by creating a @code{Voice.TextSpanner} grob.  The
-string to be printed, as well as the style is set through grob
-properties.
+LilyPond will respond by creating a @internalsref{TextSpanner} grob (typically
+in @internalsref{Voice} context).  The string to be printed, as well as the
+style is set through grob properties.
 
 An application---or rather, a hack---is to fake octavation indications.
 @lilypond[fragment,relative,verbatim]
@@ -1224,7 +1296,8 @@ underneath.
         c''-\rtoe        c''-\turn         c''-\open          c''-\flageolet
         c''-\reverseturn c''-\trill        c''-\prall         c''-\mordent
         c''-\prallprall  c''-\prallmordent c''-\upprall       c''-\downprall
-        c''-\thumb       c''-\segno        c''-\coda
+        c''-\upmordent   c''-\downmordent  c''-\pralldown     c''-\prallup
+        c''-\lineprall   c''-\thumb        c''-\segno         c''-\coda
       }
       \context Lyrics \lyrics {
         accent__      marcato__      staccatissimo__ fermata
@@ -1233,7 +1306,8 @@ underneath.
         rtoe__        turn__         open__          flageolet
         reverseturn__ trill__        prall__         mordent
         prallprall__  prallmordent__ uprall__        downprall
-        thumb__       segno__        coda
+        upmordent__   downmordent__  pralldown__  prallup__
+        lineprall__   thumb__       segno__        coda
       }
     >
     \paper {
@@ -1283,7 +1357,7 @@ accesses a script definition from the table:
 Usually the @code{\script} keyword is not used directly.  Various
 helpful identifier definitions appear in @file{script.ly}.
 
-Grobs for these objects are @code{Script} and @code{Fingering}.
+Grobs for these objects are @internalsref{Script} and @internalsref{Fingering}.
 
 @refbugs
 
@@ -1312,7 +1386,8 @@ includes.
 \relative c' { c4^"longtext" \fatText c4_"longlongtext" c4 }
 @end lilypond
 
-Text scripts are created in form of @code{Voice.TextScript} grobs.
+Text scripts are created in form of @internalsref{TextScript} grobs, in
+@internalsref{Voice} context.
 
 @ref{Text markup} describes how to change the font or access
 special symbols in text scripts.
@@ -1340,10 +1415,6 @@ The syntax is as follows.
   \grace @var{musicexpr}
 @end example
 
-When grace music is interpreted, a score-within-a-score is set up:
-@var{musicexpr} has its own time bookkeeping, and you could (for
-example) have a separate time signature within the grace notes.  While in
-this score-within-a-score, you can create notes, beams, slurs, etc.
 Unbeamed eighth notes and shorter by default have a slash through the
 stem.
 
@@ -1358,17 +1429,14 @@ stem.
 }
 @end lilypond
 
-
 A grace note expression has duration 0; the next real note is assumed to
 be the main note. If you want the note to appear after the main note,
 set @code{Voice.graceAlignPosition} to @code{1}.
 
 @refbugs
 
-At present, slurs or ties from the grace notes to the following notes
-are not supported. Also, nesting @code{\grace} notes is not
-supported. The following may cause run-time errors:
-@example
+Nesting @code{\grace} notes is not supported. The following may cause
+run-time errors: @example
   @code{\grace @{ \grace c32 c16 @} c4}
 @end example
 Since the meaning of such a construct is unclear, we don't consider this
@@ -1377,10 +1445,6 @@ syntactically valid, but makes no sense and may cause runtime errors.
 Ending a staff or score with grace notes may also generate a run-time
 error, since there will be no main note to attach the grace notes to.
 
-The present implementation of grace notes is not robust and generally
-kludgey. We expect it to change after LilyPond 1.4. Syntax changes might
-also be implemented.
-
 @menu
 * Glissando ::                  
 * Dynamics::                    
@@ -1395,8 +1459,8 @@ also be implemented.
 
 @cindex @code{\glissando}
 
-A glissando line (grob @code{Voice.Glissando}) can be requested by attaching a
-@code{\glissando} to a note:
+A glissando line (grob @internalsref{Glissando}) can be requested by
+attaching a @code{\glissando} to a notte:
 
 @lilypond[fragment,relative,verbatim]
   c'-\glissando c'
@@ -1488,9 +1552,9 @@ For everyday use, we recommend the identifiers @code{\cresc},
 
 @cindex diminuendo
 
-Dynamics are grobs of @code{Voice.DynamicText} and
-@code{Voice.Hairpin}. They are put together on
-@code{Voice.DynamicLineSpanner} to align them vertically.
+Dynamics are grobs of @internalsref{DynamicText} and
+@internalsref{Hairpin}. They are put together on
+@internalsref{DynamicLineSpanner} to align them vertically.
 
 
 @c .  {Repeats}
@@ -1591,6 +1655,13 @@ the specified number of repeats.
 }
 @end lilypond
 
+@subsection Unfolding repeats for MIDI output.
+
+@cindex expanding repeats
+
+See @file{input/test/unfold-all-repeats.ly}. 
+
+
 @refbugs
 
 Notice that timing information is not remembered at the start of an
@@ -1606,7 +1677,7 @@ Folded repeats offer little more over simultaneous music.  However, it
 is to be expected that more functionality -- especially for the MIDI
 backend -- will be implemented at some point in the future.
 
-Volta repeats are printed over all staffs in a score. You must turn them
+Volta repeats are printed over all staves in a score. You must turn them
 off explicitly, for example by doing
 @example
   \property Staff.VoltaBracket = \turnOff
@@ -1642,7 +1713,7 @@ command can be
 @end lilypond
 
 
-Repeats brackets are @code{Staff.VoltaBracket} grobs.
+Repeats brackets are @internalsref{VoltaBracket} grobs.
 
 @node Tremolo repeats
 @subsection Tremolo repeats
@@ -1661,8 +1732,8 @@ style.
 }
 @end lilypond
 
-Tremolo beams are @code{Voice.Beam} grobs. Single stem tremolos are
-@code{Voice.StemTremolo}.
+Tremolo beams are @internalsref{Beam} grobs. Single stem tremolos are
+@internalsref{StemTremolo}.
 
 @refbugs
 
@@ -1708,8 +1779,8 @@ patterns that divide the measure length are replaced by slashes.
 }
 @end lilypond
 
-The signs are represented by these grobs: @code{Voice.RepeatSlash} and
-@code{Voice.PercentRepeat} and @code{Voice.DoublePercentRepeat}.
+The signs are represented by these grobs: @internalsref{RepeatSlash} and
+@internalsref{PercentRepeat} and @internalsref{DoublePercentRepeat}.
 
 @refbugs
 
@@ -1721,11 +1792,11 @@ with slashes, and repeating that measure with percents.
 
 
 @menu
-* Rhythmic staffs::             
+* Rhythmic staves::             
 @end menu
 
-@node Rhythmic staffs
-@subsection Rhythmic staffs
+@node Rhythmic staves
+@subsection Rhythmic staves
 
 Sometimes you might want to show only the rhythm of a melody.  This can
 be done with the rhythmic staff. All pitches of notes on such a staff
@@ -1743,11 +1814,11 @@ are squashed, and the  staff itself  looks has  a single staff line:
 @node Piano music
 @section Piano music
 
-Piano music is an odd type of notation. Piano staffs are two normal
-staffs coupled with a brace.  The staffs are largely independent, but
-sometimes voices can cross between the two staffs.  The
-@code{PianoStaff} is especially built to handle this cross-staffing
-behavior.  In this section we discuss the @code{PianoStaff} and some
+Piano music is an odd type of notation. Piano staves are two normal
+staves coupled with a brace.  The staves are largely independent, but
+sometimes voices can cross between the two staves.  The
+@internalsref{PianoStaff} is especially built to handle this cross-staffing
+behavior.  In this section we discuss the @internalsref{PianoStaff} and some
 other pianistic peculiarities.
 
 @menu
@@ -1771,7 +1842,7 @@ staff. The syntax for this is
 @end example
 This will switch the interpretation context of @var{musicexp} between a
 @var{contexttype} named @code{up} and @code{down}. Typically, you use
-@code{Staff} for @var{contexttype}.  The autochanger switches on basis
+@internalsref{Staff} for @var{contexttype}.  The autochanger switches on basis
 of pitch (central C is the turning point), and it looks ahead skipping
 over rests to switch rests in advance.
         
@@ -1796,7 +1867,7 @@ terminating too soon.
 @cindex manual staff switches
 @cindex staff switch, manual
 
-Voices can be switched between staffs manually, using the following command:
+Voices can be switched between staves manually, using the following command:
 @example
   \translator Staff = @var{staffname} @var{music}
 @end example
@@ -1827,7 +1898,7 @@ Piano pedal instruction can be expressed using
 @code{\treCorde}, @code{\sostenutoDown} and @code{\sostenutoUp}.
 
 These identifiers are shorthands for spanner commands of the types
-@code{Sustain}, @code{UnaCorda} and @code{Sostenuto}:
+@internalsref{Sustain}, @internalsref{UnaCorda} and @internalsref{Sostenuto}:
 
 @lilypond[fragment,verbatim]
 c''4 \spanrequest \start "Sustain" c''4
@@ -1862,8 +1933,8 @@ You can specify an arpeggio sign on a chord by attaching an
   \context Voice <c\arpeggio e g c>
 @end lilypond
 
-When an arpeggio crosses staffs in piano music, you attach an arpeggio
-to the chords in both staffs, and set
+When an arpeggio crosses staves in piano music, you attach an arpeggio
+to the chords in both staves, and set
 @code{PianoStaff.connectArpeggios}.
 
 @lilypond[fragment,relative,verbatim]
@@ -1874,8 +1945,36 @@ to the chords in both staffs, and set
   >  
 @end lilypond
 
-This command creates @code{Voice.Arpeggio} grobs.  Cross staff arpeggios
-are @code{PianoStaff.Arpeggio}.
+This command creates @internalsref{Arpeggio} grobs.  Cross staff arpeggios
+are @code{PianoStaff.Arpeggio}. @internalsref{Arpeggio}
+
+To add an arrow head to explicitly specify the direction of the
+arpeggio, you should set the arpeggio grob property
+@code{arpeggio-type}.
+
+@lilypond[fragment,relative,verbatim]
+  \context Voice {
+     \property Voice.Arpeggio \override #'arpeggio-direction = #1
+     <c\arpeggio e g c>
+     \property Voice.Arpeggio \override #'arpeggio-direction = #-1
+     <c\arpeggio e g c>
+  }
+@end lilypond
+
+@ignore
+A square bracket on the left indicates that the player should not
+arpeggiate the chord.
+
+@lil ypond[fragment,relative,verbatim]
+  \context PianoStaff <
+    \property PianoStaff.connectArpeggios = ##t
+    \property PianoStaff.Arpeggio \override #'arpeggio-direction = #'bracket
+    \context Voice = one  { <c'\arpeggio e g c> }
+    \context Voice = other { \clef bass  <c,,\arpeggio e g>}
+  >  
+@ e nd lilypond
+@end ignore
+
 
 @refbugs
 
@@ -1909,7 +2008,7 @@ can be printed automatically. This is enabled if the property
   >  
 @end lilypond
 
-The associated grob is @code{Voice.VoiceFollower}.
+The associated grob is @internalsref{VoiceFollower}.
 
 
 @node Lyrics
@@ -1958,26 +2057,28 @@ definition}.
 @subsection Printing lyrics
 @cindex lyrics
 
-Lyrics are printed by interpreting them in the @code{Lyrics}  context.
+Lyrics are printed by interpreting them in the @internalsref{Lyrics}  context.
 
 @c Maybe more pedagogical to avoid \addlyrics in this first example? /MB
-
+@c Add tied and beamed melismata too.
 @lilypond[verbatim,singleline]
-\addlyrics \notes \relative c' {
-        \time 7/4
-        \property Staff.automaticMelismata = ##t
-        d'2 c4 b16 ( a g a b a b ) c a2
-        b2 c4 b8 ( a16 g ) a4 g2 }
-    \context Lyrics \lyrics { 
-       Join us now __ and
-       share the soft -- ware; }
+\addlyrics
+  \notes \relative c' {
+    \time 7/4
+    \property Staff.automaticMelismata = ##t
+    d'2 c4 b16 ( a g a b a b ) c a2
+    b2 c4 b8 ( a16 g ) a4 g2 }
+  \context Lyrics \lyrics { 
+    Join us now __ and
+    share the soft -- ware; }
 @end lilypond
 
 
 Notes and syllable durations are matched automatically. This is
 accomplished using @code{\addlyrics}, which is documented in
 @ref{Automatic syllable durations}. Setting @code{automaticMelismata} in
-the melody staff will cause slurs to be interpreted as melismata.
+the melody staff will cause tied, slurred or beamed notes to be
+interpreted as melismata.
 
 The Lyric syllables are @code{LyricsVoice.LyricSyllable} grobs.
 
@@ -2263,10 +2364,8 @@ adds a fourth, but also removes the third.
 @cindex printing chord names
 @cindex chord names
 @cindex chords
-@cindex @code{ChordNames}
-
 
-For displaying printed chord names, use the @code{ChordNames} context.
+For displaying printed chord names, use the @internalsref{ChordNames} context.
 The chords may be entered either using the notation described above, or
 directly using simultaneous music.
 
@@ -2374,7 +2473,7 @@ problems in orchestral music.
 * Sound output for transposing instruments::  
 * Multi measure rests::         
 * Automatic part combining::    
-* Hara kiri staffs::            
+* Hara kiri staves::            
 @end menu
 
 @c .   {Rehearsal marks}
@@ -2383,7 +2482,7 @@ problems in orchestral music.
 @cindex Rehearsal marks
 @cindex mark
 @cindex @code{\mark}
-@cindex @code{Mark_engraver}
+
 
 @example
   \mark @var{unsigned}
@@ -2407,14 +2506,26 @@ automatically incremented.
 }
 @end lilypond
 
-The grob is @code{Score.RehearsalMark}. See
+The grob is @internalsref{RehearsalMark} in @internalsref{Score} context. See
 @code{input/test/boxed-molecule.ly} if you need boxes around the marks.
 
 @node Bar numbers
 @subsection Bar numbers
 
-Bar numbers (grob: @code{BarNumber}) are printed at the start of the
-line. See @code{input/test/boxed-molecule.ly} for boxed bar numbers.
+
+@cindex bar numbers
+@cindex measure numbers
+@cindex currentBarNumber
+
+Bar numbers are @internalsref{BarNumber} grobs.  They are printed at the
+start of the line.  The number itself is a property that can be set by
+modifying the @code{currentBarNumber} property, i.e.
+@example
+  \property Score.currentBarNumber = #217
+@end example
+
+If you want boxed bar numbers, see the example file
+@code{input/test/boxed-molecule.ly}.
 
 @refbugs
 
@@ -2529,6 +2640,8 @@ measure.
 
 @cindex whole rests for a full measure 
 
+The grob for this object is @internalsref{MultiMeasureRest}.
+
 @refbugs
 
 Currently, there is no way to automatically condense multiple rests into
@@ -2626,8 +2739,8 @@ measure.
 @cindex @code{Voice_engraver}
 @cindex @code{A2_engraver}
 
-@node Hara kiri staffs
-@subsection Hara kiri staffs
+@node Hara kiri staves
+@subsection Hara kiri staves
 
 In orchestral scores, staff lines that only have rests are usually removed.
 This saves some space.  LilyPond also supports this through the hara
@@ -2637,10 +2750,10 @@ it finds itself to be empty after the line-breaking process.  It will
 not disappear when it contains normal rests, you must use multi measure
 rests.
 
-The hara kiri staff is specialized version of the Staff context. It is
-available as the context identifier @code{\HaraKiriStaffContext}.
-Observe how the second staff in this example disappears in the second
-line.
+The hara kiri staff is specialized version of the @internalsref{Staff}
+context. It is available as the context identifier
+@code{\HaraKiriStaffContext}.  Observe how the second staff in this
+example disappears in the second line.
 
 @lilypond[verbatim]
 \score  {
@@ -2690,7 +2803,7 @@ such as via the @emph{editio vaticana} dating back to the beginning of
 the 20th century.
 
 For typesetting custodes, just put a @code{Custos_engraver} into the
-@code{StaffContext} when declaring the @code{\paper} block.  In this
+@internalsref{Staff} context when declaring the @code{\paper} block.  In this
 block, you can also globally control the appearance of the custos symbol
 by setting the custos @code{style} property.  Currently supported styles
 are @code{vaticana}, @code{medicaea}, @code{hufnagel} and
@@ -2782,7 +2895,7 @@ mechanism.
 The definition of a grob is actually a list of default grob
 properties. For example, the definition of the Stem grob (available in
 @file{scm/grob-description.scm}), defines the following values for
-@code{Stem}
+@internalsref{Stem}
 
 @example
         (thickness . 0.8)
@@ -3762,7 +3875,7 @@ number.
 
 
 
-
+@c FIXME: Note entry vs Music entry at top level menu is confusing.
 @c . {Music entry}
 @node Music entry
 @section Music entry
@@ -3864,6 +3977,18 @@ A bar check is entered using the bar symbol, @code{|}:
   \time 3/4 c2 e4 | g2.
 @end example
 
+
+
+@cindex skipTypesetting
+
+Failed bar checks are most often caused by entering incorrect
+durations. Incorrect durations often completely garble up the score,
+especially if it is polyphonic, so you should start correcting the score
+by scanning for failed bar checks and incorrect durations.  To speed up
+this process, you can use @code{skipTypesetting} (See @ref{Skipping
+corrected music})). Bar
+
+
 @c .  {Point and click}
 @node Point and click
 @subsection Point and click
@@ -3943,6 +4068,9 @@ following line
 #(set! point-and-click line-column-location)
 @end example
 
+One final hint: if you correct large files with point-and-click, then
+start correcting at the end of the file. When you start at the top, and
+insert one line, all subsequent locations will be off by a line.
 
 
 @refbugs
@@ -3951,11 +4079,6 @@ When you convert the @TeX{} file to PostScript using @code{dvips}, it
 will complain about not finding @code{src:X:Y} files. Those complaints
 are harmless, and can be ignored.
 
-When using @code{line-column-location}, the cursor will be one off; it
-will not jump to the exact note that you clicked, but to the next one.
-
-[FIXME]
-
 @node Skipping corrected music
 @section Skipping corrected music
 
@@ -4004,10 +4127,10 @@ like
        the measure, etc.?
 @end itemize
 
-Contexts are grouped hierarchically: A @code{Voice} context is
-contained in a @code{Staff} context (because a staff can contain
-multiple voices at any point), a @code{Staff} context is contained in
-@code{Score}, @code{StaffGroup}, or @code{ChoirStaff} context.
+Contexts are grouped hierarchically: A @internalsref{Voice} context is
+contained in a @internalsref{Staff} context (because a staff can contain
+multiple voices at any point), a @internalsref{Staff} context is contained in
+@internalsref{Score}, @internalsref{StaffGroup}, or @internalsref{ChoirStaff} context.
 
 Contexts associated with sheet music output are called @emph{notation
 contexts}, those for sound output are called @emph{performance
@@ -4094,6 +4217,10 @@ This is a convenient mechanism, but do not expect opening chords to work
 without @code{\context}. For every note, a separate staff is
 instantiated.
 
+@cindex explicit context
+@cindex starting with chords
+@cindex chords, starting with
+
 @lilypond[verbatim, singleline]
 \score { \notes <c'4 es'> } 
 @end lilypond
@@ -4123,8 +4250,8 @@ specified Scheme expression @var{value}.  All @var{propname} and
 
 Properties that are set in one context are inherited by all of the
 contained contexts.  This means that a property valid for the
-@code{Voice} context can be set in the @code{Score} context (for
-example) and thus take effect in all @code{Voice} contexts.
+@internalsref{Voice} context can be set in the @internalsref{Score} context (for
+example) and thus take effect in all @internalsref{Voice} contexts.
 
 Properties can be unset using the following expression:
 @example
@@ -4283,8 +4410,8 @@ completeness, but is never used in practice.
  
   
   @item  @code{\name} @var{contextname} 
-    This sets the type name of the context, e.g. @code{Staff},
-    @code{Voice}.  If the name is not specified, the translator won't do
+    This sets the type name of the context, e.g. @internalsref{Staff},
+    @internalsref{Voice}.  If the name is not specified, the translator won't do
     anything. 
 @end itemize