]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/user/simultaneous.itely
Merge branch 'master' into lilypond/translation
[lilypond.git] / Documentation / user / simultaneous.itely
index b2a2ccf2f99412f755a7e115c09a01eaaa71c849..f224fa479ec01e2559aa1b1b94ffc47be099d927 100644 (file)
@@ -6,7 +6,8 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.11.38"
+@c \version "2.11.61"
+
 
 @node Simultaneous notes
 @section Simultaneous notes
@@ -18,8 +19,8 @@ in a piece of music.  Polyphony in LilyPond refers to having more
 than one voice on the same staff.
 
 @menu
-* Single voice::                
-* Multiple voices::             
+* Single voice::
+* Multiple voices::
 @end menu
 
 
@@ -29,27 +30,37 @@ than one voice on the same staff.
 This section discusses simultaneous notes inside the same voice.
 
 @menu
-* Chorded notes::                      
-* Clusters::                    
+* Chorded notes::
+* Simultaneous expressions::
+* Clusters::
 @end menu
 
+
 @node Chorded notes
-@subsubsection Chorded notes
+@unnumberedsubsubsec Chorded notes
 
 @cindex chords
 @cindex brackets, angle
+@cindex angle brackets
+@cindex relative pitch in chords
+
 @funindex <
 @funindex >
 @funindex <...>
 
-A chord is formed by a enclosing a set of pitches between @code{<} and
-@code{>}.  A chord may be followed by a duration and/or a set of
-articulations, just like simple notes:
+A chord is formed by enclosing a set of pitches between @code{<}
+and @code{>}.  A chord may be followed by a duration and/or a set
+of articulations, just like simple notes:
 
 @lilypond[verbatim,quote,relative=1]
 <c e g>2 <c f a>4-> <e g c>-.
 @end lilypond
 
+Relative mode can be used for pitches in chords. The octave of each
+pitch is chosen using the preceding pitch as a reference except in
+the case of the first pitch in a chord: the reference for the first
+pitch is the @emph{first} pitch of the preceding chord.
+
 For more information about chords, see @ref{Chord notation}.
 
 @seealso
@@ -66,24 +77,57 @@ Notation Reference:
 Snippets:
 @rlsr{Simultaneous notes}.
 
-@knownissues
+@node Simultaneous expressions
+@unnumberedsubsubsec Simultaneous expressions
 
-For some reason, music expressions like @code{<< @{ g8 e8 @} a4 >>}
-that should automatically turn into chords, appear split in two
-staves.  To avoid this, use explicit chords instead as in
-@code{<g a>8 <e a>8}.
+One or more music expressions enclosed in double angle brackets are
+taken to be simultaneous.  If the first expression begins with a
+single note or if the whole simultaneous expression appears
+explicitly within a single voice, the whole expression is placed on
+a single staff; otherwise the elements of the simultaneous
+expression are placed on separate staves.
+
+The following examples show simultaneous expressions on one staff:
+
+@lilypond[quote,verbatim,relative=2]
+\new Voice {  % explicit single voice
+  << {a4 b g2} {d4 g c,2} >>
+}
+@end lilypond
+
+@lilypond[quote,verbatim,relative=2]
+% single first note
+a << {a4 b g}  {d4 g c,} >>
+@end lilypond
+
+This can be useful if the simultaneous sections have identical
+rhythms, but attempts to attach notes with different durations
+to the same stem will cause errors.
+
+The following example shows how simultaneous expressions can
+generate multiple staves implicitly:
+
+@lilypond[quote,verbatim,relative=2]
+% no single first note
+<< {a4 b g2}  {d4 g2 c,4} >>
+@end lilypond
+
+Here different rhythms cause no problems.
 
 
 @node Clusters
-@subsubsection Clusters
+@unnumberedsubsubsec Clusters
 
 @cindex cluster
+@cindex note cluster
+
 @funindex \makeClusters
+@funindex makeClusters
 
