@node Simultaneous notes
@section Simultaneous notes
+@lilypondfile[quote]{simultaneous-headword.ly}
+
Polyphony in music refers to having more than one voice occurring
in a piece of music. Polyphony in LilyPond refers to having more
than one voice on the same staff.
@subsection Single voice
@menu
-* Chords::
+* Chorded notes::
* Clusters::
@end menu
-@node Chords
-@unnumberedsubsubsec Chords
+@node Chorded notes
+@subsubsection Chorded notes
@cindex Chords
A chord is formed by a enclosing a set of pitches between @code{<}
and @code{>}. A chord may be followed by a duration, and a set of
-articulations, just like simple notes
+articulations, just like simple notes:
@lilypond[verbatim,ragged-right,fragment,quote,relative=1]
<c e g>4 <c>8
For more information about chords, see @ref{Introducing chord
names}.
+@seealso
+
+Music Glossary: @rglos{chord}.
+
+Notation Reference: @ref{Introducing chord names}.
+
+Snippets: @lsrdir{Simultaneous,Simultaneous-notes}.
+
+@knownissues
+
+Music expressions like @code{<< @{ g8 e8 @} a4 >>} are not printed
+accurately. Use @code{<g a>8 <e a>8} instead.
+
+
@node Clusters
-@unnumberedsubsubsec Clusters
+@subsubsection Clusters
@cindex cluster
@seealso
-Program reference: @internalsref{ClusterSpanner},
+Snippets: @lsrdir{Simultaneous,Simultaneous-notes}.
+
+Internals Reference: @internalsref{ClusterSpanner},
@internalsref{ClusterSpannerBeacon},
@internalsref{Cluster_spanner_engraver}.
-Examples: @lsr{contemporary,cluster@/.ly}.
-
-@refbugs
-
-Music expressions like @code{<< @{ g8 e8 @} a4 >>} are not printed
-accurately. Use @code{<g a>8 <e a>8} instead.
+Examples: @c @lsr{contemporary,cluster@/.ly}.
@subsection Multiple voices
@menu
-* Basic polyphony::
-* Explicitly instantiating voices::
-* Collision Resolution::
+* Collision resolution::
* Automatic part combining::
* Writing music in parallel::
@end menu
-@node Basic polyphony
-@unnumberedsubsubsec Basic polyphony
-
-@cindex polyphony
-
-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, separating the voices with
-@code{\\}
-
-@funindex \\
-
-@lilypond[quote,verbatim,fragment]
-\new Staff \relative c' {
- c16 d e f
- <<
- { g4 f e | d2 e2 } \\
- { r8 e4 d c8 ~ | c b16 a b8 g ~ g2 } \\
- { s2. | s4 b4 c2 }
- >>
-}
-@end lilypond
-
-@cindex layers
-
-The separator causes @internalsref{Voice}
-contexts@footnote{Polyphonic voices are sometimes
-called @q{layers} in other notation packages} to be instantiated.
-They bear the names @code{"1"}, @code{"2"}, etc. In each of these
-contexts, vertical direction of slurs, stems, etc., is set
-appropriately.
-
-These voices are all separate from the voice that contains the
-notes just outside the @code{<< \\ >>} construct. This should be
-noted when making changes at the voice level. This also means
-that slurs and ties cannot go into or out of a @code{<< \\ >>}
-construct. Conversely, parallel voices from separate @code{<< \\
->>} constructs on the same staff are the same voice. Here is the
-same example, with different noteheads and colors for each voice.
-Note that the change to the note-head style in the main voice does
-not affect the inside of the @code{<< \\ >>} constructs. Also,
-the change to the second voice in the first @code{<< \\ >>}
-construct is effective in the second @code{<< \\ >>}, and the
-voice is tied across the two constructs.
-
-@cindex note heads, styles
-
-@lilypond[quote,verbatim,fragment]
-\new Staff \relative c' {
- \override NoteHead #'style = #'cross
- \override NoteHead #'color = #red
- c16 d e f
- <<
- { g4 f e } \\
- { \override NoteHead #'style = #'triangle
- \override NoteHead #'color = #blue
- r8 e4 d c8 ~ }
- >> |
- <<
- { d2 e2 } \\
- { c8 b16 a b8 g ~ g2 } \\
- { \override NoteHead #'style = #'slash
- \override NoteHead #'color = #green
- s4 b4 c2 }
- >>
-}
-@end lilypond
-
-Polyphony does not change the relationship of notes within a
-@code{\relative @{ @}} block. Each note is calculated relative to
-the note immediately preceding it.
-
-@example
-\relative @{ noteA << noteB \\ noteC >> noteD @}
-@end example
-
-@code{noteC} is relative to @code{noteB}, not @code{noteA};
-@code{noteD} is relative to @code{noteC}, not @code{noteB} or
-@code{noteA}.
-
-
-@node Explicitly instantiating voices
-@unnumberedsubsubsec Explicitly instantiating voices
-
-@internalsref{Voice} contexts can also be instantiated manually
-inside a @code{<< >>} block to create polyphonic music, using
-@code{\voiceOne}, up to @code{\voiceFour} to assign stem
-directions and a horizontal shift for each part.
-
-Specifically,
-@example
-<< \upper \\ \lower >>
-@end example
-
-@noindent
-is equivalent to
+@node Collision resolution
+@subsubsection Collision resolution
-@example
-<<
- \new Voice = "1" @{ \voiceOne \upper @}
- \new Voice = "2" @{ \voiceTwo \lower @}
->>
-@end example
-
-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. The command
-@code{\oneVoice} will revert back to the normal setting.
-
-An expression that appears directly inside a @code{<< >>} belongs
-to the main voice. This is useful when extra voices appear while
-the main voice is playing. Here is a more correct rendition of
-the example from the previous section. The crossed colored
-noteheads demonstrate that the main melody is now in a single
-voice context.
-
-@lilypond[quote,ragged-right,verbatim]
-\new Staff \relative c' {
- \override NoteHead #'style = #'cross
- \override NoteHead #'color = #red
- c16 d e f
- \voiceOne
- <<
- { g4 f e | d2 e2 }
- \new Voice="1" { \voiceTwo
- r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2
- \oneVoice
- }
- \new Voice { \voiceThree
- s2. | s4 b4 c2
- \oneVoice
- }
- >>
- \oneVoice
-}
-@end lilypond
-
-The correct definition of the voices allows the melody to be
-slurred.
-
-@lilypond[quote,ragged-right,verbatim]
-\new Staff \relative c' {
- c16^( d e f
- \voiceOne
- <<
- { g4 f e | d2 e2) }
- \context Voice="1" { \voiceTwo
- r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2
- \oneVoice
- }
- \new Voice { \voiceThree
- s2. s4 b4 c2
- \oneVoice
- }
- >>
- \oneVoice
-}
-@end lilypond
-
-Avoiding the @code{\\} separator also allows nesting polyphony
-constructs, which in some case might be a more natural way to
-typeset the music.
-
-@lilypond[quote,ragged-right,verbatim]
-\new Staff \relative c' {
- c16^( d e f
- \voiceOne
- <<
- { g4 f e | d2 e2) }
- \context Voice="1" { \voiceTwo
- r8 e4 d c8 ~ |
- <<
- {c8 b16 a b8 g ~ g2}
- \new Voice { \voiceThree
- s4 b4 c2
- \oneVoice
- }
- >>
- \oneVoice
- }
- >>
- \oneVoice
-}
-@end lilypond
-
-In some instances of complex polyphonic music, you may need
-additional voices to avoid collisions between notes. Additional
-voices are added by defining an identifier, as shown below:
-
-@lilypond[quote,verbatim,ragged-right,relative=2]
-voiceFive = #(context-spec-music (make-voice-props-set 4) 'Voice)
-
-\relative c''' <<
- { \voiceOne g4 ~ \stemDown g32[ f( es d c b a b64 )g] } \\
- { \voiceThree b4} \\
- { \voiceFive d,} \\
- { \voiceTwo g,}
->>
-@end lilypond
-
-
-@node Collision Resolution
-@unnumberedsubsubsec Collision Resolution
+@cindex merging notes
+@cindex note collisions
Normally, note heads with a different number of dots are not
merged, but when the object property
@noindent
@code{merge-differently-headed} and
@code{merge-differently-dotted} only apply to opposing stem
-directions (ie. Voice 1 & 2).
+directions (i.e. Voice 1 & 2).
LilyPond also vertically shifts rests that are opposite of a stem,
for example
\new Voice << c''4 \\ r4 >>
@end lilypond
+@cindex shift note
+
If three or more notes line up in the same column,
@code{merge-differently-headed} cannot successfully complete the
merge of the two notes that should be merged. To allow the merge
>>
@end lilypond
+@cindex multiple voices
+@cindex polyphonic music
+@cindex shifting voices
-@refcommands
+In some instances of complex polyphonic music, you may need
+additional voices to avoid collisions between notes. Additional
+voices are added by defining an variable, as shown below:
+
+@lilypond[quote,verbatim,ragged-right,relative=2]
+voiceFive = #(context-spec-music (make-voice-props-set 4) 'Voice)
+
+\relative c''' <<
+ { \voiceOne g4 ~ \stemDown g32[ f( es d c b a b64 )g] } \\
+ { \voiceThree b4} \\
+ { \voiceFive d,} \\
+ { \voiceTwo g,}
+>>
+@end lilypond
+
+
+
+@predefined
@funindex \oneVoice
@code{\oneVoice},
@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
@seealso
-Program reference: the objects responsible for resolving
+Snippets: @lsrdir{Simultaneous,Simultaneous-notes}.
+
+Internals Reference: the objects responsible for resolving
collisions are @internalsref{NoteCollision} and
@internalsref{RestCollision}.
-@refbugs
+@knownissues
When using @code{merge-differently-headed} with an upstem eighth
or a shorter note, and a downstem half note, the eighth note gets
@node Automatic part combining
-@unnumberedsubsubsec Automatic part combining
+@subsubsection Automatic part combining
@cindex automatic part combining
@cindex part combiner
+@cindex combining parts
Automatic part combining is used to merge two parts of music onto
a staff. It is aimed at typesetting orchestral scores. When the
The following example demonstrates the basic functionality of the
part combiner: putting parts on one staff, and setting stem
-directions and polyphony
+directions and polyphony.
@lilypond[quote,verbatim,ragged-right,fragment]
\new Staff \partcombine
down stems and @q{Solo II}.
If you just want the merging parts, and not the textual markings,
-you may set the property @code{printPartCombineTexts} to false
+you may set the property @code{printPartCombineTexts} to false.
@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
\new Staff <<
@seealso
-Program reference: @internalsref{PartCombineMusic}.
+Music Glossary: @rglos{a due}.
-@refbugs
+Snippets: @lsrdir{Simultaneous,Simultaneous-notes}.
-When @code{printPartCombineTexts} is set, when the two voices play
+Internals Reference: @internalsref{PartCombineMusic}, @internalsref{Voice}.
+
+@knownissues
+
+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.
@node Writing music in parallel
-@unnumberedsubsubsec Writing music in parallel
+@subsubsection Writing music in parallel
@cindex Writing music in parallel
@cindex Interleaved music
-Music for multiple parts can be interleaved
+Music for multiple parts can be interleaved:
@lilypond[quote,fragment,verbatim]
\parallelMusic #'(voiceA voiceB) {
- r8 g'16[ c''] e''[ g' c'' e''] r8 g'16[ c''] e''[ g' c'' e''] |
- c'2 c'2 |
- r8 a'16[ d''] f''[ a' d'' f''] r8 a'16[ d''] f''[ a' d'' f''] |
- c'2 c'2 |
+ r8 g'16[ c''] e''[ g' c'' e''] r8 g'16[ c''] e''[ g' c'' e''] |
+ c'2 c'2 |
+ r8 a'16[ d''] f''[ a' d'' f''] r8 a'16[ d''] f''[ a' d'' f''] |
+ c'2 c'2 |
}
\new StaffGroup <<
\new Staff \new Voice \voiceA
>>
@end lilypond
-This works quite well for piano music
+This works quite well for piano music.
+@c It would be nice if the first bar fit onto one 66-char line.
+@c Maybe simplify the example? -gp
@lilypond[quote,verbatim]
music = {
\key c \major
\time 4/4
\parallelMusic #'(voiceA voiceB voiceC voiceD) {
% Bar 1
- r8 g'16[ c''] e''[ g' c'' e''] r8 g'16[ c''] e''[ g' c''
-e''] |
- c'2 c'2 |
- r8 a16[ d'] f'[ a d' f'] r8 a16[ d'] f'[ a d' f'] |
- c2 c2 |
+ r8 g'16[ c''] e''[ g' c'' e'']
+ r8 g'16[ c''] e''[ g' c'' e''] |
+ c'2
+ c'2 |
+ r8 a16[ d'] f'[ a d' f']
+ r8 a16[ d'] f'[ a d' f'] |
+ c2
+ c2 |
% Bar 2
a'8 b' c'' d'' e'' f'' g'' a'' |
}
@end lilypond
+@seealso
+Snippets: @lsrdir{Simultaneous,Simultaneous-notes}