]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/notation/notation-appendices.itely
Run update-with-convert-ly
[lilypond.git] / Documentation / notation / notation-appendices.itely
index b5552bb4851f77ab699ca0f840684a066aa0e48c..c2927539abdcb5eff1ebf9a1c5dc50206a579946 100644 (file)
@@ -4,35 +4,19 @@
     Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
 
     When revising a translation, copy the HEAD committish of the
     Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
 
     When revising a translation, copy the HEAD committish of the
-    version that you are working on.  See TRANSLATION for details.
+    version that you are working on.  For details, see the Contributors'
+    Guide, node Updating translation committishes..
 @end ignore
 
 @end ignore
 
-@c \version "2.12.0"
+@c \version "2.15.17"
 
 @node Notation manual tables
 @appendix Notation manual tables
 
 
 @node Notation manual tables
 @appendix Notation manual tables
 
-@c Please do not delete the following @ignore block.
-@ignore
-Note for editors and translators: In the following menu, two entries
-are needed to link to a pair of automatically generated sections.
-Please keep them and, if using emacs, do not run
-texinfo-all-menus-update without manually restoring them back. These
-menu entries are:
-
-* Text markup commands::
-* Text markup list commands::
-
-and they should go just after
-* Note head styles::
-
-and just before
-* List of articulations::
-@end ignore
-
 @menu
 * Chord name chart::
 * Common chord modifiers::
 @menu
 * Chord name chart::
 * Common chord modifiers::
+* Predefined string tunings::
 * Predefined fretboard diagrams::
 * MIDI instruments::
 * List of colors::
 * Predefined fretboard diagrams::
 * MIDI instruments::
 * List of colors::
@@ -40,12 +24,15 @@ and just before
 * Note head styles::
 * Text markup commands::
 * Text markup list commands::
 * Note head styles::
 * Text markup commands::
 * Text markup list commands::
+* List of special characters::
 * List of articulations::
 * Percussion notes::
 * Technical glossary::
 * All context properties::
 * Layout properties::
 * List of articulations::
 * Percussion notes::
 * Technical glossary::
 * All context properties::
 * Layout properties::
-* Identifiers::
+* Available music functions::
+* Context modification identifiers::
+* Predefined type predicates::
 * Scheme functions::
 @end menu
 
 * Scheme functions::
 @end menu
 
@@ -212,11 +199,11 @@ Minor-major seventh
 @tab
 Minor triad, major seventh
 @tab
 @tab
 Minor triad, major seventh
 @tab
-@code{maj7.5-}
+@code{m7+}
 @tab
 @lilypond[line-width=3\cm,noragged-right, notime]
 \chordmode {
 @tab
 @lilypond[line-width=3\cm,noragged-right, notime]
 \chordmode {
-  c1:maj7.5-
+  c1:m7+
 }
 @end lilypond
 
 }
 @end lilypond
 
@@ -402,21 +389,65 @@ Perfect fourth, perfect fifth
 }
 @end lilypond
 
 }
 @end lilypond
 
+@item
+Power chord (two-voiced)
+@tab
+Perfect fifth
+@tab
+@code{1.5}
+@tab
+@lilypond[line-width=3\cm,noragged-right, notime]
+\chordmode {
+  \powerChords
+  c1:1.5
+}
+@end lilypond
+
+@item
+Power chord (three-voiced)
+@tab
+Perfect fifth, octave
+@tab
+@code{1.5.8}
+@tab
+@lilypond[line-width=3\cm,noragged-right, notime]
+\chordmode {
+  \powerChords
+  c1:1.5.8
+}
+@end lilypond
 
 @end multitable
 
 
 @end multitable
 
+@node Predefined string tunings
+@appendixsec Predefined string tunings
+
+The chart below shows the predefined string tunings.
+
+@lilypondfile{display-predefined-string-tunings.ly}
+
 @node Predefined fretboard diagrams
 @appendixsec Predefined fretboard diagrams
 
 @node Predefined fretboard diagrams
 @appendixsec Predefined fretboard diagrams
 