-A cluster indicates a continuous range of pitches to be played.  They
-can be denoted as the envelope of a set of notes.  They are entered by
-applying the function @code{\makeClusters} to a sequence of chords,
-e.g.,
+A cluster indicates a continuous range of pitches to be played.
+They can be denoted as the envelope of a set of notes.  They are
+entered by applying the function @code{\makeClusters} to a sequence
+of chords, e.g.,
 
 @lilypond[quote,relative=2,verbatim]
 \makeClusters { <g b>2 <c g'> }
@@ -112,8 +156,11 @@ Clusters look good only if they span at least two chords; otherwise
 they appear too narrow.
 
 Clusters do not have a stem and cannot indicate durations by
-themselves.  Separate clusters would need a separating rest between
-them.
+themselves, but the length of the printed cluster is determined by
+the durations of the defining chords.  Separate clusters need a
+separating rest between them.
+
+Clusters do not produce MIDI output.
 
 @node Multiple voices
 @subsection Multiple voices
@@ -122,26 +169,266 @@ This section discusses simultaneous notes in multiple voices or
 multiple staves.
 
 @menu
-* Collision resolution::        
-* Automatic part combining::    
-* Writing music in parallel::   
+* Single-staff polyphony::
+* Voice styles::
+* Collision resolution::
+* Automatic part combining::
+* Writing music in parallel::
 @end menu
 
+
+@node Single-staff polyphony
+@unnumberedsubsubsec Single-staff polyphony
+
+@cindex single-staff polyphony
+@cindex polyphony, single-staff
+@cindex voice
+@cindex lyrics assigned to one voice
+
+@funindex \voiceOne
+@funindex voiceOne
+@funindex \voiceOne ... \voiceFour
+@funindex Voice
+@funindex \oneVoice
+@funindex oneVoice
+
+@strong{@i{Explicitly instantiating voices}}
+
+The basic structure needed to achieve multiple independent
+voices in a single staff is illustrated in the following example:
+
+@lilypond[quote,relative=3,verbatim]
+\new Staff <<
+  \new Voice = "first"
+    { \voiceOne r8 r16 g e8. f16 g8[ c,] f e16 d }
+  \new Voice= "second"
+    { \voiceTwo d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+>>
+@end lilypond
+
+Here, voices are instantiated explicitly and are given names. The
+@code{\voiceOne} ... @code{\voiceFour} commands set up the voices
+so that first and third voices get stems up, second and fourth
+voices get stems down, third and fourth voice note heads are
+horizontally shifted, and rests in the respective voices are
+automatically moved to avoid collisions.  The @code{\oneVoice}
+command returns all the voice settings to the neutral default
+directions.
+
+@strong{@i{Temporary polyphonic passages}}
+
+A temporary polyphonic passage can be created with the following
+construct:
+
+@example
+<< @{ \voiceOne ... @}
+  \new Voice @{ \voiceTwo ... @}
+>> \oneVoice
+@end example
+
+Here, the first expression within a temporary polyphonic passage is
+placed into the @code{Voice} context which was in use immediately
+before the polyphonic passage, and that same @code{Voice} context
+continues after the temporary section.  Other expressions within
+the angle brackets are assigned to distinct temporary voices.
+This allows lyrics to be assigned to one continuing voice before,
+during and after a polyphonic section:
+
+@lilypond[quote, verbatim, relative=2]
+<<
+  \new Voice = "melody" {
+    a4
+    <<
+      {
+        \voiceOne
+        g f
+      }
+      \new Voice {
+        \voiceTwo
+        d2
+      }
+    >>
+    \oneVoice
+    e4
+  }
+  \new Lyrics \lyricsto "melody" {
+  This is my song.
+  }
+>>
+@end lilypond
+
+Here, the @code{\voiceOne} and @code{\voiceTwo} commands are
+required to define the settings of each voice.
+
+@strong{@i{The double backslash construct}}
+
+The @code{<< @{...@} \\ @{...@} >>} construct, where the two (or
+more) expressions are separated by double backslashes, behaves
+differently to the similar construct without the double backslashes:
+@emph{all} the expressions within this contruct are assigned
+to new @code{Voice} contexts.  These new @code{Voice} contexts
+are created implicitly and are given the fixed names @code{"1"},
+@code{"2"}, etc.
+
+The first example could be typeset as follows:
+
+@lilypond[quote,relative=3,verbatim]
+<<
+  { r8 r16 g e8. f16 g8[ c,] f e16 d }
+  \\
+  { d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+>>
+@end lilypond
+
+This syntax can be used where it does not matter that temporary
+voices are created and then discarded.  These implicitly created
+voices are given the settings equivalent to the effect of the
+@code{\voiceOne} ... @code{\voiceFour} commands, in the order in
+which they appear in the code.
+
+In the following example, the intermediate voice has stems up,
+therefore we enter it in the third place, so it becomes voice
+three, which has the stems up as desired.  Spacer rests are
+used to avoid printing doubled rests.
+
+@lilypond[quote,relative=3,verbatim]
+<<
+  { r8 g g  g g f16 ees f8 d }
+  \\
+  { ees,8 r ees r d r d r }
+  \\
+  { d'8 s c s bes s a s }
+>>
+@end lilypond
+
+In all but the simplest works it is advisable to create explicit
+@code{Voice} contexts as explained in @rlearning{Contexts and engravers} and
+@rlearning{Explicitly instantiating voices}.
+
+@strong{@i{Identical rhythms}}
+
+In the special case that we want to typeset parallel pieces of music
+that have the same rhythm, we can combine them into a single
+@code{Voice} context, thus forming chords.  To achieve this, enclose
+them in a simple simultaneous music construct within an explicit voice:
+
+@lilypond[quote,relative=2,verbatim]
+\new Voice <<
+  { e4 f8 d e16 f g8 d4 }
+  { c4 d8 b c16 d e8 b4 }
+>>
+@end lilypond
+
+This method leads to strange beamings and warnings if the pieces of
+music do not have the same rhythm.
+
+@predefined
+
+@code{\voiceOne},
+@code{\voiceTwo},
+@code{\voiceThree},
+@code{\voiceFour},
+@code{\oneVoice}.
+
+@seealso
+
+Learning Manual:
+@rlearning{Voices contain music},
+@rlearning{Explicitly instantiating voices}.
+
+Notation Reference:
+@ref{Percussion staves},
+@ref{Invisible rests}.
+
+Snippets:
+@rlsr{Simultaneous notes}.
+
+
+@node Voice styles
+@unnumberedsubsubsec Voice styles
+
+@cindex voice styles
+@cindex styles, voice
+@cindex coloring voices
+@funindex \voiceOneStyle
+@funindex \voiceTwoStyle
+@funindex \voiceThreeStyle
+@funindex \voiceFourStyle
+@funindex \voiceNeutralStyle
+
+Voices may be given distinct colors and shapes, allowing them to be
+easily identified:
+
+@lilypond[quote,relative=2,verbatim]
+<<
+  { \voiceOneStyle d4 c2 b4 }
+  \\
+  { \voiceTwoStyle e,2 e }
+  \\
+  { \voiceThreeStyle b2. c4 }
+  \\
+  { \voiceFourStyle g'2 g }
+>>
+@end lilypond
+
+The @code{\voiceNeutralstyle} command is used to revert to the
+standard presentation.
+
+@predefined
+
+
+@code{\voiceOneStyle},
+
+@code{\voiceTwoStyle},
+@code{\voiceThreeStyle},
+@code{\voiceFourStyle},
+@code{\voiceNeutralStyle}.
+
+@seealso
+
+Learning Manual:
+@rlearning{I'm hearing Voices},
+@rlearning{Other sources of information}.
+
+Snippets:
+@rlsr{Simultaneous notes}.
+
+
 @node Collision resolution
-@subsubsection Collision resolution
+@unnumberedsubsubsec Collision resolution
 
 @cindex merging notes
 @cindex note collisions
 @cindex collisions
+@cindex shift note
+@cindex multiple voices
+@cindex voices, multiple
+@cindex polyphonic music
+@cindex shifting voices
+@cindex voices, multiple
+@cindex shift rest, automatic
 @funindex \shiftOn
+@funindex shiftOn
 @funindex \shiftOnn
+@funindex shiftOnn
 @funindex \shiftOnnn
+@funindex shiftOnnn
 @funindex \shiftOff
-@cindex shift rest, automatic
-
-Note heads with equal durations are automatically merged, while
-note heads with unequal durations are not merged.  Rests opposite
-a stem are shifted vertically.
+@funindex shiftOff
+@funindex \mergeDifferentlyDottedOn
+@funindex mergeDifferentlyDottedOn
+@funindex \mergeDifferentlyDottedOff
+@funindex mergeDifferentlyDottedOff
+@funindex \mergeDifferentlyHeadedOn
+@funindex mergeDifferentlyHeadedOn
+@funindex \mergeDifferentlyHeadedOff
+@funindex mergeDifferentlyHeadedOff
+
+The note heads of notes in different voices with the same pitch,
+same note head and opposite stem direction are automatically
+merged, but notes with different note heads or the same stem
+direction are not.  Rests opposite a stem in a different voice
+are shifted vertically.
 
 @lilypond[quote,verbatim,relative=2]
 <<
@@ -159,8 +446,8 @@ a stem are shifted vertically.
 >>
 @end lilypond
 
-Note heads with different note heads may be merged, with the exception
-of half-note heads and quarter-note heads:
+Notes with different note heads may be merged, with the
+exception of half-note heads and quarter-note heads:
 
 @lilypond[quote,verbatim,relative=2]
 <<
@@ -199,16 +486,15 @@ Note heads with different dots may be merged:
 >>
 @end lilypond
 
-@cindex shift note
 
-The collision on the second measure happens because
-@code{merge-differently-headed} cannot successfully complete the
-merge when three or more notes line up in the same column -- in
-fact, you will obtain a warning for this reason.  To allow the
-merge to work properly, apply a @code{\shift} to the note that
-should not be merged.  Here, @code{\shiftOn} is applied to move
-the top @code{g} out of the column, and
-@code{merge-differently-headed} works properly.
+The half note and eighth note at the start of the second measure
+are incorrectly merged because @code{\mergeDifferentlyHeadedOn}
+cannot successfully complete the merge when three or more notes
+line up in the same column, and in this case a warning is given.
+To allow the merge to work properly a @code{\shift} must be applied
+to the note that should not be merged.  Here, @code{\shiftOn} is
+applied to move the top @notation{g} out of the column, and
+@code{\mergeDifferentlyHeadedOn} then works properly.
 
 @lilypond[quote,relative=2,verbatim]
 <<
@@ -230,56 +516,28 @@ the top @code{g} out of the column, and
 >>
 @end lilypond
 
-Notes are only merged if they have opposing stem directions (i.e., in
+The @code{\shiftOn}, @code{\shiftOnn}, and @code{\shiftOnnn}
+commands specify the degree to which chords of the current voice
+should be shifted.  The outer voices (normally: voices one and
+two) have @code{\shiftOff}, while the inner voices (three and
+four) have @code{\shiftOn}.  @code{\shiftOnn} and
+@code{\shiftOnnn} define further shift levels.
+
+Notes are only merged if they have opposing stem directions (e.g. in
 @code{Voice} 1 and 2).
 
-@cindex multiple voices
-@cindex polyphonic music
-@cindex shifting voices
 
 @predefined
 
-FIXME: use this first format.
+@code{\mergeDifferentlyDottedOn},
+@code{\mergeDifferentlyDottedOff},
+@code{\mergeDifferentlyHeadedOn},
+@code{\mergeDifferentlyHeadedOff}.
 
-@funindex \oneVoice
-@code{\oneVoice},
-@funindex \voiceOne
-@code{\voiceOne},
-@funindex \voiceTwo
-@code{\voiceTwo},
-@funindex \voiceThree
-@code{\voiceThree},
-@funindex \voiceFour
-@code{\voiceFour}.
-
-@funindex \voiceNeutralStyle
-@funindex \voiceOneStyle
-@funindex \voiceTwoStyle
-@funindex \voiceThreeStyle
-@funindex \voiceFourStyle
-@example
-\voiceNeutralStyle
-\voiceOneStyle
-\voiceTwoStyle
-\voiceThreeStyle
-\voiceFourStyle
-@end example
-
-@funindex \shiftOn
 @code{\shiftOn},
-@funindex \shiftOnn
 @code{\shiftOnn},
-@funindex \shiftOnnn
 @code{\shiftOnnn},
-@funindex \shiftOff
-@code{\shiftOff}: these commands specify the degree to which
-chords of the current voice should be shifted.  The outer voices
-(normally: voices one and two) have @code{\shiftOff}, while the
-inner voices (three and four) have @code{\shiftOn}.
-@code{\shiftOnn} and @code{\shiftOnnn} define further shift
-levels.
-
-FIXME: the above description shoudl go in the main text.
+@code{\shiftOff}.
 
 @snippets
 
@@ -303,23 +561,22 @@ Snippets:
 @rlsr{Simultaneous notes}.
 
 Internals Reference:
-@rinternals{NoteColumn}.
-The objects responsible for resolving collisions
-are
-@rinternals{NoteCollision} and
+@rinternals{NoteColumn},
+@rinternals{NoteCollision},
 @rinternals{RestCollision}.
 
-
 @knownissues
 
-When using @code{merge-differently-headed} with an upstem eighth or a
-shorter note, and a downstem half note, the eighth note stem gets a
-slightly wrong offset because of the different width of the half note
-head symbol.
+When using @code{\mergeDifferentlyHeadedOn} with an upstem eighth
+or a shorter note, and a downstem half note, the eighth note stem
+gets a slightly wrong offset because of the different width of the
+half note head symbol.
 
-@c investigate! Sometimes it works, sometimes not. --FV
-It is not clear in which circumpstances you can succesfully merge
-different note heads that are at the same time differently dotted.
+@ignore
+@c TODO investigate! Sometimes it works, sometimes not. --FV
+The requirements for successfully merging different note heads that
+are at the same time differently dotted are not clear.
+@end ignore
 
 There is no support for chords where the same note occurs with
 different accidentals in the same chord.  In this case, it is
@@ -328,17 +585,20 @@ cluster notation (see @ref{Clusters}).
 
 
 @node Automatic part combining
-@subsubsection Automatic part combining
+@unnumberedsubsubsec Automatic part combining
 
 @cindex automatic part combining
 @cindex part combiner
 @cindex combining parts
+@cindex a due part
+@cindex solo part
 @funindex \partcombine
+@funindex partcombine
 
-Automatic part combining is used to merge two parts of music onto a
-staff.  It is aimed at typesetting orchestral scores.  When the two
-parts are identical for a period of time, only one is shown.  In
-places where the two parts differ, they are typeset as separate
+Automatic part combining is used to merge two parts of music onto
+a staff.  It is aimed at typesetting orchestral scores.  When the
+two parts are identical for a period of time, only one is shown.
+In places where the two parts differ, they are typeset as separate
 voices, and stem directions are set automatically.  Also, solo and
 @notation{a due} parts are identified and marked by default.
 
@@ -348,10 +608,10 @@ The syntax for part combining is:
 \partcombine @var{musicexpr1} @var{musicexpr2}
 @end example
 
-The following example demonstrates the basic functionality of the part
-combiner: putting parts on one staff and setting stem directions and
-polyphony.  The same variables are used for the independent
-parts and the combined staff.
+The following example demonstrates the basic functionality of the
+part combiner: putting parts on one staff and setting stem
+directions and polyphony.  The same variables are used for the
+independent parts and the combined staff.
 
 @lilypond[quote,verbatim]
 instrumentOne = \relative c' {
@@ -382,9 +642,10 @@ specified in both parts.  Stem, slur, and tie directions are set
 automatically, depending whether there is a solo or unison.  When
 needed in polyphony situations, the first part (with context called
 @code{one}) always gets up stems, while the second (called @code{two})
-always gets down stems.  In solo situations, the parts get marked with
-@q{Solo} and @q{Solo II}, respectively.  The unisono (@notation{a due})
-parts are marked by default with the text @qq{a2}.
+always gets down stems.  In solo situations, the first and second
+parts get marked with @q{Solo} and @q{Solo II}, respectively.  The
+unisono (@notation{a due}) parts are marked by default with the text
+@qq{a2}.
 
 Both arguments to @code{\partcombine} will be interpreted as
 @code{Voice} contexts.  If using relative octaves,
@@ -404,30 +665,11 @@ has no effect on the pitches of @var{musicexpr1} and
 
 @snippets
 
-Parts may be merged without printing text:
-
-@lilypond[quote,verbatim]
-\new Staff <<
-  \set Staff.printPartCombineTexts = ##f
-  \partcombine
-    \relative g' { g a( b) r }
-    \relative g' { g r4 r f }
->>
-@end lilypond
-
-The printed text may be changed:
-
-@lilypond[quote,verbatim]
-\new Staff <<
-  \set Score.soloText = #"girl"
-  \set Score.soloIIText = #"boy"
-  \set Score.aDueText = #"together"
-  \partcombine
-    \relative g' { g4 g r r a2 g }
-    \relative g' { r4 r a( b) a2 g }
->>
-@end lilypond
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{combining-two-parts-on-the-same-staff.ly}
 
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{changing-partcombine-texts.ly}
 
 @seealso
 
@@ -441,13 +683,14 @@ Notation Reference:
 Snippets:
 @rlsr{Simultaneous notes}.
 
-
 Internals Reference:
 @rinternals{PartCombineMusic},
 @rinternals{Voice}.
 
 @knownissues
 
+@code{\partcombine} can only accept two voices. 
+
 When @code{printPartCombineTexts} is set, if the two voices play
 the same notes on and off, the part combiner may typeset @code{a2}
 more than once in a measure.
@@ -457,43 +700,54 @@ more than once in a measure.
 @code{\partcombine} cannot be inside @code{\relative}.
 
 Internally, the @code{\partcombine} interprets both arguments as
-@code{Voice}s named @code{one} and @code{two}, and then decides
-when the parts can be combined.  Consequently, if the arguments
-switch to differently named @rinternals{Voice} contexts, the
-events in those will be ignored.
+@code{Voice}s and decides when the parts can be combined.  When they have
+different durations they cannot be combined and are given the names
+@code{one} and @code{two}.  Consequently, if the arguments switch to
+differently named @rinternals{Voice} contexts, the events in those will
+be ignored.  Likewise, partcombining isn't designed to work with lyrics;
+when one of the voices is explicitly named in order to attach lyrics to
+it, the partcombining stops working.
+
+@code{\partcombine} only observes onset times of notes. It cannot
+determine whether a previously started note is playing or not, leading
+to various problems.
 
-@c IIRC in users list someone pointed out more issues. TODO: lookup FV
 
 @node Writing music in parallel
-@subsubsection Writing music in parallel
+@unnumberedsubsubsec Writing music in parallel
 
-@cindex Writing music in parallel
-@cindex Interleaved music
+@cindex writing music in parallel
+@cindex interleaved music
+@cindex parallel music
+@funindex \parallelMusic
 @funindex parallelMusic
 
 Music for multiple parts can be interleaved in input code.  The
 function @code{\parallelMusic} accepts a list with the names of a
 number of variables to be created, and a musical expression.  The
-content of alternate measures from the expression become the value of
-the respective variables, so you can use them afterwards to print the
-music.
+content of alternate measures from the expression become the value
+of the respective variables, so you can use them afterwards to
+print the music.
 
 @warning{Bar checks @code{|} must be used, and the measures must
 be of the same length.}
 
 @lilypond[quote,verbatim]
-\parallelMusic #'(voiceA voiceB) {
+\parallelMusic #'(voiceA voiceB voiceC) {
   % Bar 1
-  r8 g'16[ c''] e''[ g' c'' e''] r8 g'16[ c''] e''[ g' c'' e''] |
-  c'2                               c'2                         |
+  r8 g'16 c'' e'' g' c'' e'' r8 g'16 c'' e'' g' c'' e'' |
+  r16 e'8.~   e'4            r16 e'8.~   e'4            |
+  c'2                        c'2                        |
 
   % Bar 2
-  r8 a'16[ d''] f''[ a' d'' f''] r8 a'16[ d''] f''[ a' d'' f''] |
-  c'2                               c'2                         |
+  r8 a'16 d'' f'' a' d'' f'' r8 a'16 d'' f'' a' d'' f'' |
+  r16 d'8.~   d'4            r16 d'8.~   d'4            |
+  c'2                        c'2                        |
+
 }
 \new StaffGroup <<
-  \new Staff  \voiceA
-  \new Staff  \voiceB
+  \new Staff << \voiceA \\ \voiceB >>
+  \new Staff { \clef bass \voiceC }
 >>
 @end lilypond
 
@@ -504,18 +758,21 @@ note in the input -- in other words, relative notes for
 @code{voiceA} ignore the notes in @code{voiceB}.
 
 @lilypond[quote,verbatim]
-\parallelMusic #'(voiceA voiceB) {
+\parallelMusic #'(voiceA voiceB voiceC) {
   % Bar 1
   r8 g16 c e g, c e r8 g,16 c e g, c e  |
+  r16 e8.~ e4       r16 e8.~  e4        |
   c2                c                   |
 
   % Bar 2
   r8 a,16 d f a, d f r8 a,16 d f a, d f |
+  r16 d8.~  d4       r16 d8.~  d4       |
   c2                 c                  |
+
  }
 \new StaffGroup <<
-  \new Staff \relative c'' \voiceA
-  \new Staff \relative c'  \voiceB
+  \new Staff << \relative c'' \voiceA \\ \relative c' \voiceB >>
+  \new Staff \relative c' { \clef bass \voiceC }
 >>
 @end lilypond