Relative mode can be used for pitches in chords. The first note of
each chord is always relative to the first note of the chord that
-came before it, or in the case where no preceding chord exists; the
+came before it, or in the case where no preceding chord exists, the
pitch of the last note that came before the chord. All remaining notes
in the chord are relative to the note that came before it
@emph{within the same chord}.
@end lilypond
@noindent
-Here, voices are instantiated explicitly and are given names. The
+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
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
+@emph{all} the expressions within this construct 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.
@code{Voice} contexts as explained in @rlearning{Contexts and engravers} and
@rlearning{Explicitly instantiating voices}.
+@strong{@i{Voice order}}
+
+When entering multiple voices in the input file, use the following
+order:
+
+@example
+Voice 1: highest
+Voice 2: lowest
+Voice 3: second highest
+Voice 4: second lowest
+Voice 5: third highest
+Voice 6: third lowest
+etc.
+@end example
+
+Though this may seem counterintuitive, it simplifies the automatic
+layout process. Note that the odd-numbered voices are given
+upstems, and the even-numbered voices are given downstems:
+
+@lilypond[quote,verbatim]
+\new Staff <<
+ \time 2/4
+ { f''2 } % 1: highest
+ \\
+ { c'2 } % 2: lowest
+ \\
+ { d''2 } % 3: second-highest
+ \\
+ { e'2 } % 4: second-lowest
+ \\
+ { b'2 } % 5: third-highest
+ \\
+ { g'2 } % 6: third-lowest
+>>
+@end lilypond
+
@strong{@i{Identical rhythms}}
In the special case that we want to typeset parallel pieces of music
>>
@end lilypond
-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.
+The @code{\shiftOn} command allows (but does not force) the notes
+in a voice to be shifted. When @code{\shiftOn} is applied to a
+voice, a note or chord in that voice is shifted only if its stem
+would otherwise collide with a stem from another voice, and only
+if the colliding stems point in the same direction. The
+@code{\shiftOff} command prevents this type of shifting from
+occuring.
+
+By default, the outer voices (normally voices one and two) have
+@code{\shiftOff} specified, while the inner voices (three and
+above) have @code{\shiftOn} specified. When a shift is applied,
+voices with upstems (odd-numbered voices) are shifted to the
+right, and voices with downstems (even-numbered voices) are
+shifted to the left.
+
+Here is an example to help you visualize how an abbreviated
+polyphonic expression would be expanded internally.
+
+@warning{Note that with three or more voices, the vertical order
+of voices in your input file should not be the same as the
+vertical order of voices on the staff!}
+
+@lilypond[quote,verbatim]
+\new Staff \relative c'' {
+ %% abbreviated entry
+ <<
+ { f2 } % 1: highest
+ \\
+ { g,2 } % 2: lowest
+ \\
+ { d'2 } % 3: upper middle
+ \\
+ { b2 } % 4: lower middle
+ >>
+ %% internal expansion of the above
+ <<
+ \new Voice = "1" { \voiceOne \shiftOff f'2 }
+ \new Voice = "2" { \voiceTwo \shiftOff g,2 }
+ \new Voice = "3" { \voiceThree \shiftOn d'2 } % shifts right
+ \new Voice = "4" { \voiceFour \shiftOn b2 } % shifts left
+ >>
+}
+@end lilypond
+
+Two additional commands, @code{\shiftOnn} and @code{\shiftOnnn}
+provide further shift levels which may be specified temporarily to
+resolve collisions in complex situations -- see
+@rlearning{Real music example}.
Notes are only merged if they have opposing stem directions (as
they have, for example, in voices one and two by default or when
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
+@code{\partcombine} only observes onset times of notes. It cannot
determine whether a previously started note is playing or not, leading
to various problems.