-The chart below shows the predefined fretboard diagrams.
+The chart below shows the predefined fretboard diagrams for guitar.
 
 @lilypondfile{display-predefined-fretboards.ly}
 
 
 @lilypondfile{display-predefined-fretboards.ly}
 
+The chart below shows the predefined fretboard diagrams for ukulele.
+
+@lilypondfile{display-predefined-ukulele-fretboards.ly}
+
+The chart below shows the predefined fretboard diagrams for mandolin.
+
+@lilypondfile{display-predefined-mandolin-fretboards.ly}
+
 @node MIDI instruments
 @appendixsec MIDI instruments
 
 The following is a list of names that can be used for the
 @node MIDI instruments
 @appendixsec MIDI instruments
 
 The following is a list of names that can be used for the
-@code{midiInstrument} property.
+@code{midiInstrument} property.  The order of the instruments
+below, starting in the left-hand column moving down, corresponds
+to the General MIDI Standard's 128 Program Numbers.
 
 @example
 acoustic grand            contrabass           lead 7 (fifths)
 
 @example
 acoustic grand            contrabass           lead 7 (fifths)
@@ -573,8 +604,11 @@ Where N is in the range 0-100.
 @cindex Font, Feta
 
 The following symbols are available in the Emmentaler font and may be
 @cindex Font, Feta
 
 The following symbols are available in the Emmentaler font and may be
