]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/user/fundamental.itely
Imported Upstream version 2.14.2
[lilypond.git] / Documentation / user / fundamental.itely
diff --git a/Documentation/user/fundamental.itely b/Documentation/user/fundamental.itely
deleted file mode 100644 (file)
index 4c58135..0000000
+++ /dev/null
@@ -1,2905 +0,0 @@
-@c -*- coding: utf-8; mode: texinfo; -*-
-@c This file is part of lilypond-learning.tely
-@ignore
-    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.
-@end ignore
-
-@c \version "2.12.0"
-
-@node Fundamental concepts
-@chapter Fundamental concepts
-
-You've seen in the Tutorial how to produce beautifully printed
-music from a simple text file.  This section introduces the
-concepts and techniques required to produce equally beautiful
-but more complex scores.
-
-@menu
-* How LilyPond input files work::
-* Voices contain music::
-* Contexts and engravers::
-* Extending the templates::
-@end menu
-
-
-@node How LilyPond input files work
-@section How LilyPond input files work
-
-The LilyPond input format is quite free-form, giving experienced
-users a lot of flexibility to structure their files however they
-wish.  But this flexibility can make things confusing for new
-users.  This section will explain some of this structure, but may
-gloss over some details in favor of simplicity.  For a complete
-description of the input format, see @ruser{File structure}.
-
-@menu
-* Introduction to the LilyPond file structure::
-* Score is a (single) compound musical expression::
-* Nesting music expressions::
-* On the un-nestedness of brackets and ties::
-@end menu
-
-@node Introduction to the LilyPond file structure
-@subsection Introduction to the LilyPond file structure
-
-@cindex input format
-@cindex file structure
-
-A basic example of a LilyPond input file is
-
-@example
-\version @w{"@version{}"}
-\header @{ @}
-\score @{
-  @var{...compound music expression...}  % all the music goes here!
-  \layout @{ @}
-  \midi @{ @}
-@}
-@end example
-
-@noindent
-There are many variations of this basic pattern, but this
-example serves as a useful starting place.
-
-@funindex \book
-@funindex book
-@funindex \score
-@funindex score
-@cindex book
-@cindex score
-
-Up to this point none of the examples you have seen has used a
-@code{\score@{@}} command.  This is because LilyPond automatically
-adds the extra commands which are needed when you give it simple
-input.  LilyPond treats input like this:
-
-@example
-\relative c'' @{
-  c4 a d c
-@}
-@end example
-
-@noindent
-as shorthand for this:
-
-@example
-\book @{
-  \score @{
-    \new Staff @{
-      \new Voice @{
-        \relative c'' @{
-          c4 a b c
-        @}
-      @}
-    @}
-    \layout @{ @}
-  @}
-@}
-@end example
-
-In other words, if the input contains a single music expression,
-LilyPond will interpret the file as though the music expression
-was wrapped up inside the commands shown above.
-
-@cindex implicit contexts
-@cindex contexts, implicit
-
-@strong{A word of warning!}  Many of the examples in the LilyPond
-documentation will omit the @code{\new Staff} and @code{\new Voice}
-commands, leaving them to be created implicitly.  For simple
-examples this works well, but for more complex examples, especially
-when additional commands are used, the implicit creation of contexts
-can give surprising results, maybe creating extra unwanted staves.
-The way to create contexts explicitly is explained in
-@ref{Contexts and engravers}.
-
-@warning{When entering more than a few lines of music it is
-advisable to always create staves and voices explicitly.}
-
-For now, though, let us return to the first example and examine the
-@code{\score} command, leaving the others to default.
-
-A @code{\score} block must always contain just one music expression,
-and this must appear immediately after the @code{\score} command.
-Remember that a music expression could be anything from a single
-note to a huge compound expression like
-
-@example
-@{
-  \new StaffGroup <<
-    @var{...insert the whole score of a Wagner opera in here...}
-  >>
-@}
-@end example
-
-@noindent
-Since everything is inside @code{@{ ... @}}, it counts
-as one music expression.
-
-As we saw previously, the @code{\score} block can contain other
-things, such as
-
-@example
-\score @{
-  @{ c'4 a b c' @}
-  \header @{ @}
-  \layout @{ @}
-  \midi @{ @}
-@}
-@end example
-
-@funindex \header
-@funindex header
-@funindex \layout
-@funindex layout
-@funindex \midi
-@funindex midi
-@cindex header
-@cindex layout
-@cindex midi
-
-@noindent
-Note that these three commands -- @code{\header}, @code{\layout} and
-@code{\midi} -- are special: unlike many other commands which begin
-with a backward slash (@code{\}) they are @emph{not} music expressions
-and are not part of any music expression.  So they may be placed
-inside a @code{\score} block or outside it.  In fact, these commands
-are commonly placed outside the @code{\score} block -- for example,
-@code{\header} is often placed above the @code{\score} command, as the
-example at the beginning of this section shows.
-
-Two more commands you have not previously seen are
-@code{\layout @{ @}} and @code{\midi @{@}}.  If these appear as
-shown they will cause LilyPond to produce a printed output and a
-MIDI output respectively.  They are described fully in the
-Notation Reference -- @ruser{Score layout}, and
-@ruser{Creating MIDI files}.
-
-@cindex scores, multiple
-@cindex book block, implicit
-@cindex implicit book block
-@funindex \book
-@funindex book
-
-You may code multiple @code{\score} blocks.  Each will be
-treated as a separate score, but they will be all combined into
-a single output file.  A @code{\book} command is not necessary
--- one will be implicitly created.  However, if you would like
-separate output files from one @code{.ly} file then the
-@code{\book} command should be used to separate the different
-sections: each @code{\book} block will produce a
-separate output file.
-
-In summary:
-
-Every @code{\book} block creates a separate output file (e.g., a
-PDF file).  If you haven't explicitly added one, LilyPond wraps
-your entire input code in a @code{\book} block implicitly.
-
-Every @code{\score} block is a separate chunk of music within a
-@code{\book} block.
-
-@cindex layout block, effect of location
-
-Every @code{\layout} block affects the @code{\score} or
-@code{\book} block in which it appears -- i.e., a @code{\layout}
-block inside a @code{\score} block affects only that @code{\score}
-block, but a @code{\layout} block outside of a @code{\score} block
-(and thus in a @code{\book} block, either explicitly or
-implicitly) will affect every @code{\score} in that @code{\book}.
-
-For details see @ruser{Multiple scores in a book}.
-
-@cindex variables
-
-Another great shorthand is the ability to define variables.  All
-the templates use this
-
-@example
-melody = \relative c' @{
-  c4 a b c
-@}
-
-\score @{
-  \melody
-@}
-@end example
-
-When LilyPond looks at this file, it takes the value of
-@code{melody} (everything after the equals sign) and inserts it
-whenever it sees @code{\melody}.  There's nothing special about
-the names -- it could be @code{melody}, @code{global},
-@code{TimeKey},
-@code{pianorighthand}, or @code{foofoobarbaz}.  For more details,
-see @ref{Saving typing with variables and functions}.
-Remember that you can use almost any name you like as long
-as it contains just alphabetic characters and is distinct from
-LilyPond command names.  The exact
-limitations on variable names are detailed in
-@ruser{File structure}.
-
-
-@seealso
-For a complete definition of the input format, see
-@ruser{File structure}.
-
-
-@node Score is a (single) compound musical expression
-@subsection Score is a (single) compound musical expression
-
-@funindex \score
-@funindex score
-@cindex score
-@cindex contents of a score block
-@cindex score block, contents of
-@cindex compound music expression
-@cindex music expression, compound
-
-We saw the general organization of LilyPond input files in the
-previous section, @ref{Introduction to the LilyPond file structure}.
-But we seemed to skip over the most important part: how do we figure
-out what to write after @code{\score}?
-
-We didn't skip over it at all.  The big mystery is simply that
-there @emph{is} no mystery.  This line explains it all:
-
-@quotation
-@emph{A @code{\score} block must begin with a compound music expression.}
-@end quotation
-
-@noindent
-To understand what is meant by a music expression and a compound
-music expression, you may find it useful to review the tutorial,
-@ref{Music expressions explained}.  In that section, we saw how to
-build big music expressions from small pieces -- we started from
-notes, then chords, etc.  Now we're going to start from a big
-music expression and work our way down.
-
-@example
-\score @{
-  @{ % this brace begins the overall compound music expression
-    \new StaffGroup <<
-      @var{...insert the whole score of a Wagner opera in here...}
-    >>
-  @} % this brace ends the overall compound music expression
-  \layout @{ @}
-@}
-@end example
-
-A whole Wagner opera would easily double the length of this
-manual, so let's just add a singer and piano.  We don't need a
-@code{StaffGroup} for this ensemble, which simply groups a number
-of staves together with a bracket at the left, so we shall remove
-it.  We @emph{do} need a singer and a piano, though.
-
-@example
-\score @{
-  <<
-    \new Staff = "singer" <<
-    >>
-    \new PianoStaff = "piano" <<
-    >>
-  >>
-  \layout @{ @}
-@}
-@end example
-
-Remember that we use @code{<< ... >>} instead of @code{@{ ... @}} to
-show simultaneous music.  And we definitely want to show the vocal
-part and piano part at the same time, not one after the other!  Note
-that the @code{<< ... >>} construct is not really necessary for the
-Singer staff, as it contains only one sequential music expression;
-however, using @code{<< ... >>} instead of braces is still necessary
-if the music in the Staff is made of two simultaneous expressions,
-e.g. two simultaneous Voices, or a Voice with lyrics.  We'll add some
-real music later; for now let's just put in some dummy notes and
-lyrics.
-
-@lilypond[verbatim,quote,ragged-right]
-\score {
-  <<
-    \new Staff = "singer" <<
-      \new Voice = "vocal" { c'1 }
-      \addlyrics { And }
-    >>
-    \new PianoStaff = "piano" <<
-      \new Staff = "upper" { c'1 }
-      \new Staff = "lower" { c'1 }
-    >>
-  >>
-  \layout { }
-}
-@end lilypond
-
-Now we have a lot more details.  We have the singer's staff: it
-contains a @code{Voice} (in LilyPond, this term refers to a set of
-notes, not necessarily vocal notes -- for example, a violin
-generally plays one voice) and some lyrics.  We also have a piano
-staff: it contains an upper staff (right hand) and a lower staff
-(left hand).
-
-At this stage, we could start filling in notes.  Inside the curly
-braces next to @code{\new Voice = "vocal"}, we could start writing
-
-@example
-\relative c'' @{
-  r4 d8\noBeam g, c4 r
-@}
-@end example
-
-But if we did that, the @code{\score} section would get pretty
-long, and it would be harder to understand what was happening.  So
-let's use variables instead.  These were introduced at the end
-of the previous section, remember?  So, adding a few notes, we
-now have a piece of real music:
-
-@lilypond[verbatim,quote,ragged-right]
-melody = \relative c'' { r4 d8\noBeam g, c4 r }
-text   = \lyricmode { And God said, }
-upper  = \relative c'' { <g d g,>2~ <g d g,> }
-lower  = \relative c { b2 e2 }
-
-\score {
-  <<
-    \new Staff = "singer" <<
-      \new Voice = "vocal" { \melody }
-      \addlyrics { \text }
-    >>
-    \new PianoStaff = "piano" <<
-      \new Staff = "upper" { \upper }
-      \new Staff = "lower" {
-        \clef "bass"
-        \lower
-      }
-    >>
-  >>
-  \layout { }
-}
-@end lilypond
-
-
-Be careful about the difference between notes, which are introduced
-with @code{\relative} or which are directly included in a music
-expression, and lyrics, which are introduced with
-@code{\lyricmode}.  These are essential to tell LilyPond
-to interpret the following content as music and text
-respectively.
-
-When writing (or reading) a @code{\score} section, just take it
-slowly and carefully.  Start with the outer level, then work on
-each smaller level.  It also really helps to be strict with
-indentation -- make sure that each item on the same level starts
-on the same horizontal position in your text editor.
-
-
-@seealso
-Notation Reference: @ruser{Structure of a score}.
-
-
-@node Nesting music expressions
-@subsection Nesting music expressions
-
-@cindex staves, temporary
-@cindex temporary staves
-@cindex ossias
-
-It is not essential to declare all staves at the beginning; they may
-be introduced temporarily at any point.  This is particularly useful
-for creating ossia sections -- see @rglos{ossia}.  Here is a simple
-example showing how to introduce a new staff temporarily for the
-duration of three notes:
-
-@lilypond[verbatim,quote,ragged-right]
-\new Staff {
-  \relative g' {
-    r4 g8 g c4 c8 d |
-    e4 r8
-    <<
-      { f c c }
-      \new Staff {
-        f8 f c
-      }
-    >>
-    r4 |
-  }
-}
-@end lilypond
-
-@noindent
-Note that the size of the clef is the same as a clef printed
-following a clef change -- slightly smaller than the clef
-at the beginning of the line.  This is usual for clefs printed
-in the middle of a line.
-
-@cindex staff, positioning
-
-The ossia section may be placed above the staff
-as follows:
-
-@lilypond[verbatim,quote,ragged-right]
-\new Staff = "main" {
-  \relative g' {
-    r4 g8 g c4 c8 d |
-    e4 r8
-    <<
-      { f c c }
-      \new Staff \with {
-        alignAboveContext = #"main" }
-      { f8 f c }
-    >>
-    r4 |
-  }
-}
-@end lilypond
-
-This example uses @code{\with}, which will be explained more
-fully later.  It is a means of modifying the default behavior
-of a single Staff.  Here it says that the new staff should be
-placed above the staff called @qq{main} instead of the default
-position which is below.
-
-
-@seealso
-Ossia are often written without clef and without
-time signature and are usually in a smaller font.
-These require further commands which
-have not yet been introduced.  See @ref{Size of objects},
-and @ruser{Ossia staves}.
-
-
-@node On the un-nestedness of brackets and ties
-@subsection On the un-nestedness of brackets and ties
-
-@cindex brackets, nesting
-@cindex bracket types
-@cindex brackets, enclosing vs. marking
-
-You have already met a number of different types of bracket in
-writing the input file to LilyPond.  These obey different rules
-which can be confusing at first.  Before we explain the rules
-let's first review the different types of bracket.
-
-@c attempt to force this onto a new page
-@need 50
-@multitable @columnfractions .3 .7
-@headitem Bracket Type
-  @tab Function
-@item @code{@{ .. @}}
-  @tab Encloses a sequential segment of music
-@item @code{< .. >}
-  @tab Encloses the notes of a chord
-@item @code{<< .. >>}
-  @tab Encloses simultaneous music expressions
-@item @code{( .. )}
-  @tab Marks the start and end of a slur
-@item @code{\( .. \)}
-  @tab Marks the start and end of a phrasing slur
-@item @code{[ .. ]}
-  @tab Marks the start and end of a manual beam
-@end multitable
-
-To these we should add other constructs which generate lines
-between or across notes: ties (marked by a tilde, @code{~}),
-tuplets written as @code{\times x/y @{..@}}, and grace notes
-written as @code{\grace@{..@}}.
-
-Outside LilyPond, the conventional use of brackets requires the
-different types to be properly nested, like this, @code{<< [ @{ ( .. )
-@} ] >>}, with the closing brackets being encountered in exactly the
-opposite order to the opening brackets.  This @strong{is} a
-requirement for the three types of bracket described by the word
-@q{Encloses} in the table above -- they must nest properly.  However,
-the remaining brackets, described with the word @q{Marks} in the table
-above together with ties and tuplets, do @strong{not} have to nest
-properly with any of the brackets.  In fact, these are not brackets in
-the sense that they enclose something -- they are simply markers to
-indicate where something starts and ends.
-
-So, for example, a phrasing slur can start before a manually
-inserted beam and end before the end of the beam -- not very
-musical, perhaps, but possible:
-
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
- { g8\( a b[ c b\) a] }
-@end lilypond
-
-In general, different kinds of brackets, and those implied by
-tuplets, ties and grace notes, may be mixed freely.
-This example shows a beam extending into a tuplet (line 1),
-a slur extending into a tuplet (line 2),
-a beam and a slur extending into a tuplet, a tie crossing
-two tuplets, and a phrasing slur extending out of a tuplet
-(lines 3 and 4).
-
-@lilypond[quote,verbatim,fragment,ragged-right]
-{
-  r16[ g16 \times 2/3 {r16 e'8] }
-  g16( a \times 2/3 {b d) e' }
-  g8[( a \times 2/3 {b d') e'~]}
-  \times 4/5 {e'32\( a b d' e'} a'4.\)
-}
-@end lilypond
-
-
-@node Voices contain music
-@section Voices contain music
-
-Singers need voices to sing, and so does LilyPond.
-The actual music for all instruments in a score
-is contained in Voices -- the most fundamental
-of all LilyPond's concepts.
-
-@menu
-* I'm hearing Voices::
-* Explicitly instantiating voices::
-* Voices and vocals::
-@end menu
-
-@node I'm hearing Voices
-@subsection I'm hearing Voices
-
-@cindex polyphony
-@cindex layers
-@cindex multiple voices
-@cindex voices, multiple
-@cindex Voice context
-@cindex context, Voice
-@cindex simultaneous music
-@cindex music, simultaneous
-@cindex concurrent music
-@cindex music, concurrent
-@cindex voices vs. chords
-@cindex chords vs. voices
-
-The lowest, most fundamental or innermost layers in a LilyPond
-score are called @q{Voice contexts} or just @q{Voices} for short.
-Voices are sometimes called @q{layers} in other notation
-packages.
-
-In fact, a Voice layer or context is the only one which can contain
-music.  If a Voice context is not explicitly declared one is created
-automatically, as we saw at the beginning of this chapter.  Some
-instruments such as an Oboe can play only one note at a time.  Music
-written for such instruments is monophonic and requires just a single
-voice.  Instruments which can play more than one note at a time like
-the piano will often require multiple voices to encode the different
-concurrent notes and rhythms they are capable of playing.
-
-A single voice can contain many notes in a chord, of course,
-so when exactly are multiple voices needed?  Look first at
-this example of four chords:
-
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-\key g \major
-<d g>4 <d fis> <d a'> <d g>
-@end lilypond
-
-This can be expressed using just the single angle bracket chord
-symbols, @code{< ... >}, and for this just a single voice is
-needed.  But suppose the F-sharp were actually an eighth-note
-followed by an eighth-note G, a passing note on the way to the A?
-Now we have two notes which start at the same time but have
-different durations: the quarter-note D and the eighth-note
-F-sharp.  How are these to be coded?  They cannot be written as
-a chord because all the notes in a chord must have the same
-duration.  And they cannot be written as two sequential notes
-as they need to start at the same time.  This is when two
-voices are required.
-
-Let us see how this is done in LilyPond input syntax.
-
-@funindex << \\ >>
-@funindex \\
-
-The easiest way to enter fragments with more than one voice on a
-staff is to enter each voice as a sequence (with @code{@{...@}}),
-and combine them simultaneously with angle brackets, @code{<<...>>}.
-The fragments must also be separated with double backward slashes,
-@code{\\}, to place them in separate voices.  Without these, the
-notes would be entered into a single voice, which would usually
-cause errors.  This technique is particularly suited to pieces of
-music which are largely monophonic with occasional short sections
-of polyphony.
-
-Here's how we split the chords above into two voices and add both
-the passing note and a slur:
-
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
-\key g \major
-%    Voice "1"                  Voice "2"
-<< { g4 fis8( g) a4 g }    \\ { d4 d d d }  >> |
-@end lilypond
-
-Notice how the stems of the second voice now point down.
-
-Here's another simple example:
-
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
-\key d \minor
-%    Voice "1"             Voice "2"
-<< { r4 g g4. a8 }    \\ { d,2 d4 g }       >> |
-<< { bes4 bes c bes } \\ { g4 g g8( a) g4 } >> |
-<< { a2. r4 }         \\ { fis2. s4 }       >> |
-@end lilypond
-
-It is not necessary to use a separate @code{<< \\ >>} construct
-for each bar. For music with few notes in each bar this layout
-can help the legibility of the code, but if there are many
-notes in each bar it may be better to split out each voice
-separately, like this:
-
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
-\key d \minor
-<< {
-  % Voice "1"
-  r4 g g4. a8 |
-  bes4 bes c bes |
-  a2. r4 |
-} \\ {
-  % Voice "2"
-  d,2 d4 g |
-  g4 g g8( a) g4 |
-  fis2. s4 |
-} >>
-@end lilypond
-
-
-@cindex voices, naming
-@cindex voices crossing brackets
-@cindex slurs crossing brackets
-@cindex ties crossing brackest
-
-This example has just two voices, but the same construct may be
-used to encode three or more voices by adding more back-slash
-separators.
-
-The Voice contexts bear the names @code{"1"}, @code{"2"}, etc.
-In each of these contexts, the vertical direction of slurs,
-stems, ties, dynamics etc., is set appropriately.
-
-@lilypond[quote,verbatim,fragment]
-\new Staff \relative c' {
-  % Main voice
-  c16 d e f
-  %    Voice "1"     Voice "2"                 Voice "3"
-  << { g4 f e } \\ { r8 e4 d c8 ~ } >> |
-  << { d2 e2 }  \\ { c8 b16 a b8 g ~ g2 } \\ { s4 b4 c2 } >> |
-}
-@end lilypond
-
-These voices are all separate from the main voice that contains
-the notes just outside the @code{<< .. >>} construct.  Let's call
-this the @emph{simultaneous construct}.  Slurs and ties may only
-connect notes within the same voice, so slurs and ties cannot go
-into or out of a simultaneous construct.  Conversely,
-parallel voices from separate simultaneous constructs on the same
-staff are the same voice.  Other voice-related properties also
-carry across simultaneous constructs.  Here is the same example,
-with different colors and note heads for each voice.  Note that
-changes in one voice do not affect other voices, but they do
-persist in the same voice later.  Note also that tied notes may be
-split across the same voices in two constructs, shown here in the
-blue triangle voice.
-
-@lilypond[quote,verbatim]
-\new Staff \relative c' {
-  % Main voice
-  c16 d e f
-  << % Bar 1
-    {
-      \voiceOneStyle
-      g4 f e
-    }
-  \\
-    {
-      \voiceTwoStyle
-      r8 e4 d c8 ~
-    }
-  >>
-  << % Bar 2
-     % Voice 1 continues
-    { d2 e2 }
-  \\
-     % Voice 2 continues
-    { c8 b16 a b8 g ~ g2 }
-  \\
-    {
-      \voiceThreeStyle
-      s4 b4 c2
-    }
-  >>
-}
-@end lilypond
-
-@funindex \voiceOneStyle
-@funindex \voiceTwoStyle
-@funindex \voiceThreeStyle
-@funindex \voiceFourStyle
-@funindex \voiceNeutralStyle
-
-The commands @code{\voiceXXXStyle} are mainly intended for use in
-educational documents such as this one.  They modify the color
-of the note head, the stem and the beams, and the style of the
-note head, so that the voices may be easily distinguished.
-Voice one is set to red diamonds, voice two to blue triangles,
-voice three to green crossed circles, and voice four (not used
-here) to magenta crosses;  @code{\voiceNeutralStyle} (also not
-used here) reverts the style back to the default.
-We shall see later how commands like these may be created by the
-user.
-See @ref{Visibility and color of objects} and
-@ref{Using variables for tweaks}.
-
-@cindex polyphony and relative note entry
-@cindex relative note entry and polyphony
-
-Polyphony does not change the relationship of notes within a
-@code{\relative @{ @}} block.  Each note is still calculated
-relative to the note immediately preceding it, or to the first
-note of the preceding chord.  So in
-
-@example
-\relative c' @{ noteA << < noteB noteC > \\ noteD >> noteE @}
-@end example
-
-@noindent
-@code{noteB} is relative to @code{noteA}                      @*
-@code{noteC} is relative to @code{noteB}, not @code{noteA};   @*
-@code{noteD} is relative to @code{noteB}, not @code{noteA} or
-@code{noteC};                                                 @*
-@code{noteE} is relative to @code{noteD}, not @code{noteA}.
-
-An alternative way, which may be clearer if the notes in the
-voices are widely separated, is to place a @code{\relative}
-command at the start of each voice:
-
-@example
-\relative c' @{ noteA ... @}
-<<
-  \relative c'' @{ < noteB noteC > ... @}
-\\
-  \relative g' @{ noteD ... @}
->>
-\relative c' @{ noteE ... @}
-@end example
-
-Let us finally analyze the voices in a more complex piece of music.
-Here are the notes from the first two bars of the second of Chopin's
-Deux Nocturnes, Op 32.  This example will be used at later stages in
-this and the next chapter to illustrate several techniques for
-producing notation, so please ignore for now anything in the
-underlying code which looks mysterious and concentrate just on the
-music and the voices -- the complications will all be explained in
-later sections.
-
-@c The following should appear as music without code
-@lilypond[quote,ragged-right]
-\new Staff \relative c'' {
-  \key aes \major
-  << % Voice one
-    { c2 aes4. bes8 }
-  \\ % Voice two
-    { aes2 f4 fes }
-  \\ % No voice three
-  \\ % Voice four
-    {
-      % Ignore these for now - they are explained in Ch 4
-      \once \override NoteColumn #'force-hshift = #0
-      <ees c>2
-      \once \override NoteColumn #'force-hshift = #0.5
-      des2
-    }
-  >> |
-  <c ees aes c>1 |
-}
-@end lilypond
-
-The direction of the stems is often used to indicate the continuity of
-two simultaneous melodic lines.  Here the stems of the highest notes
-are all pointing up and the stems of the lower notes are all pointing
-down.  This is the first indication that more than one voice is
-required.
-
-But the real need for multiple voices arises when notes
-which start at the same time have different durations.
-Look at the notes which start at beat three in the first
-bar.  The A-flat is a dotted quarter note, the F is a
-quarter note and the D-flat is a half note.  These
-cannot be written as a chord as all the notes in a chord
-must have the same duration.  Neither can they be written
-as sequential notes, as they must start at the same time.
-This section of the bar requires three voices, and the
-normal practice would be to write the whole bar as three
-voices, as shown below, where we have used different note heads
-and colors for the three voices.  Again, the code behind this
-example will be explained later, so ignore anything you do
-not understand.
-
-@c The following should appear as music without code
-@c The three voice styles should be defined in -init
-@lilypond[quote,ragged-right]
-\new Staff \relative c'' {
-  \key aes \major
-  <<
-    { % Voice one
-      \voiceOneStyle
-      c2 aes4. bes8
-    }
-  \\  % Voice two
-    { \voiceTwoStyle
-      aes2 f4 fes
-    }
-  \\  % No Voice three (we want stems down)
-  \\  % Voice four
-    { \voiceThreeStyle
-      % Ignore these for now - they are explained in Ch 4
-      \once \override NoteColumn #'force-hshift = #0
-      <ees c>2
-      \once \override NoteColumn #'force-hshift = #0.5
-      des2
-    }
-  >> |
-  <c ees aes c>1 |
-}
-@end lilypond
-
-
-Let us try to encode this music from scratch.  As we
-shall see, this encounters some difficulties.  We begin as
-we have learnt, using the @code{<< \\  >>} construct to
-enter the music of the first bar in three voices:
-
-@lilypond[quote,verbatim,fragment,ragged-right]
-\new Staff \relative c'' {
-  \key aes \major
-  <<
-    { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { <ees c>2 des2 }
-  >>
-  <c ees aes c>1
-}
-@end lilypond
-
-@cindex stem down
-@cindex voices and stem directions
-@cindex stem directions and voices
-@cindex stem up
-
-The stem directions are automatically assigned with the
-odd-numbered voices taking upward stems and the even-numbered
-voices downward ones.  The stems for voices 1 and 2 are right,
-but the stems in voice 3 should go down in this particular piece
-of music.  We can correct this simply by missing out voice three
-and placing the music in voice four:
-
-@lilypond[quote,verbatim,fragment,ragged-right]
-\new Staff \relative c'' {
-  \key aes \major
-  << % Voice one
-    { c2 aes4. bes8 }
-  \\ % Voice two
-    { aes2 f4 fes   }
-  \\ % Omit Voice three
-  \\ % Voice four
-    { <ees c>2 des2 }
-  >> |
-  <c ees aes c>1 |
-}
-@end lilypond
-
-@noindent
-We see that this fixes the stem direction, but exposes a problem
-sometimes encountered with multiple voices -- the stems of the notes
-in one voice can collide with the note heads in other voices.  In
-laying out the notes, LilyPond allows the notes or chords from two
-voices to occupy the same vertical note column provided the stems are
-in opposite directions, but the notes from the third and fourth voices
-are displaced, if necessary, to avoid the note heads colliding.  This
-usually works well, but in this example the notes of the lowest voice
-are clearly not well placed by default. LilyPond provides several ways
-to adjust the horizontal placing of notes.  We are not quite ready yet
-to see how to correct this, so we shall leave this problem until a
-later section --- see the @code{force-hshift} property in @ref{Fixing
-overlapping notation}.
-
-
-@seealso
-Notation Reference: @ruser{Multiple voices}.
-
-
-@node Explicitly instantiating voices
-@subsection Explicitly instantiating voices
-
-@funindex \voiceOne
-@funindex voiceOne
-@funindex \voiceTwo
-@funindex voiceTwo
-@funindex \voiceThree
-@funindex voiceThree
-@funindex \voiceFour
-@funindex voiceFour
-@funindex \oneVoice
-@funindex oneVoice
-@funindex \new Voice
-@cindex voice contexts, creating
-
-Voice contexts can also be created manually
-inside a @code{<< >>} block to create polyphonic music, using
-@code{\voiceOne} ... @code{\voiceFour} to indicate the required
-directions of stems, slurs, etc.  In longer scores this method
-is clearer, as it permits the voices to be separated and to be
-given more descriptive names.
-
-Specifically, the construct @code{<< \\ >>} which we used in
-the previous section:
-
-@example
-\new Staff @{
-  \relative c' @{
-    << @{ e4 f g a @} \\ @{ c,4 d e f @} >>
-  @}
-@}
-@end example
-
-@noindent
-is equivalent to
-
-@example
-\new Staff <<
-  \new Voice = "1" @{ \voiceOne \relative c' @{ e4 f g a @} @}
-  \new Voice = "2" @{ \voiceTwo \relative c' @{ c4 d e f @} @}
->>
-@end example
-
-Both of the above would produce
-
-@c The following example should not display the code
-@lilypond[ragged-right,quote]
-\new Staff <<
-  \new Voice = "1" { \voiceOne \relative c' { e4 f g a } }
-  \new Voice = "2" { \voiceTwo \relative c' { c4 d e f } }
->>
-@end lilypond
-
-@cindex voices, reverting to single
-@cindex reverting to a single voice
-
-The @code{\voiceXXX} commands set the direction of stems, slurs,
-ties, articulations, text annotations, augmentation dots of dotted
-notes, and fingerings.  @code{\voiceOne} and @code{\voiceThree}
-make these objects point upwards, while @code{\voiceTwo} and
-@code{\voiceFour} make them point downwards.  These commands also
-generate a horizontal shift for each voice when this is required
-to avoid clashes of note heads.  The command @code{\oneVoice}
-reverts the settings back to the normal values for a single voice.
-
-Let us see in some simple examples exactly what effect
-@code{\oneVoice}, @code{\voiceOne} and @code{voiceTwo} have on
-markup, ties, slurs, and dynamics:
-
-@lilypond[quote,ragged-right,verbatim]
-\relative c'{
-  % Default behavior or behavior after \oneVoice
-  c d8 ~ d e4 ( f g a ) b-> c
-}
-@end lilypond
-
-@lilypond[quote,ragged-right,verbatim]
-\relative c'{
-  \voiceOne
-  c d8 ~ d e4 ( f g a ) b-> c
-  \oneVoice
-  c, d8 ~ d e4 ( f g a ) b-> c
-}
-@end lilypond
-
-@lilypond[quote,ragged-right,verbatim]
-\relative c'{
-  \voiceTwo
-  c d8 ~ d e4 ( f g a ) b-> c
-  \oneVoice
-  c, d8 ~ d e4 ( f g a ) b-> c
-}
-@end lilypond
-
-Now let's look at three different ways to notate the same passage
-of polyphonic music, each of which is advantageous in different
-circumstances, using the example from the previous section.
-
-An expression that appears directly inside a @code{<< >>} belongs
-to the main voice (but, note, @strong{not} in a @code{<< \\ >>}
-construct).  This is useful when extra voices appear while the
-main voice is playing.  Here is a more correct rendition of our
-example.  The red diamond-shaped notes
-demonstrate that the main melody is now in a single voice context,
-permitting a phrasing slur to be drawn over them.
-
-@lilypond[quote,ragged-right,verbatim]
-\new Staff \relative c' {
-  \voiceOneStyle
-  % The following notes are monophonic
-  c16^( d e f
-  % Start simultaneous section of three voices
-  <<
-    % Continue the main voice in parallel
-    { g4 f e | d2 e2) }
-    % Initiate second voice
-    \new Voice {
-      % Set stems, etc, down
-      \voiceTwo
-      r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2
-    }
-    % Initiate third voice
-    \new Voice {
-      % Set stems, etc, up
-      \voiceThree
-      s2. | s4 b4 c2
-    }
-  >>
-}
-@end lilypond
-
-@cindex nesting music expressions
-@cindex nesting simultaneous constructs
-@cindex nesting voices
-@cindex voices, temporary
-@cindex voices, nesting
-
-More deeply nested polyphony constructs are possible, and if a
-voice appears only briefly this might be a more natural way to
-typeset the music:
-
-@lilypond[quote,ragged-right,verbatim]
-\new Staff \relative c' {
-  c16^( d e f
-  <<
-    { g4 f e | d2 e2) }
-    \new Voice {
-      \voiceTwo
-      r8 e4 d c8 ~ |
-      <<
-        {c8 b16 a b8 g ~ g2}
-        \new Voice {
-          \voiceThree
-          s4 b4 c2
-        }
-      >>
-    }
-  >>
-}
-@end lilypond
-
-@cindex spacing notes
-
-This method of nesting new voices briefly is useful
-when only small sections of the music
-are polyphonic, but when the whole staff is largely polyphonic
-it can be clearer to use multiple voices throughout, using
-spacing notes to step over sections where the voice is silent,
-as here:
-
-@lilypond[quote,ragged-right,verbatim]
-\new Staff \relative c' <<
-  % Initiate first voice
-  \new Voice {
-    \voiceOne
-    c16^( d e f g4 f e | d2 e2) |
-  }
-  % Initiate second voice
-  \new Voice {
-    % Set stems, etc, down
-    \voiceTwo
-    s4 r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2 |
-  }
-  % Initiate third voice
-  \new Voice {
-    % Set stems, etc, up
-    \voiceThree
-    s1 | s4 b4 c2 |
-  }
->>
-@end lilypond
-
-@subsubheading Note columns
-
-@cindex note column
-@cindex note collisions
-@cindex collisions, notes
-@cindex shift commands
-@funindex \shiftOff
-@funindex shiftOff
-@funindex \shiftOn
-@funindex shiftOn
-@funindex \shiftOnn
-@funindex shiftOnn
-@funindex \shiftOnnn
-@funindex shiftOnnn
-
-Closely spaced notes in a chord, or notes occurring at the same
-time in different voices, are arranged in two, occasionally more,
-columns to prevent the note heads overlapping.  These are called
-note columns.  There are separate columns for each voice, and
-the currently specified voice-dependent shift is applied to the
-note column if there would otherwise be a collision.  This can
-be seen in the example above.  In bar 2 the C in voice two is
-shifted to the right relative to the D in voice one, and in the
-final chord the C in voice three is also shifted to the right
-relative to the other notes.
-
-The @code{\shiftOn}, @code{\shiftOnn}, @code{\shiftOnnn}, and
-@code{\shiftOff} commands specify the degree to which notes and
-chords of the voice should be shifted if a collision
-would otherwise occur. By default, the outer voices (normally
-voices one and two) have @code{\shiftOff} specified, while the
-inner voices (three and four) have @code{\shiftOn} specified.
-When a shift is applied, voices one and three are shifted to
-the right and voices two and four to the left.
-
-@code{\shiftOnn} and @code{\shiftOnnn} define further shift
-levels which may be specified temporarily to resolve collisions
-in complex situations -- see @ref{Real music example}.
-
-A note column can contain just one note (or chord) from a voice
-with stems up and one note (or chord) from a voice with stems
-down.  If notes from two voices which have their stems in the
-same direction are placed at the same position and both voices
-have no shift or the same shift specified, the error message
-@qq{Too many clashing note columns} will be produced.
-
-
-@seealso
-Notation Reference: @ruser{Multiple voices}.
-
-
-@node Voices and vocals
-@subsection Voices and vocals
-
-Vocal music presents a special difficulty: we need to combine two
-expressions -- notes and lyrics.
-
-@funindex \new Lyrics
-@funindex \lyricsto
-@funindex lyricsto
-@funindex Lyrics
-@cindex Lyrics context, creating
-@cindex lyrics, linking to voice
-
-You have already seen the @code{\addlyrics@{@}} command, which
-handles simple scores well.  However, this technique is
-quite limited.  For more complex music, you must introduce the
-lyrics in a @code{Lyrics} context using @code{\new Lyrics} and
-explicitly link
-the lyrics to the notes with @code{\lyricsto@{@}}, using the
-name assigned to the Voice.
-
-@lilypond[quote,verbatim,fragment]
-<<
-  \new Voice = "one" \relative c'' {
-    \autoBeamOff
-    \time 2/4
-    c4 b8. a16 g4. f8 e4 d c2
-  }
-  \new Lyrics \lyricsto "one" {
-    No more let sins and sor -- rows grow.
-  }
->>
-@end lilypond
-
-Note that the lyrics must be linked to a @code{Voice} context,
-@emph{not} a @code{Staff} context.  This is a case where it is
-necessary to create @code{Staff} and @code{Voice} contexts
-explicitly.
-
-@cindex lyrics and beaming
-@cindex beaming and lyrics
-@funindex \autoBeamOff
-@funindex autoBeamOff
-
-The automatic beaming which LilyPond uses by default works well
-for instrumental music, but not so well for music with lyrics,
-where beaming is either not required at all or is used to indicate
-melismata in the lyrics.  In the example above we use the command
-@code{\autoBeamOff} to turn off the automatic beaming.
-
-@funindex \new ChoirStaff
-@funindex ChoirStaff
-@funindex \lyricmode
-@funindex lyricmode
-@cindex vocal score structure
-@cindex choir staff
-
-Let us reuse the earlier example from Judas Maccabæus to
-illustrate this more flexible technique.  We first recast
-it to use variables so the music and lyrics can be separated
-from the staff structure.  We also introduce a ChoirStaff
-bracket.  The lyrics themselves must be introduced with
-@code{\lyricmode} to ensure they are interpreted as lyrics
-rather than music.
-
-@lilypond[quote,verbatim]
-global = { \time 6/8 \partial 8 \key f \major}
-SopOneMusic = \relative c'' {
-  c8 | c([ bes)] a a([ g)] f | f'4. b, | c4.~ c4 }
-SopTwoMusic = \relative c' {
-  r8 | r4. r4 c8 | a'([ g)] f f([ e)] d | e([ d)] c bes' }
-SopOneLyrics = \lyricmode {
-  Let | flee -- cy flocks the | hills a -- dorn, __ }
-SopTwoLyrics = \lyricmode {
-  Let | flee -- cy flocks the | hills a -- dorn, }
-
-\score {
-  \new ChoirStaff <<
-    \new Staff <<
-      \new Voice = "SopOne" {
-        \global
-        \SopOneMusic
-      }
-      \new Lyrics \lyricsto "SopOne" {
-        \SopOneLyrics
-      }
-    >>
-    \new Staff <<
-      \new Voice = "SopTwo" {
-        \global
-        \SopTwoMusic
-      }
-      \new Lyrics \lyricsto "SopTwo" {
-        \SopTwoLyrics
-      }
-    >>
-  >>
-}
-@end lilypond
-
-This is the basic structure of all vocal scores.  More staves may be
-added as required, more voices may be added to the staves, more verses
-may be added to the lyrics, and the variables containing the music can
-easily be placed in separate files should they become too long.
-
-@cindex hymn structure
-@cindex SATB structure
-@cindex vocal scores with multiple verses
-@cindex multiple vocal verses
-@cindex verses, multiple vocal
-
-Here is an example of the first line of a hymn with four
-verses, set for SATB.  In this case the words for all four
-parts are the same.  Note how we use variables to separate the
-music notation and words from the staff structure.  See too
-how a variable, which we have chosen to call @q{TimeKey}, is used
-to hold several commands for use within the two staves.  In other
-examples this is often called @q{global}.
-
-@lilypond[quote,verbatim]
-TimeKey = { \time 4/4 \partial 4 \key c \major}
-SopMusic   = \relative c' { c4 | e4. e8 g4  g  | a a g }
-AltoMusic  = \relative c' { c4 | c4. c8 e4  e  | f f e }
-TenorMusic = \relative c  { e4 | g4. g8 c4. b8 | a8 b c d e4 }
-BassMusic  = \relative c  { c4 | c4. c8 c4  c  | f8 g a b c4 }
-VerseOne   = \lyricmode {
-  E -- | ter -- nal fa -- ther, | strong to save, }
-VerseTwo   = \lyricmode {
-  O | Christ, whose voice the | wa -- ters heard, }
-VerseThree = \lyricmode {
-  O | Ho -- ly Spi -- rit, | who didst brood }
-VerseFour  = \lyricmode {
-  O | Tri -- ni -- ty of | love and pow'r }
-
-\score {
-  \new ChoirStaff <<
-    \new Staff <<
-      \clef "treble"
-      \new Voice = "Sop"  { \voiceOne \TimeKey \SopMusic }
-      \new Voice = "Alto" { \voiceTwo \AltoMusic }
-      \new Lyrics \lyricsto "Sop" { \VerseOne   }
-      \new Lyrics \lyricsto "Sop" { \VerseTwo   }
-      \new Lyrics \lyricsto "Sop" { \VerseThree }
-      \new Lyrics \lyricsto "Sop" { \VerseFour  }
-    >>
-    \new Staff <<
-      \clef "bass"
-      \new Voice = "Tenor" { \voiceOne \TimeKey \TenorMusic }
-      \new Voice = "Bass"  { \voiceTwo \BassMusic  }
-    >>
-  >>
-}
-@end lilypond
-
-@cindex verse and refrain
-
-We end with an example to show how we might code a solo verse which
-continues into a two-part refrain in two staves.  The
-positioning of the sequential and simultaneous sections to achieve
-this within a single score is quite tricky, so follow the
-explanation carefully!
-
-Let's start with a score block containing a @code{ChoirStaff}, as
-we would like the brace to appear at the start of the chorus.
-Normally you would need angle brackets after @code{\new ChoirStaff}
-to bring in all the staves in parallel, but here we want to
-defer the parallelism during the solo so we use braces, although
-angle brackets here wouldn't hurt.  Inside the @code{ChoirStaff} we
-want first the staff which will contain the verse.  This must
-contain notes and lyrics in parallel, so here we need angle
-brackets around the @code{\new Voice} and @code{\new Lyrics} to
-start them at the same time:
-
-@lilypond[quote,verbatim,ragged-right]
-versenotes = \relative c'' {
-  \clef "treble"
-  \key g \major
-  \time 3/4 g g g b b b
-}
-versewords = \lyricmode {
-  One two three four five six
-}
-\score {
-  \new ChoirStaff {
-    \new Staff <<
-      \new Voice = "verse" {
-        \versenotes \break
-      }
-      \new Lyrics \lyricsto verse {
-        \versewords
-      }
-    >>
-  }
-}
-@end lilypond
-
-That gives the verse line.
-
-Now we want to continue with refrainA on the same staff while a
-second staff is introduced in parallel with it for refrainB, so
-this is a parallel section which must be positioned immediately
-following the @code{\break} in the verse Voice.  Yes, @emph{within}
-the verse Voice!  Here's that parallel section.  More staves
-could be introduced here in the same way.
-
-@example
-<<
-  \refrainnotesA
-  \new Lyrics \lyricsto verse @{
-    \refrainwordsA
-  @}
-  \new Staff <<
-    \new Voice = "refrainB" @{
-      \refrainnotesB
-    @}
-    \new Lyrics \lyricsto "refrainB" @{
-      \refrainwordsB
-    @}
-  >>
->>
-@end example
-
-Here's the final result with two staves in the chorus showing
-how the parallel section is positioned within the verse Voice:
-
-@lilypond[quote,verbatim, ragged-right]
-versenotes = \relative c'' {
-  \clef "treble"
-  \key g \major
-  \time 3/4 g g g b b b
-}
-refrainnotesA = \relative c'' {
-  \time 2/4
-  c c g g \bar "|."
-}
-refrainnotesB = \relative c {
-  \clef "bass"
-  \key g \major
-  c e d d
-}
-versewords = \lyricmode {
-  One two three four five six
-}
-refrainwordsA = \lyricmode {
-  la la la la
-}
-refrainwordsB = \lyricmode {
-  dum dum dum dum
-}
-\score {
-  \new ChoirStaff {
-    \new Staff <<
-      \new Voice = "verse" {
-        \versenotes \break
-        <<
-          \refrainnotesA
-          \new Lyrics \lyricsto "verse" {
-            \refrainwordsA
-          }
-          \new Staff <<
-            \new Voice = "refrainB" {
-              \refrainnotesB
-            }
-            \new Lyrics \lyricsto "refrainB" {
-              \refrainwordsB
-            }
-          >>
-        >>
-      }
-      \new Lyrics \lyricsto "verse" {
-        \versewords
-      }
-    >>
-  }
-}
-@end lilypond
-
-@cindex book, example of using
-@funindex \book
-@funindex book
-
-However, although this is an interesting and useful exercise to
-help you to understand how sequential and simultaneous blocks work,
-in practice one would perhaps choose to code this as two
-@code{\score} blocks within an implicit @code{\book} block, as
-follows:
-
-@lilypond[quote,verbatim,ragged-right]
-versenotes = \relative c'' {
-  \clef "treble"
-  \key g \major
-  \time 3/4 g g g b b b
-}
-refrainnotesA = \relative c'' {
-  \time 2/4
-  c c g g \bar "|."
-}
-refrainnotesB = \relative c {
-  \clef "bass"
-  \key g \major
-  c e d d
-}
-versewords = \lyricmode {
-  One two three four five six
-}
-refrainwordsA = \lyricmode {
-  la la la la
-}
-refrainwordsB = \lyricmode {
-  dum dum dum dum
-}
-\score {
-  \new Staff <<
-    \new Voice = "verse" {
-      \versenotes
-    }
-    \new Lyrics \lyricsto "verse" {
-      \versewords
-    }
-  >>
-}
-
-\score {
-  \new ChoirStaff <<
-    \new Staff <<
-      \new Voice = "refrainA" {
-        \refrainnotesA
-      }
-      \new Lyrics \lyricsto "refrainA" {
-        \refrainwordsA
-      }
-    >>
-    \new Staff <<
-      \new Voice = "refrainB" {
-        \refrainnotesB
-      }
-      \new Lyrics \lyricsto "refrainB" {
-        \refrainwordsB
-      }
-    >>
-  >>
-}
-@end lilypond
-
-
-@seealso
-Notation Reference: @ruser{Vocal music}.
-
-
-@node Contexts and engravers
-@section Contexts and engravers
-
-Contexts and engravers have been mentioned informally
-in earlier sections; we now must look at
-these concepts in more detail, as they are important
-in the fine-tuning of LilyPond output.
-
-
-@menu
-* Contexts explained::
-* Creating contexts::
-* Engravers explained::
-* Modifying context properties::
-* Adding and removing engravers::
-@end menu
-
-@node Contexts explained
-@subsection Contexts explained
-
-@cindex contexts explained
-
-When music is printed, many notational elements which do not
-appear explicitly in the input file must be added to the
-output.  For example, compare the input and output of the
-following example:
-
-@lilypond[quote,verbatim,relative=2,fragment]
-cis4 cis2. g4
-@end lilypond
-
-The input is rather sparse, but in the output, bar lines,
-accidentals, clef, and time signature have been added.  When
-LilyPond @emph{interprets} the input the musical information
-is inspected in time order, similar to reading a score from left
-to right.  While reading the input, the program remembers where
-measure boundaries are, and which pitches require explicit
-accidentals.  This information must be held on several levels.
-For example, the effect of an accidental is limited
-to a single staff, while a bar line must be synchronized across
-the entire score.
-
-Within LilyPond, these rules and bits of information are grouped in
-@emph{Contexts}.  We have already met the @code{Voice} context.
-Others are the @code{Staff} and @code{Score} contexts.  Contexts are
-hierarchical to reflect the hierarchical nature of a musical score.
-For example: a @code{Staff} context can contain many @code{Voice}
-contexts, and a @code{Score} context can contain many @code{Staff}
-contexts.
-
-@quotation
-@sourceimage{context-example,5cm,,}
-@end quotation
-
-Each context has the responsibility for enforcing some notation rules,
-creating some notation objects and maintaining the associated
-properties.  For example, the @code{Voice} context may introduce an
-accidental and then the @code{Staff} context maintains the rule to
-show or suppress the accidental for the remainder of the measure.
-
-As another example, the synchronization of bar lines is, by default,
-handled in the @code{Score} context.
-However, in some music we may not want the bar lines to be
-synchronized -- consider a polymetric score in 4/4 and 3/4 time.
-In such cases, we must modify the default settings of the
-@code{Score} and @code{Staff} contexts.
-
-For very simple scores, contexts are created implicitly, and you need
-not be aware of them.  For larger pieces, such as anything with more
-than one staff, they must be
-created explicitly to make sure that you get as many staves as you
-need, and that they are in the correct order.  For typesetting pieces
-with specialized notation, it is usual to modify existing, or
-even to define totally new, contexts.
-
-In addition to the @code{Score,} @code{Staff} and
-@code{Voice} contexts there are contexts which fit between
-the score and staff levels to control staff groups, such as the
-@code{PianoStaff} and @code{ChoirStaff} contexts.  There
-are also alternative staff and voice contexts, and contexts for
-lyrics, percussion, fret boards, figured bass, etc.
-
-The names of all context types are formed from one or more
-words, each word being capitalized and joined immediately to the
-preceding word with no hyphen or underscore, e.g.,
-@code{GregorianTranscriptionStaff}.
-
-
-@seealso
-Notation Reference: @ruser{Contexts explained}.
-
-
-@node Creating contexts
-@subsection Creating contexts
-
-@funindex \new
-@funindex new
-@cindex new contexts
-@cindex creating contexts
-@cindex contexts, creating
-
-There can be only one top level context: the @code{Score} context.
-This is created with the @code{\score} command, or, in simple scores,
-it is created automatically.
-
-For scores with only one voice and one staff, the @code{Voice} and
-@code{Staff} contexts may be left to be created automatically, but for
-more complex scores it is necessary to create them by hand.  The
-simplest command that does this is @code{\new}.  It is prepended to a
-music expression, for example
-
-@example
-\new @var{type} @var{music-expression}
-@end example
-
-@noindent
-where @var{type} is a context name (like @code{Staff} or
-@code{Voice}).  This command creates a new context, and starts
-interpreting the @var{music-expression} within that context.
-
-Note that there is no @code{\new Score} command;
-the single top-level @code{Score} context is introduced
-with @code{\score}.
-
-You have seen many practical examples which created new
-@code{Staff} and @code{Voice} contexts in earlier sections, but
-to remind you how these commands are used in practice, here's an
-annotated real-music example:
-
-@lilypond[quote,verbatim,ragged-right]
-\score {  % start of single compound music expression
-  <<  % start of simultaneous staves section
-    \time 2/4
-    \new Staff {  % create RH staff
-      \key g \minor
-      \clef "treble"
-      \new Voice {  % create voice for RH notes
-        \relative c'' {  % start of RH notes
-          d4 ees16 c8. |
-          d4 ees16 c8. |
-        }  % end of RH notes
-      }  % end of RH voice
-    }  % end of RH staff
-    \new Staff <<  % create LH staff; needs two simultaneous voices
-      \key g \minor
-      \clef "bass"
-      \new Voice {  % create LH voice one
-        \voiceOne
-        \relative g {  % start of LH voice one notes
-          g8 <bes d> ees, <g c> |
-          g8 <bes d> ees, <g c> |
-        }  % end of LH voice one notes
-      }  % end of LH voice one
-      \new Voice {  % create LH voice two
-        \voiceTwo
-        \relative g {  % start of LH voice two notes
-          g4 ees |
-          g4 ees |
-        }  % end of LH voice two notes
-      }  % end of LH voice two
-    >>  % end of LH staff
-  >>  % end of simultaneous staves section
-}  % end of single compound music expression
-@end lilypond
-
-(Note how all the statements which open a block with either a
-curly bracket, @code{@{}, or double angle brackets, @code{<<},
-are indented by two further spaces, and the corresponding
-closing bracket is indented by exactly the same amount.  While
-this is not required, following this practice will greatly
-reduce the number of @q{unmatched bracket} errors, and is
-strongly recommended.  It enables the structure of the music to
-be seen at a glance, and any unmatched brackets will be obvious.
-Note too how the LH staff is created using double angle brackets
-because it requires two voices for its music, whereas the RH staff
-is created with a single music expression surrounded by curly
-brackets because it requires only one voice.)
-
-@cindex contexts, naming
-@cindex naming contexts
-
-The @code{\new} command may also give a identifying name to the
-context to distinguish it from other contexts of the same type,
-
-@example
-\new @var{type} = @var{id} @var{music-expression}
-@end example
-
-Note the distinction between the name of the context type,
-@code{Staff}, @code{Voice}, etc, and the identifying name of a
-particular instance of that type, which can be any sequence of letters
-invented by the user.  Digits and spaces can also be used in the
-identifying name, but then it has to be placed in quotes,
-i.e. @code{\new Staff = "MyStaff 1" @var{music-expression}}.
-The identifying name is used to
-refer back to that particular instance of a context.  We saw this in
-use in the section on lyrics, see @ref{Voices and vocals}.
-
-
-@seealso
-Notation Reference: @ruser{Creating contexts}.
-
-
-@node Engravers explained
-@subsection Engravers explained
-
-@cindex engravers
-
-Every mark on the printed output of a score produced by LilyPond
-is produced by an @code{Engraver}.  Thus there is an engraver
-to print staves, one to print note heads, one for stems, one for
-beams, etc, etc.  In total there are over 120 such engravers!
-Fortunately, for most scores it is not necessary to know about
-more than a few, and for simple scores you do not need to know
-about any.
-
-Engravers live and operate in Contexts.  Engravers such as the
-@code{Metronome_mark_engraver}, whose action and output apply to the
-score as a whole, operate in the highest level context -- the
-@code{Score} context.
-
-The @code{Clef_engraver} and @code{Key_engraver} are to be
-found in every @code{Staff} Context, as different staves may require
-different clefs and keys.
-
-The @code{Note_heads_engraver} and @code{Stem_engraver} live
-in every @code{Voice} context, the lowest level context of all.
-
-Each engraver processes the particular objects associated
-with its function, and maintains the properties that relate
-to that function.  These properties, like the properties
-associated with contexts, may be modified to change the
-operation of the engraver or the appearance of those elements
-in the printed score.
-
-Engravers all have compound names formed from words which
-describe their function.  Just the first word is capitalized,
-and the remainder are joined to it with underscores.  Thus
-the @code{Staff_symbol_engraver} is responsible for creating the
-lines of the staff, the @code{Clef_engraver} determines and sets
-the pitch reference point on the staff by drawing a clef symbol.
-
-Here are some of the most common engravers together with their
-function.  You will see it is usually easy to guess the function
-from the name, or vice versa.
-
-@multitable @columnfractions .3 .7
-@headitem Engraver
-  @tab Function
-@item Accidental_engraver
-  @tab Makes accidentals, cautionary and suggested accidentals
-@item Beam_engraver
-  @tab Engraves beams
-@item Clef_engraver
-  @tab Engraves clefs
-@item Completion_heads_engraver
-  @tab Splits notes which cross bar lines
-@c The old Dynamic_engraver is deprecated. -jm
-@item New_dynamic_engraver
-  @tab Creates hairpins and dynamic texts
-@item Forbid_line_break_engraver
-  @tab Prevents line breaks if a musical element is still active
-@item Key_engraver
-  @tab Creates the key signature
-@item Metronome_mark_engraver
-  @tab Engraves metronome marking
-@item Note_heads_engraver
-  @tab Engraves note heads
-@item Rest_engraver
-  @tab Engraves rests
-@item Staff_symbol_engraver
-  @tab Engraves the five (by default) lines of the staff
-@item Stem_engraver
-  @tab Creates stems and single-stem tremolos
-@item Time_signature_engraver
-  @tab Creates time signatures
-@end multitable
-
-@smallspace
-
-We shall see later how the output of LilyPond can be changed
-by modifying the action of Engravers.
-
-
-@seealso
-Internals reference: @rinternals{Engravers and Performers}.
-
-
-@node Modifying context properties
-@subsection Modifying context properties
-
-@cindex context properties
-@cindex context properties, modifying
-@cindex modifying context properties
-@funindex \set
-@funindex set
-@funindex \unset
-@funindex unset
-
-Contexts are responsible for holding the values of a number of
-context @emph{properties}.  Many of them can be changed to
-influence the interpretation of the input and so change the
-appearance of the output.  They are changed by the
-@code{\set} command.  This takes the form
-
-@example
-\set @emph{ContextName}.@emph{propertyName} = #@emph{value}
-@end example
-
-Where the @emph{ContextName} is usually @code{Score},
-@code{Staff} or @code{Voice}.  It may be omitted,
-in which case @code{Voice} is assumed.
-
-The names of context properties consist of words joined
-together with no hyphens or underscores, all except the
-first having a capital letter.  Here are a few examples
-of some commonly used ones.  There are many more.
-
-@c attempt to force this onto a new page
-@need 50
-@multitable @columnfractions .25 .15 .45 .15
-@headitem propertyName
-  @tab Type
-  @tab Function
-  @tab Example Value
-@item extraNatural
-  @tab Boolean
-  @tab If true, set extra natural signs before accidentals
-  @tab @code{#t}, @code{#f}
-@item currentBarNumber
-  @tab Integer
-  @tab Set the current bar number
-  @tab @code{50}
-@item doubleSlurs
-  @tab Boolean
-  @tab If true, print slurs both above and below notes
-  @tab @code{#t}, @code{#f}
-@item instrumentName
-  @tab Text
-  @tab Set the name to be placed at the start of the staff
-  @tab @code{"Cello I"}
-@item fontSize
-  @tab Real
-  @tab Increase or decrease the font size
-  @tab @code{2.4}
-@item stanza
-  @tab Text
-  @tab Set the text to print before the start of a verse
-  @tab @code{"2"}
-@end multitable
-
-@noindent
-where a Boolean is either True (@code{#t}) or False (@code{#f}),
-an Integer is a positive whole number, a Real is a positive
-or negative decimal number, and text is enclosed in double
-apostrophes.  Note the occurrence of hash signs,
-(@code{#}), in two different places -- as part of the Boolean
-value before the @code{t} or @code{f}, and before @emph{value}
-in the @code{\set} statement.  So when a Boolean is being
-entered you need to code two hash signs, e.g., @code{##t}.
-
-@cindex properties operating in contexts
-@cindex setting properties within contexts
-
-Before we can set any of these properties we need to know
-in which context they operate.  Sometimes this is obvious,
-but occasionally it can be tricky.  If the wrong context
-is specified, no error message is produced, but the expected
-action will not take place.  For example, the
-@code{instrumentName} clearly lives in the @code{Staff} context, since
-it is the staff that is to be named.
-In this example the first staff is labelled, but not the second,
-because we omitted the context name.
-
-@lilypond[quote,verbatim,ragged-right]
-<<
-  \new Staff \relative c'' {
-    \set Staff.instrumentName = #"Soprano"
-    c4 c
- }
-  \new Staff \relative c' {
-  \set instrumentName = #"Alto"  % Wrong!
-  d4 d
- }
->>
-@end lilypond
-
-Remember the default context name is @code{Voice}, so the second
-@code{\set} command set the property @code{instrumentName} in the
-@code{Voice} context to @qq{Alto}, but as LilyPond does not look
-for any such property in the @code{Voice} context, no
-further action took place.  This is not an error, and no error
-message is logged in the log file.
-
-Similarly, if the property name is mis-spelt no error message is
-produced, and clearly the expected action cannot be performed.  In
-fact, you can set any (fictitious) @q{property} using any name you
-like in any context that exists by using the @code{\set} command.  But
-if the name is not known to LilyPond it will not cause any action to
-be taken.  Some text editors with special support for LilyPond input
-files document property names with bullets when you hover them with
-the mouse, like JEdit with LilyPondTool, or highlight unknown property
-names differently, like ConTEXT.  If you do not use an editor with
-such features, it is recommended to check the property name in the
-Internals Reference: see @rinternals{Tunable context properties}, or
-@rinternals{Contexts}.
-
-The @code{instrumentName} property will take effect only
-if it is set in the @code{Staff} context, but
-some properties can be set in more than one context.
-For example, the property @code{extraNatural} is by
-default set to ##t (true) for all staves.
-If it is set to ##f (false) in one particular @code{Staff}
-context it applies just to the accidentals on that staff.
-If it is set to false in the @code{Score} context
-it applies to all staves.
-
-So this turns off extra naturals in one staff:
-
-@lilypond[quote,verbatim,ragged-right]
-<<
-  \new Staff \relative c'' {
-    ais4 aes
- }
-  \new Staff \relative c'' {
-    \set Staff.extraNatural = ##f
-    ais4 aes
- }
->>
-@end lilypond
-
-@noindent
-and this turns them off in all staves:
-
-@lilypond[quote,verbatim,ragged-right]
-<<
-  \new Staff \relative c'' {
-    ais4 aes
- }
-  \new Staff \relative c'' {
-    \set Score.extraNatural = ##f
-    ais4 aes
- }
->>
-@end lilypond
-
-As another example, if @code{clefOctavation} is set in
-the @code{Score} context this immediately changes the value
-of the octavation in all current staves and sets a new default
-value which will be applied to all staves.
-
-The opposite command, @code{\unset}, effectively removes the
-property from the context, which causes most properties to
-revert to their default value.  Usually @code{\unset} is not
-required as a new @code{\set} command will achieve what is
-wanted.
-
-The @code{\set} and @code{\unset} commands can appear anywhere
-in the input file and will take effect from the time they are
-encountered until the end of the score or until the property is
-@code{\set} or @code{\unset} again.  Let's try changing the
-font size, which affects the size of the note heads (among
-other things) several times.  The change is from the default
-value, not the most recently set value.
-
-@lilypond[quote,verbatim,ragged-right,relative=1,fragment]
-c4
-% make note heads smaller
-\set fontSize = #-4
-d e
-% make note heads larger
-\set fontSize = #2.5
-f g
-% return to default size
-\unset fontSize
-a b
-@end lilypond
-
-We have now seen how to set the values of several different types of
-property.  Note that integers and numbers are always preceded by a
-hash sign, @code{#}, while a true or false value is specified by
-@code{##t} and @code{##f}, with two hash signs.  A text property
-should be enclosed in double quotation signs, as above, although we
-shall see later that text can actually be specified in a much more
-general way by using the very powerful @code{markup} command.
-
-@subsubheading Setting context properties with @code{\with}
-
-@funindex \with
-@funindex with
-@cindex context properties, setting with \with
-
-Context properties may also be set at the time the context is
-created.  Sometimes this is a clearer way of specifying a
-property value if it is to remain fixed for the duration of
-the context.  When a context is created with a @code{\new}
-command it may be followed immediately by a
-@code{\with @{ .. @}} block in which the property values are
-set.  For example, if we wish to suppress the printing of
-extra naturals for the duration of a staff we would write:
-
-@example
-\new Staff \with @{ extraNatural = ##f @}
-@end example
-
-@noindent
-like this:
-
-@lilypond[quote,verbatim,ragged-right]
-<<
-  \new Staff
-  \relative c'' {
-    gis ges aes ais
-  }
-  \new Staff \with { extraNatural = ##f }
-  \relative c'' {
-    gis ges aes ais
-  }
->>
-@end lilypond
-
-Properties set in this way may still be changed dynamically using
-@code{\set} and returned to their default value with @code{\unset}.
-
-@cindex fontSize, default and setting
-
-The @code{fontSize} property is treated differently.  If this is
-set in a @code{\with} clause it effectively resets the default
-value of the font size.  If it is later changed with @code{\set},
-this new default value may be restored with the
-@code{\unset fontSize} command.
-
-@subsubheading Setting context properties with @code{\context}
-
-@cindex context properties, setting with \context
-@funindex \context
-@funindex context
-
-The values of context properties may be set in @emph{all} contexts
-of a particular type, such as all @code{Staff} contexts, with a single
-command.  The context type is identified by using its
-type name, like @code{Staff}, prefixed by a back-slash: @code{\Staff}.
-The statement which sets the property value is the same as that in a
-@code{\with} block, introduced above.  It is placed in a
-@code{\context} block within a @code{\layout} block.  Each
-@code{\context} block will affect all contexts of the type specified
-throughout the @code{\score} or @code{\book} block in which the
-@code{\layout} block appears.  Here is a example to show the format:
-
-@lilypond[verbatim,quote]
-\score {
-  \new Staff {
-    \relative c'' {
-      cis4 e d ces
-    }
-  }
-  \layout {
-    \context {
-      \Staff
-      extraNatural = ##t
-    }
-  }
-}
-@end lilypond
-
-@noindent
-Context properties set in this way may be overridden for particular
-instances of contexts by statements in a @code{\with} block, and by
-@code{\set} commands embedded in music statements.
-
-
-@seealso
-Notation Reference:
-@ruser{Changing context default settings}.
-@c FIXME
-@c uncomment when backslash-node-name issue is resolved -pm
-@c @ruser{The set command}.
-
-Internals Reference:
-@rinternals{Contexts},
-@rinternals{Tunable context properties}.
-
-
-@node Adding and removing engravers
-@subsection Adding and removing engravers
-
-@cindex engravers, adding
-@cindex adding engravers
-@cindex engravers, removing
-@cindex removing engravers
-
-@funindex \consists
-@funindex consists
-@funindex \remove
-@funindex remove
-
-We have seen that contexts each contain several engravers, each
-of which is responsible for producing a particular part of the
-output, like bar lines, staves, note heads, stems, etc.  If an
-engraver is removed from a context, it can no longer produce its
-output.  This is a crude way of modifying the output, but it
-can sometimes be useful.
-
-@subsubheading Changing a single context
-
-To remove an engraver from a single context we use the
-@code{\with} command placed immediately after the context creation
-command, as in the previous section.
-
-As an illustration, let's repeat an example from the previous section
-with the staff lines removed.  Remember that the staff lines are
-produced by the @code{Staff_symbol_engraver}.
-
-@lilypond[quote,verbatim,ragged-right]
-\new Staff \with {
-  \remove Staff_symbol_engraver
-}
-\relative c' {
-  c4
-  \set fontSize = #-4  % make note heads smaller
-  d e
-  \set fontSize = #2.5  % make note heads larger
-  f g
-  \unset fontSize  % return to default size
-  a b
-}
-@end lilypond
-
-@cindex ambitus engraver
-
-Engravers can also be added to individual contexts.
-The command to do this is
-
-@code{\consists @var{Engraver_name}},
-
-@noindent
-placed inside a @code{\with} block.  Some vocal scores have an ambitus
-placed at the beginning of a staff to indicate the range of notes in
-that staff -- see @rglos{ambitus}.  The ambitus is produced by the
-@code{Ambitus_engraver}, which is not normally included in any
-context.  If we add it to the @code{Voice} context, it calculates the
-range from that voice only:
-
-@lilypond[quote,verbatim,ragged-right]
-\new Staff <<
-  \new Voice \with {
-    \consists Ambitus_engraver
-  }
-  \relative c'' {
-    \voiceOne
-    c a b g
-  }
-  \new Voice
-  \relative c' {
-    \voiceTwo
-    c e d f
-  }
->>
-@end lilypond
-
-@noindent
-but if we add the ambitus engraver to the
-@code{Staff} context, it calculates the range from all
-the notes in all the voices on that staff:
-
-@lilypond[quote,verbatim,ragged-right]
-\new Staff \with {
-    \consists Ambitus_engraver
-  }
-  <<
-  \new Voice
-  \relative c'' {
-    \voiceOne
-    c a b g
-  }
-  \new Voice
-  \relative c' {
-    \voiceTwo
-    c e d f
-  }
->>
-@end lilypond
-
-@subsubheading Changing all contexts of the same type
-
-@funindex \layout
-@funindex layout
-
-The examples above show how to remove or add engravers to
-individual contexts.  It is also possible to remove or add
-engravers to every context of a specific type by placing the
-commands in the appropriate context in a @code{\layout}
-block.  For example, if we wanted to show an ambitus for every
-staff in a four-staff score, we could write
-
-@lilypond[quote,verbatim,ragged-right]
-\score {
-  <<
-    \new Staff <<
-      \relative c'' { c a b g }
-    >>
-    \new Staff <<
-      \relative c' { c a b g }
-    >>
-    \new Staff <<
-      \clef "G_8"
-      \relative c' { c a b g }
-    >>
-    \new Staff <<
-      \clef "bass"
-      \relative c { c a b g }
-    >>
-  >>
-  \layout {
-    \context {
-      \Staff
-      \consists Ambitus_engraver
-    }
-  }
-}
-@end lilypond
-
-@noindent
-The values of context properties may also be set
-for all contexts of a particular type by including the
-@code{\set} command in a @code{\context} block in the
-same way.
-
-
-@seealso
-Notation Reference: @ruser{Modifying context plug-ins},
-@ruser{Changing context default settings}.
-
-
-@node Extending the templates
-@section Extending the templates
-
-You've read the tutorial, you know how to write music, you
-understand the fundamental concepts.  But how can you
-get the staves that you want?  Well, you can find lots of
-templates (see @ref{Templates}) which may give you a start.
-But what if you want something that isn't covered there?  Read on.
-
-@menu
-* Soprano and cello::
-* Four-part SATB vocal score::
-* Building a score from scratch::
-@end menu
-
-@node Soprano and cello
-@subsection Soprano and cello
-
-@cindex template, modifying
-@cindex modifying templates
-
-Start off with the template that seems closest to what you want to end
-up with.  Let's say that you want to write something for soprano and
-cello.  In this case, we would start with @q{Notes and lyrics} (for the
-soprano part).
-
-@example
-\version @w{"@version{}"}
-melody = \relative c' @{
-  \clef treble
-  \key c \major
-  \time 4/4
-  a4 b c d
-@}
-
-text = \lyricmode @{
-  Aaa Bee Cee Dee
-@}
-
-\score @{
-  <<
-    \new Voice = "one" @{
-      \autoBeamOff
-      \melody
-    @}
-    \new Lyrics \lyricsto "one" \text
-  >>
-  \layout @{ @}
-  \midi @{ @}
-@}
-@end example
-
-Now we want to add a cello part.  Let's look at the @q{Notes only} example:
-
-@example
-\version @w{"@version{}"}
-melody = \relative c' @{
-  \clef treble
-  \key c \major
-  \time 4/4
-  a4 b c d
-@}
-
-\score @{
-  \new Staff \melody
-  \layout @{ @}
-  \midi @{ @}
-@}
-@end example
-
-We don't need two @code{\version} commands.  We'll need the
-@code{melody} section.  We don't want two @code{\score} sections
--- if we had two @code{\score}s, we'd get the two parts separately.
-We want them together, as a duet.  Within the @code{\score}
-section, we don't need two @code{\layout} or @code{\midi}.
-
-If we simply cut and paste the @code{melody} section, we would
-end up with two @code{melody} definitions.  This would not generate
-an error, but the second one would be used for both melodies.
-So let's rename them to make them distinct.  We'll call the
-section for the soprano @code{sopranoMusic} and the section for
-the cello @code{celloMusic}.  While we're doing this, let's rename
-@code{text} to be @code{sopranoLyrics}.  Remember to rename both
-instances of all these names -- both the initial definition (the
-@code{melody = \relative c' @{ } part) and the name's use (in the
-@code{\score} section).
-
-While we're doing this, let's change the cello part's staff --
-celli normally use bass clef.  We'll also give the cello some
-different notes.
-
-@example
-\version @w{"@version{}"}
-sopranoMusic = \relative c' @{
-  \clef treble
-  \key c \major
-  \time 4/4
-  a4 b c d
-@}
-
-sopranoLyrics = \lyricmode @{
-  Aaa Bee Cee Dee
-@}
-
-celloMusic = \relative c @{
-  \clef bass
-  \key c \major
-  \time 4/4
-  d4 g fis8 e d4
-@}
-
-\score @{
-  <<
-    \new Voice = "one" @{
-      \autoBeamOff
-      \sopranoMusic
-    @}
-    \new Lyrics \lyricsto "one" \sopranoLyrics
-  >>
-  \layout @{ @}
-  \midi @{ @}
-@}
-@end example
-
-This is looking promising, but the cello part won't appear in the
-score -- we haven't used it in the @code{\score} section.  If we
-want the cello part to appear under the soprano part, we need to add
-
-@example
-\new Staff \celloMusic
-@end example
-
-@noindent
-underneath the soprano stuff.  We also need to add @code{<<} and
-@code{>>} around the music -- that tells LilyPond that there's
-more than one thing (in this case, two @code{Staves}) happening
-at once.  The @code{\score} looks like this now:
-
-@c Indentation in this example is deliberately poor
-@example
-\score @{
-  <<
-  <<
-    \new Voice = "one" @{
-      \autoBeamOff
-      \sopranoMusic
-    @}
-    \new Lyrics \lyricsto "one" \sopranoLyrics
-  >>
-  \new Staff \celloMusic
-  >>
-  \layout @{ @}
-  \midi @{ @}
-@}
-@end example
-
-@noindent
-This looks a bit messy; the indentation is messed up now.  That is
-easily fixed.  Here's the complete soprano and cello template.
-
-@lilypond[quote,verbatim,ragged-right,addversion]
-sopranoMusic = \relative c' {
-  \clef treble
-  \key c \major
-  \time 4/4
-  a4 b c d
-}
-
-sopranoLyrics = \lyricmode {
-  Aaa Bee Cee Dee
-}
-
-celloMusic = \relative c {
-  \clef bass
-  \key c \major
-  \time 4/4
-  d4 g fis8 e d4
-}
-
-\score {
-  <<
-    <<
-      \new Voice = "one" {
-        \autoBeamOff
-        \sopranoMusic
-      }
-      \new Lyrics \lyricsto "one" \sopranoLyrics
-    >>
-    \new Staff \celloMusic
-  >>
-  \layout { }
-  \midi { }
-}
-@end lilypond
-
-
-@seealso
-The starting templates can be found in the @q{Templates} appendix,
-see @ref{Single staff}.
-
-
-@node Four-part SATB vocal score
-@subsection Four-part SATB vocal score
-
-@cindex template, SATB
-@cindex SATB template
-
-Most vocal scores of music written for four-part mixed choir
-with orchestral accompaniment such as Mendelssohn's Elijah or
-Handel's Messiah have the choral music and words on four
-staves, one for each of SATB, with a piano reduction of the
-orchestral accompaniment underneath.  Here's an example
-from Handel's Messiah:
-
-@c The following should appear as music without code
-@lilypond[quote,ragged-right]
-global = { \key d \major \time 4/4 }
-sopranoMusic = \relative c'' {
-  \clef "treble"
-  r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
-}
-sopranoWords = \lyricmode {
-  Wor -- thy is the lamb that was slain
-}
-altoMusic = \relative a' {
-  \clef "treble"
-  r4 a2 a4 | fis4. fis8 a2 | g4 fis e2 |
-}
-altoWords = \sopranoWords
-tenorMusic = \relative c' {
-  \clef "G_8"
-  r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 |
-}
-tenorWords = \sopranoWords
-bassMusic = \relative c' {
-  \clef "bass"
-  r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 |
-}
-bassWords = \sopranoWords
-upper = \relative a' {
-  \clef "treble"
-  \global
-  r4 <a d fis>2 <a e' a>4 |
-  <d fis d'>4. <d fis d'>8 <a d a'>2 |
-  <g cis g'>4 <a d fis> <a cis e>2 |
-}
-lower = \relative c, {
-  \clef "bass"
-  \global
-  <d d'>4 <d d'>2 <cis cis'>4 |
-  <b b'>4. <b' b'>8 <fis fis'>2 |
-  <e e'>4 <d d'> <a' a'>2 |
-}
-
-\score {
-  <<  % combine ChoirStaff and PianoStaff in parallel
-    \new ChoirStaff <<
-      \new Staff = "sopranos" <<
-        \set Staff.instrumentName = #"Soprano"
-        \new Voice = "sopranos" { \global \sopranoMusic }
-      >>
-      \new Lyrics \lyricsto "sopranos" { \sopranoWords }
-      \new Staff = "altos" <<
-        \set Staff.instrumentName = #"Alto"
-        \new Voice = "altos" { \global \altoMusic }
-      >>
-      \new Lyrics \lyricsto "altos" { \altoWords }
-      \new Staff = "tenors" <<
-        \set Staff.instrumentName = #"Tenor"
-        \new Voice = "tenors" { \global \tenorMusic }
-      >>
-      \new Lyrics \lyricsto "tenors" { \tenorWords }
-      \new Staff = "basses" <<
-        \set Staff.instrumentName = #"Bass"
-        \new Voice = "basses" { \global \bassMusic }
-      >>
-      \new Lyrics \lyricsto "basses" { \bassWords }
-    >>  % end ChoirStaff
-
-    \new PianoStaff <<
-      \set PianoStaff.instrumentName = #"Piano"
-      \new Staff = "upper" \upper
-      \new Staff = "lower" \lower
-    >>
-  >>
-}
-@end lilypond
-
-None of the templates provides this layout exactly.  The nearest is
-@q{SATB vocal score and automatic piano reduction} -- see @ref{Vocal
-ensembles} -- but we need to change the layout and add a piano
-accompaniment which is not derived automatically from the vocal parts.
-The variables holding the music and words for the vocal parts are
-fine, but we shall need to add variables for the piano reduction.
-
-The order in which the contexts appear in the ChoirStaff of the
-template do not correspond with the order in the vocal score shown
-above.  We need to rearrange them so there are four staves with the
-words written directly underneath the notes for each part.  All the
-voices should be @code{\voiceOne}, which is the default, so the
-@code{\voiceXXX} commands should be removed.  We also need to specify
-the tenor clef for the tenors.  The way in which lyrics are specified
-in the template has not yet been encountered so we need to use the
-method with which we are familiar.  We should also add the names of
-each staff.
-
-Doing this gives for our ChoirStaff:
-
-@example
-    \new ChoirStaff <<
-      \new Staff = "sopranos" <<
-        \set Staff.instrumentName = #"Soprano"
-        \new Voice = "sopranos" @{ \global \sopranoMusic @}
-      >>
-      \new Lyrics \lyricsto "sopranos" @{ \sopranoWords @}
-      \new Staff = "altos" <<
-        \set Staff.instrumentName = #"Alto"
-        \new Voice = "altos" @{ \global \altoMusic @}
-      >>
-      \new Lyrics \lyricsto "altos" @{ \altoWords @}
-      \new Staff = "tenors" <<
-        \set Staff.instrumentName = #"Tenor"
-        \new Voice = "tenors" @{ \global \tenorMusic @}
-      >>
-      \new Lyrics \lyricsto "tenors" @{ \tenorWords @}
-      \new Staff = "basses" <<
-        \set Staff.instrumentName = #"Bass"
-        \new Voice = "basses" @{ \global \bassMusic @}
-      >>
-      \new Lyrics \lyricsto "basses" @{ \bassWords @}
-    >>  % end ChoirStaff
-@end example
-
-Next we must work out the piano part.  This is
-easy - we just pull out the piano part from the
-@q{Solo piano} template:
-
-@example
-\new PianoStaff <<
-  \set PianoStaff.instrumentName = #"Piano  "
-  \new Staff = "upper" \upper
-  \new Staff = "lower" \lower
->>
-@end example
-
-and add the variable definitions for @code{upper}
-and @code{lower}.
-
-The ChoirStaff and PianoStaff must be combined
-using angle brackets as we want them to be
-stacked one above the other:
-
-@example
-<<  % combine ChoirStaff and PianoStaff one above the other
-  \new ChoirStaff <<
-    \new Staff = "sopranos" <<
-      \new Voice = "sopranos" @{ \global \sopranoMusic @}
-    >>
-    \new Lyrics \lyricsto "sopranos" @{ \sopranoWords @}
-    \new Staff = "altos" <<
-      \new Voice = "altos" @{ \global \altoMusic @}
-    >>
-    \new Lyrics \lyricsto "altos" @{ \altoWords @}
-    \new Staff = "tenors" <<
-      \clef "G_8"  % tenor clef
-      \new Voice = "tenors" @{ \global \tenorMusic @}
-    >>
-    \new Lyrics \lyricsto "tenors" @{ \tenorWords @}
-    \new Staff = "basses" <<
-      \clef "bass"
-      \new Voice = "basses" @{ \global \bassMusic @}
-    >>
-    \new Lyrics \lyricsto "basses" @{ \bassWords @}
-  >>  % end ChoirStaff
-
-  \new PianoStaff <<
-    \set PianoStaff.instrumentName = #"Piano"
-    \new Staff = "upper" \upper
-    \new Staff = "lower" \lower
-  >>
->>
-@end example
-
-Combining all these together and adding the music
-for the three bars of the example above gives:
-
-@lilypond[quote,verbatim,ragged-right,addversion]
-global = { \key d \major \time 4/4 }
-sopranoMusic = \relative c'' {
-  \clef "treble"
-  r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
-}
-sopranoWords = \lyricmode {
-  Wor -- thy is the lamb that was slain
-}
-altoMusic = \relative a' {
-  \clef "treble"
-  r4 a2 a4 | fis4. fis8 a2 | g4 fis fis2 |
-}
-altoWords = \sopranoWords
-tenorMusic = \relative c' {
-  \clef "G_8"
-  r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 |
-}
-tenorWords = \sopranoWords
-bassMusic = \relative c' {
-  \clef "bass"
-  r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 |
-}
-bassWords = \sopranoWords
-upper = \relative a' {
-  \clef "treble"
-  \global
-  r4 <a d fis>2 <a e' a>4 |
-  <d fis d'>4. <d fis d'>8 <a d a'>2 |
-  <g cis g'>4 <a d fis> <a cis e>2 |
-}
-lower = \relative c, {
-  \clef "bass"
-  \global
-  <d d'>4 <d d'>2 <cis cis'>4 |
-  <b b'>4. <b' b'>8 <fis fis'>2 |
-  <e e'>4 <d d'> <a' a'>2 |
-}
-
-\score {
-  <<  % combine ChoirStaff and PianoStaff in parallel
-    \new ChoirStaff <<
-      \new Staff = "sopranos" <<
-        \set Staff.instrumentName = #"Soprano"
-        \new Voice = "sopranos" { \global \sopranoMusic }
-      >>
-      \new Lyrics \lyricsto "sopranos" { \sopranoWords }
-      \new Staff = "altos" <<
-        \set Staff.instrumentName = #"Alto"
-        \new Voice = "altos" { \global \altoMusic }
-      >>
-      \new Lyrics \lyricsto "altos" { \altoWords }
-      \new Staff = "tenors" <<
-        \set Staff.instrumentName = #"Tenor"
-        \new Voice = "tenors" { \global \tenorMusic }
-      >>
-      \new Lyrics \lyricsto "tenors" { \tenorWords }
-      \new Staff = "basses" <<
-        \set Staff.instrumentName = #"Bass"
-        \new Voice = "basses" { \global \bassMusic }
-      >>
-      \new Lyrics \lyricsto "basses" { \bassWords }
-    >>  % end ChoirStaff
-
-    \new PianoStaff <<
-      \set PianoStaff.instrumentName = #"Piano  "
-      \new Staff = "upper" \upper
-      \new Staff = "lower" \lower
-    >>
-  >>
-}
-@end lilypond
-
-
-@node Building a score from scratch
-@subsection Building a score from scratch
-
-@cindex template, writing your own
-@cindex example of writing a score
-@cindex writing a score, example
-@cindex score, example of writing
-
-After gaining some facility with writing LilyPond code, you
-may find that it is easier to build a score from scratch
-rather than modifying one of the templates.  You can also
-develop your own style this way to suit the sort of music you
-like.  Let's see how to put together the score for an organ
-prelude as an example.
-
-We begin with a header section.  Here go the title, name
-of composer, etc, then come any variable definitions, and
-finally the score block.  Let's start with these in outline
-and fill in the details later.
-
-We'll use the first two bars of Bach's prelude
-based on @emph{Jesu, meine Freude} which is written for two
-manuals and pedal organ.  You can see these two bars of music
-at the bottom of this section.  The top manual part has two voices,
-the lower and pedal organ one each.  So we need four
-music definitions and one to define the time signature
-and key:
-
-@example
-\version @w{"@version{}"}
-\header @{
-  title = "Jesu, meine Freude"
-  composer = "J S Bach"
-@}
-TimeKey = @{ \time 4/4 \key c \minor @}
-ManualOneVoiceOneMusic = @{s1@}
-ManualOneVoiceTwoMusic = @{s1@}
-ManualTwoMusic = @{s1@}
-PedalOrganMusic = @{s1@}
-
-\score @{
-@}
-@end example
-
-For now we've just used a spacer note, @code{s1},
-instead of the real music.  We'll add that later.
-
-Next let's see what should go in the score block.
-We simply mirror the staff structure we want.
-Organ music is usually written on three staves,
-one for each manual and one for the pedals.  The
-manual staves should be bracketed together, so we
-need to use a PianoStaff for them.  The first
-manual part needs two voices and the second manual
-part just one.
-
-@example
-  \new PianoStaff <<
-    \new Staff = "ManualOne" <<
-      \new Voice @{ \ManualOneVoiceOneMusic @}
-      \new Voice @{ \ManualOneVoiceTwoMusic @}
-    >>  % end ManualOne Staff context
-    \new Staff = "ManualTwo" <<
-      \new Voice @{ \ManualTwoMusic @}
-    >>  % end ManualTwo Staff context
-  >>  % end PianoStaff context
-@end example
-
-Next we need to add a staff for the pedal organ.
-This goes underneath the PianoStaff, but it must
-be simultaneous with it, so we need angle brackets
-around the two.  Missing these out would generate
-an error in the log file.  It's a common mistake
-which you'll make sooner or later!  Try copying
-the final example at the end of this section,
-remove these angle brackets, and compile it to
-see what errors it generates.
-
-@example
-<<  % PianoStaff and Pedal Staff must be simultaneous
-  \new PianoStaff <<
-    \new Staff = "ManualOne" <<
-      \new Voice @{ \ManualOneVoiceOneMusic @}
-      \new Voice @{ \ManualOneVoiceTwoMusic @}
-    >>  % end ManualOne Staff context
-    \new Staff = "ManualTwo" <<
-      \new Voice @{ \ManualTwoMusic @}
-    >>  % end ManualTwo Staff context
-  >>  % end PianoStaff context
-  \new Staff = "PedalOrgan" <<
-    \new Voice @{ \PedalOrganMusic @}
-  >>
->>
-@end example
-
-It is not necessary to use the simultaneous construct
-@code{<< .. >>} for the manual two staff and the pedal organ staff,
-since they contain only one music expression, but it does no harm,
-and always using angle brackets after @code{\new Staff} is a good
-habit to cultivate in case there are multiple voices.  The opposite
-is true for Voices: these should habitually be followed by braces
-@code{@{ .. @}} in case your music is coded in several variables
-which need to run consecutively.
-
-Let's add this structure to the score block, and adjust the indenting.
-We also add the appropriate clefs, ensure stems, ties and slurs in
-each voice on the upper staff point to the right direction with
-@code{\voiceOne} and @code{\voiceTwo}, and enter the time signature
-and key to each staff using our predefined variable, @code{\TimeKey}.
-
-@example
-\score @{
-  <<  % PianoStaff and Pedal Staff must be simultaneous
-    \new PianoStaff <<
-      \new Staff = "ManualOne" <<
-        \TimeKey  % set time signature and key
-        \clef "treble"
-        \new Voice @{ \voiceOne \ManualOneVoiceOneMusic @}
-        \new Voice @{ \voiceTwo \ManualOneVoiceTwoMusic @}
-      >>  % end ManualOne Staff context
-      \new Staff = "ManualTwo" <<
-        \TimeKey
-        \clef "bass"
-        \new Voice @{ \ManualTwoMusic @}
-      >>  % end ManualTwo Staff context
-    >>  % end PianoStaff context
-    \new Staff = "PedalOrgan" <<
-      \TimeKey
-      \clef "bass"
-      \new Voice @{ \PedalOrganMusic @}
-    >>  % end PedalOrgan Staff
-  >>
-@}  % end Score context
-@end example
-
-That completes the structure.  Any three-staff organ music
-will have a similar structure, although the number of voices
-may vary.  All that remains now
-is to add the music, and combine all the parts together.
-
-@lilypond[quote,verbatim,ragged-right,addversion]
-\header {
-  title = "Jesu, meine Freude"
-  composer = "J S Bach"
-}
-TimeKey = { \time 4/4 \key c \minor }
-ManualOneVoiceOneMusic = \relative g' {
-  g4 g f ees | d2 c2 |
-}
-ManualOneVoiceTwoMusic = \relative c' {
-  ees16 d ees8~ ees16 f ees d c8 d~ d c~ |
-  c c4 b8 c8. g16 c b c d |
-}
-ManualTwoMusic = \relative c' {
-  c16 b c8~ c16 b c g a8 g~ g16 g aes ees |
-  f ees f d g aes g f ees d e8~ ees16 f ees d |
-}
-PedalOrganMusic = \relative c {
-  r8 c16 d ees d ees8~ ees16 a, b g c b c8 |
-  r16 g ees f g f g8 c,2 |
-  }
-
-\score {
-  <<  % PianoStaff and Pedal Staff must be simultaneous
-    \new PianoStaff <<
-      \new Staff = "ManualOne" <<
-        \TimeKey  % set time signature and key
-        \clef "treble"
-        \new Voice { \voiceOne \ManualOneVoiceOneMusic }
-        \new Voice { \voiceTwo \ManualOneVoiceTwoMusic }
-      >>  % end ManualOne Staff context
-      \new Staff = "ManualTwo" <<
-        \TimeKey
-        \clef "bass"
-        \new Voice { \ManualTwoMusic }
-      >>  % end ManualTwo Staff context
-    >>  % end PianoStaff context
-    \new Staff = "PedalOrgan" <<
-      \TimeKey
-      \clef "bass"
-      \new Voice { \PedalOrganMusic }
-    >>  % end PedalOrgan Staff context
-  >>
-}  % end Score context
-@end lilypond
-
-