-accessed directly using text markup such as @code{g^\markup @{
-\musicglyph #"scripts.segno" @}}, see @ref{Formatting text}.
+accessed directly using text markup with the name of the glyph
+as shown in the tables below,
+such as @code{g^\markup @{\musicglyph #"scripts.segno" @}} or
+@code{\markup @{\musicglyph #"five"@}}.  For more information,
+see @ref{Formatting text}.
 
 
 @menu
 
 
 @menu
@@ -594,6 +628,7 @@ accessed directly using text markup such as @code{g^\markup @{
 * Bracket-tip glyphs::
 * Pedal glyphs::
 * Accordion glyphs::
 * Bracket-tip glyphs::
 * Pedal glyphs::
 * Accordion glyphs::
+* Tie glyphs::
 * Vaticana glyphs::
 * Medicaea glyphs::
 * Hufnagel glyphs::
 * Vaticana glyphs::
 * Medicaea glyphs::
 * Hufnagel glyphs::
@@ -609,8 +644,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #clefs
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #clefs
 @end lilypond
 
 
 @end lilypond
 
 
@@ -619,8 +654,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #timesig
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #timesig
 @end lilypond
 
 
 @end lilypond
 
 
@@ -629,8 +664,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #numbers
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #numbers
 @end lilypond
 
 
 @end lilypond
 
 
@@ -639,8 +674,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #accidentals
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #accidentals
 @end lilypond
 
 
 @end lilypond
 
 
@@ -649,8 +684,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #default-noteheads
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #default-noteheads
 @end lilypond
 
 
 @end lilypond
 
 
@@ -659,8 +694,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #special-noteheads
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #special-noteheads
 @end lilypond
 
 
 @end lilypond
 
 
@@ -669,8 +704,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #shape-note-noteheads
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #shape-note-noteheads
 @end lilypond
 
 
 @end lilypond
 
 
@@ -679,8 +714,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #rests
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #rests
 @end lilypond
 
 
 @end lilypond
 
 
@@ -689,8 +724,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #flags
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #flags
 @end lilypond
 
 
 @end lilypond
 
 
@@ -699,8 +734,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #dots
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #dots
 @end lilypond
 
 
 @end lilypond
 
 
@@ -709,8 +744,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #dynamics
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #dynamics
 @end lilypond
 
 
 @end lilypond
 
 
@@ -719,8 +754,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #scripts
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #scripts
 @end lilypond
 
 
 @end lilypond
 
 
@@ -729,8 +764,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #arrowheads
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #arrowheads
 @end lilypond
 
 
 @end lilypond
 
 
@@ -739,8 +774,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #brackettips
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #brackettips
 @end lilypond
 
 
 @end lilypond
 
 
@@ -749,8 +784,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #pedal
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #pedal
 @end lilypond
 
 
 @end lilypond
 
 
@@ -759,8 +794,18 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #accordion
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #accordion
+@end lilypond
+
+
+@node Tie glyphs
+@unnumberedsubsec Tie glyphs
+
+@lilypond[quote]
+\include "font-table.ly"
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #ties
 @end lilypond
 
 
 @end lilypond
 
 
@@ -769,8 +814,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #vaticana
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #vaticana
 @end lilypond
 
 
 @end lilypond
 
 
@@ -779,8 +824,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #medicaea
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #medicaea
 @end lilypond
 
 
 @end lilypond
 
 
@@ -789,8 +834,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #hufnagel
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #hufnagel
 @end lilypond
 
 
 @end lilypond
 
 
@@ -799,8 +844,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #mensural
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #mensural
 @end lilypond
 
 
 @end lilypond
 
 
@@ -809,8 +854,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #neomensural
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #neomensural
 @end lilypond
 
 
 @end lilypond
 
 
@@ -819,8 +864,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #petrucci
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #petrucci
 @end lilypond
 
 
 @end lilypond
 
 
@@ -829,8 +874,8 @@ accessed directly using text markup such as @code{g^\markup @{
 
 @lilypond[quote]
 \include "font-table.ly"
 
 @lilypond[quote]
 \include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
-             \doc-chars #solesmes
+\markuplist \override-lines #'(word-space . 4)
+            \doc-chars #solesmes
 @end lilypond
 
 
 @end lilypond
 
 
@@ -842,45 +887,160 @@ The following styles may be used for note heads.
 
 @lilypondfile[noindent]{note-head-style.ly}
 
 
 @lilypondfile[noindent]{note-head-style.ly}
 
+
+@node Text markup commands
+@appendixsec Text markup commands
+
 @include markup-commands.tely
 
 @include markup-commands.tely
 
+
+@node Text markup list commands
+@appendixsec Text markup list commands
+
+The following commands can all be used with @code{\markuplist}:
+
 @include markup-list-commands.tely
 
 @include markup-list-commands.tely
 
+
+@node List of special characters
+@appendixsec List of special characters
+
+The following special characters references can be used;
+for more details, see @ref{ASCII aliases}.
+
+The HTML syntax is used and most of these references are the same as HTML.
+The rest of them are inspired by @LaTeX{}.
+
+The characters are boxed so that you can see their size.
+A small padding has been added between the character and the box
+for more readability.
+
+@lilypond[quote]
+\include "special-characters.ly"
+@end lilypond
+
+
 @node List of articulations
 @appendixsec List of articulations
 
 @node List of articulations
 @appendixsec List of articulations
 
+
 @cindex accent
 @cindex accent
-@cindex marcato
-@cindex staccatissimo
+@cindex accentus
+@cindex circulus
+@cindex coda
+@cindex downbow
+@cindex downmordent
+@cindex downprall
 @cindex espressivo
 @cindex fermata
 @cindex espressivo
 @cindex fermata
-@cindex stopped
-@cindex staccato
-@cindex portato
-@cindex tenuto
-@cindex upbow
-@cindex downbow
-@cindex foot marks
-@cindex organ pedal marks
-@cindex turn
-@cindex open
-@cindex stopped
 @cindex flageolet
 @cindex flageolet
-@cindex reverseturn
-@cindex trill
-@cindex prall
+@cindex halfopen
+@cindex ictus
+@cindex lheel
+@cindex lineprall
+@cindex longfermata
+@cindex ltoe
+@cindex marcato
 @cindex mordent
 @cindex mordent
-@cindex prallprall
+@cindex open
+@cindex portato
+@cindex prall
+@cindex pralldown
 @cindex prallmordent
 @cindex prallmordent
-@cindex prall, up
-@cindex prall, down
-@cindex thumb marking
+@cindex prallprall
+@cindex prallup
+@cindex reverseturn
+@cindex rheel
+@cindex rtoe
 @cindex segno
 @cindex segno
-@cindex coda
+@cindex semicirculus
+@cindex shortfermata
+@cindex signumcongruentiae
+@cindex snappizzicato
+@cindex staccatissimo
+@cindex staccato
+@cindex stopped
+@cindex tenuto
+@cindex thumb
+@cindex trill
+@cindex turn
+@cindex upbow
+@cindex upmordent
+@cindex upprall
 @cindex varcoda
 @cindex varcoda
+@cindex verylongfermata
+
+The following scripts are available in the Feta font and may be
+attached to notes (eg. @samp{c\accent}).
+
+@c Articulations and ornamentations
+@c Fingering instructions (for "thumb")
+@c Common notation for unfretted strings
+@c   Bowing indications
+@c   Harmonics
+@c   Snap (Bartók) pizzicato
+@c Custom percussion staves (for "halfopen" -- not yet funindexed)
+@c References for wind instruments (for "open"/"stopped" -- not yet funindexed)
+
+
+@menu
+* Articulation scripts::
+* Ornament scripts::
+* Fermata scripts::
+* Instrument-specific scripts::
+* Repeat sign scripts::
+* Ancient scripts::
+@end menu
+
 
 
+@node Articulation scripts
+@unnumberedsubsec Articulation scripts
 
 
-@lilypondfile[quote,texidoc]{script-chart.ly}
+@lilypond[quote]
+\include "script-chart.ly"
+\new RhythmicStaff { \scriptStaff #articulations }
+@end lilypond
+
+@node Ornament scripts
+@unnumberedsubsec Ornament scripts
+
+@lilypond[quote]
+\include "script-chart.ly"
+\new RhythmicStaff { \scriptStaff #ornaments }
+@end lilypond
+
+@node Fermata scripts
+@unnumberedsubsec Fermata scripts
+
+@lilypond[quote]
+\include "script-chart.ly"
+\new RhythmicStaff { \scriptStaff #fermatas }
+@end lilypond
+
+@node Instrument-specific scripts
+@unnumberedsubsec Instrument-specific scripts
+
+@lilypond[quote]
+\include "script-chart.ly"
+\new RhythmicStaff { \scriptStaff #instrument-specific }
+@end lilypond
+
+@node Repeat sign scripts
+@unnumberedsubsec Repeat sign scripts
+
+@lilypond[quote]
+\include "script-chart.ly"
+\new RhythmicStaff { \scriptStaff #repeats }
+@end lilypond
+
+@node Ancient scripts
+@unnumberedsubsec Ancient scripts
+
+@lilypond[quote]
+\include "script-chart.ly"
+\include "gregorian.ly"
+\new VaticanaStaff { \scriptStaffAncient #ancient }
+@end lilypond
 
 
 @node Percussion notes
 
 
 @node Percussion notes
@@ -892,23 +1052,43 @@ The following styles may be used for note heads.
 @node Technical glossary
 @appendixsec Technical glossary
 
 @node Technical glossary
 @appendixsec Technical glossary
 
-A glossary of the technical terms and concepts used internally.
+A glossary of the technical terms and concepts used internally in
+LilyPond.  These terms may appear in the manuals, on mailing lists
+or in the source code.
 
 @menu
 
 @menu
+* alist::
 * callback::
 * callback::
+* closure::
 * glyph::
 * grob::
 * glyph::
 * grob::
+* immutable::
 * interface::
 * lexer::
 * interface::
 * lexer::
+* mutable::
 * output-def::
 * parser::
 * parser variable::
 * prob::
 * output-def::
 * parser::
 * parser variable::
 * prob::
-* simple-closure::
+* simple closure::
 * smob::
 * stencil::
 @end menu
 
 * smob::
 * stencil::
 @end menu
 
+@node alist
+@unnumberedsubsec alist
+
+@cindex alist
+@cindex association list
+
+An association list or @strong{alist} for short is a Scheme pair
+which associates a value with a key: @w{@code{(key . value)}}.  For
+example, in @file{scm/lily.scm}, the alist
+@w{@qq{type-p-name-alist}} associates certain type predicates
+(e.g.@tie{}@code{ly:music?}) with names (e.g.@tie{}@qq{music}) so
+that type-check failures can be reported with a console message that
+includes the name of the expected type predicate.
+
 @node callback
 @unnumberedsubsec callback
 
 @node callback
 @unnumberedsubsec callback
 
@@ -922,6 +1102,32 @@ layer.  Callbacks are used extensively in LilyPond to permit
 user-level Scheme code to define how many low-level actions are
 performed.
 
 user-level Scheme code to define how many low-level actions are
 performed.
 
+
+@node closure
+@unnumberedsubsec closure
+
+@cindex closure
+@cindex simple closure
+
+In Scheme, a @strong{closure} is created when a function, usually
+a lambda expression, is passed as a variable.  The closure contains
+the function's code plus references to the lexical bindings of the
+function's free variables (i.e. those variables used in the
+expression but defined outside it).  When this function is applied
+to different arguments later, the free variable bindings that were
+captured in the closure are used to obtain the values of the free
+variables to be used in the calculation.  One useful property of
+closures is the retention of internal variable values between
+invocations, so permitting state to be maintained.
+
+A @strong{simple closure} is a closure whose expression has no free
+variables and hence no free variable bindings.
+
+A simple closure is represented in LilyPond by a smob containing
+the expression and a method to apply the expression to a passed
+list of arguments.
+
+
 @node glyph
 @unnumberedsubsec glyph
 
 @node glyph
 @unnumberedsubsec glyph
 
@@ -938,7 +1144,7 @@ a set of fonts covering several styles and sizes comprise a typeface.
 @seealso
 Notation Reference:
 @ref{Fonts},
 @seealso
 Notation Reference:
 @ref{Fonts},
-@ref{Text encoding}.
+@ref{Special characters}.
 
 
 @node grob
 
 
 @node grob
@@ -951,8 +1157,8 @@ Notation Reference:
 LilyPond objects which represent items of notation in the printed
 output such as note heads, stems, slurs, ties, fingering, clefs,
 etc are called @q{Layout objects}, often known as @q{GRaphical
 LilyPond objects which represent items of notation in the printed
 output such as note heads, stems, slurs, ties, fingering, clefs,
 etc are called @q{Layout objects}, often known as @q{GRaphical
-OBjects}, or @strong{grobs} for short.
-
+OBjects}, or @strong{grobs} for short.  They are represented by
+instances of the @code{Grob} class.
 
 @seealso
 Learning Manual:
 
 @seealso
 Learning Manual:
@@ -961,9 +1167,30 @@ Learning Manual:
 @rlearning{Properties of layout objects}.
 
 Internals Reference:
 @rlearning{Properties of layout objects}.
 
 Internals Reference:
+@rinternals{grob-interface},
 @rinternals{All layout objects}.
 
 
 @rinternals{All layout objects}.
 
 
+@node immutable
+@unnumberedsubsec immutable
+
+@cindex immutable objects
+@cindex immutable properties
+@cindex shared properties
+
+An @strong{immutable} object is one whose state cannot be modified
+after creation, in contrast to a mutable object, which can be
+modified after creation.
+
+In LilyPond, immutable or shared properties define the default
+style and behavior of grobs.  They are shared between many objects.
+In apparent contradiction to the name, they can be changed using
+@code{\override} and @code{\revert}.
+
+@seealso
+Notation Reference:
+@ref{mutable}.
+
 @node interface
 @unnumberedsubsec interface
 
 @node interface
 @unnumberedsubsec interface
 
@@ -975,7 +1202,6 @@ Actions and properties which are common to a number of grobs are
 grouped together in an object called a @code{grob-interface}, or
 just @q{interface} for short.
 
 grouped together in an object called a @code{grob-interface}, or
 just @q{interface} for short.
 
-
 @seealso
 Learning Manual:
 @rlearning{Objects and interfaces},
 @seealso
 Learning Manual:
 @rlearning{Objects and interfaces},
@@ -993,12 +1219,36 @@ Internals Reference:
 @unnumberedsubsec lexer
 
 @cindex lexer
 @unnumberedsubsec lexer
 
 @cindex lexer
+@cindex Flex
 
 A @strong{lexer} is a program which converts a sequence of
 characters into a sequence of tokens, a process called lexical
 
 A @strong{lexer} is a program which converts a sequence of
 characters into a sequence of tokens, a process called lexical
-analysis.  The LilyPond lexer converts an input @code{.ly} file
-into a tokenized file more suited to the next stage of processing,
-parsing, see @ref{parser}.
+analysis.  The LilyPond lexer converts the stream obtained from an
+input @file{.ly} file into a tokenized stream more suited to the
+next stage of processing - parsing, for which see @ref{parser}.
+The LilyPond lexer is built with Flex from the lexer file
+@file{lily/lexer.ll} which contains the lexical rules.  This file
+is part of the source code and is not included in the LilyPond
+binary installation.
+
+
+@node mutable
+@unnumberedsubsec mutable
+
+@cindex mutable objects
+@cindex mutable properties
+
+A @strong{mutable} object is one whose state can be modified after
+creation, in contrast to an immutable object, whose state is fixed
+at the time of creation.
+
+In LilyPond, mutable properties contain values that are specific to
+one grob.  Typically, lists of other objects or results from
+computations are stored in mutable properties.
+
+@seealso
+Notation Reference:
+@ref{immutable}.
 
 @node output-def
 @unnumberedsubsec output-def
 
 @node output-def
 @unnumberedsubsec output-def
@@ -1009,23 +1259,54 @@ An instance of the @code{Output-def} class contains the methods and
 data structures associated with an output block.  Instances are
 created for midi, layout and paper blocks.
 
 data structures associated with an output block.  Instances are
 created for midi, layout and paper blocks.
 
+
 @node parser
 @unnumberedsubsec parser
 
 @cindex parser
 @node parser
 @unnumberedsubsec parser
 
 @cindex parser
+@cindex Bison
+@cindex grammar for LilyPond
+@cindex BNF
+
+A @strong{parser} analyzes the sequence of tokens produced by a
+lexer to determine its grammatical structure, grouping the tokens
+progressively into larger groupings according to the rules of the
+grammar.  If the sequence of tokens is valid the end product is a
+tree of tokens whose root is the grammar's start symbol.  If this
+cannot be achieved the file is invalid and an appropriate error
+message is produced.  The syntactic groupings and the rules for
+constructing the groupings from their parts for the LilyPond syntax
+are defined in @file{lily/parser.yy} and shown in Backus Normal Form
+(BNF) in @ref{LilyPond grammar}.  This file is used to build the
+parser during the program build by the parser generator, Bison.  It
+is part of the source code and is not included in the LilyPond
+binary installation.
 
 
-A @strong{parser} analyzes the sequence of tokens produced by
-a lexer to determine its grammatical structure as defined by the
-rules governing the format of an input file.
 
 @node parser variable
 @unnumberedsubsec parser variable
 
 
 @node parser variable
 @unnumberedsubsec parser variable
 
+@cindex parser variable
+@cindex Scheme variable
+@cindex global variable
+@cindex afterGraceFraction
+@cindex musicQuotes
+@cindex mode
+@cindex output-count
+@cindex output-suffix
+@cindex parseStringResult
+@cindex partCombineListener
+@cindex pitchnames
+@cindex toplevel-bookparts
+@cindex toplevel-scores
+@cindex showLastLength
+@cindex showFirstLength
+
 These are variables defined directly in Scheme.  Their direct
 use by users is strongly discouraged, because their scoping
 semantics can be confusing.
 
 These are variables defined directly in Scheme.  Their direct
 use by users is strongly discouraged, because their scoping
 semantics can be confusing.
 
-When the value of such a variable is changed in a @code{.ly} file,
+When the value of such a variable is changed in a @file{.ly} file,
 the change is global, and unless explicitly reverted, the new value
 will persist to the end of the file, affecting subsequent
 @code{\score} blocks as well as external files added with the
 the change is global, and unless explicitly reverted, the new value
 will persist to the end of the file, affecting subsequent
 @code{\score} blocks as well as external files added with the
@@ -1050,21 +1331,62 @@ LilyPond uses the following parser variables:
 @item showFirstLength
 @end itemize
 
 @item showFirstLength
 @end itemize
 
+
 @node prob
 @unnumberedsubsec prob
 @node prob
 @unnumberedsubsec prob
-TODO
 
 
-@node simple-closure
-@unnumberedsubsec simple-closure
-TODO
+@cindex prob
+@cindex property object
+
+PRoperty OBjects, or @strong{probs} for short, are instances of
+the @code{Prob} class, a simple base class for objects which have
+mutable and immutable property alists and the methods to manipulate
+them.  The @code{Music} and @code{Stream_event} classes derive from
+@code{Prob}.  Instances of the @code{Prob} class are also created
+to hold the formatted content of system grobs and titling blocks
+during page layout.
+
+
+@node simple closure
+@unnumberedsubsec simple closure
+
+See @ref{closure}.
+
 
 @node smob
 @unnumberedsubsec smob
 
 @node smob
 @unnumberedsubsec smob
-TODO
+
+@cindex smob
+@cindex Scheme object
+
+@strong{Smobs}, or ScheMe OBjects, are part of the mechanism used
+by Guile to export C and C++ objects to Scheme code.  In LilyPond,
+smobs are created from C++ objects through macros.  There are two
+types of smob objects: simple smobs, intended for simple immutable
+objects like numbers, and complex smobs, used for objects with
+identities.  If you have access to the LilyPond sources, more
+information can be found in @file{lily/includes/smob.hh}.
 
 @node stencil
 @unnumberedsubsec stencil
 
 @node stencil
 @unnumberedsubsec stencil
-TODO
+
+@cindex stencil
+
+An instance of the @strong{stencil} class holds the information
+required to print a typographical object.  It is a simple smob
+containing a confining box, which defines the vertical and
+horizontal extents of the object, and a Scheme expression which
+will print the object when evaluated.  Stencils may be combined
+to form more complex stencils defined by a tree of Scheme
+expressions formed from the Scheme expressions of the component
+stencils.
+
+The @code{stencil} property, which connects a grob to its stencil,
+is defined in the @code{grob-interface} interface.
+
+@seealso
+Internals Reference:
+@rinternals{grob-interface}.
 
 
 @node All context properties
 
 
 @node All context properties
@@ -1079,11 +1401,24 @@ TODO
 @include layout-properties.tely
 
 
 @include layout-properties.tely
 
 
-@node Identifiers
-@appendixsec Identifiers
+@node Available music functions
+@appendixsec Available music functions
 
 @include identifiers.tely
 
 
 @include identifiers.tely
 
+@node Context modification identifiers
+@appendixsec Context modification identifiers
+
+The following commands are defined for use as context modifications
+within a @code{\layout} or @code{\with} block.
+
+@include context-mod-identifiers.tely
+
+@node Predefined type predicates
+@appendixsec Predefined type predicates
+
+@include type-predicates.tely
+
 
 @node Scheme functions
 @appendixsec Scheme functions
 
 @node Scheme functions
 @appendixsec Scheme functions