@code{>}. A chord may be followed by a duration and/or a set of
articulations, just like simple notes:
-@lilypond[verbatim,ragged-right,fragment,quote,relative=1]
+@lilypond[verbatim,quote,relative=1]
<c e g>2 <c f a>4-> <e g c>-.
@end lilypond
applying the function @code{\makeClusters} to a sequence of chords,
e.g.,
-@lilypond[quote,ragged-right,relative=2,fragment,verbatim]
+@lilypond[quote,relative=2,verbatim]
\makeClusters { <g b>2 <c g'> }
@end lilypond
@rinternals{ClusterSpannerBeacon},
@rinternals{Cluster_spanner_engraver}.
-@c Examples: @rlsr{contemporary,cluster@/.ly}.
-
@knownissues
Clusters only look good if they span at least two chords; otherwise
@cindex merging notes
@cindex note collisions
+@cindex collisions
+@funindex \shiftOn
+@funindex \shiftOnn
+@funindex \shiftOnnn
+@funindex \shiftOff
+@cindex shift rest, automatic
-Normally, note heads with a different number of dots are not
-merged, but when the object property
-@code{merge-differently-dotted} is set in the
-@rinternals{NoteCollision} object, they are merged:
-
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
-\new Voice << {
- g8 g8
- \override Staff.NoteCollision
- #'merge-differently-dotted = ##t
- g8 g8
-} \\ { g8.[ f16] g8.[ f16] } >>
+Note heads with equal durations are automatically merged, while
+note heads with unequal durations are not merged. Rests opposite
+a stem are shifted vertically.
+
+@lilypond[quote,verbatim,relative=2]
+<<
+ {
+ c8 d e d c d c4
+ g'2 fis
+ } \\ {
+ c2 c8. b16 c4
+ e,2 r
+ } \\ {
+ \oneVoice
+ s1
+ e8 a b c d2
+ }
+>>
@end lilypond
-Similarly, you can merge half note heads with eighth notes, by
-setting @code{merge-differently-headed}:
+Note heads with different note heads may be merged, with the exception
+of half-note heads and quarter-note heads:
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
-\new Voice << {
- c8 c4.
- \override Staff.NoteCollision
- #'merge-differently-headed = ##t
-c8 c4. } \\ { c2 c2 } >>
+@lilypond[quote,verbatim,relative=2]
+<<
+ {
+ \override Staff.NoteCollision #'merge-differently-headed = ##t
+ c8 d e d c d c4
+ g'2 fis
+ } \\ {
+ c2 c8. b16 c4
+ e,2 r
+ } \\ {
+ \oneVoice
+ s1
+ e8 a b c d2
+ }
+>>
@end lilypond
-@noindent
-@code{merge-differently-headed} and
-@code{merge-differently-dotted} only apply to opposing stem
-directions (i.e. Voice 1 & 2).
-
-LilyPond also vertically shifts rests that are opposite of a stem,
-for example
+Note heads with different dots may be merged:
-@lilypond[quote,ragged-right,fragment,verbatim]
-\new Voice << c''4 \\ r4 >>
+@lilypond[quote,relative=2,verbatim]
+<<
+ {
+ \override Staff.NoteCollision #'merge-differently-headed = ##t
+ \override Staff.NoteCollision #'merge-differently-dotted = ##t
+ c8 d e d c d c4
+ g'2 fis
+ } \\ {
+ c2 c8. b16 c4
+ e,2 r
+ } \\ {
+ \oneVoice
+ s1
+ e8 a b c d2
+ }
+>>
@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
-to work properly, apply a @code{\shift} to the note that should
-not be merged. In the first measure of following example,
-@code{merge-differently-headed} does not work (the half-note head
-is solid). In the second measure, @code{\shiftOn} is applied to
-move the top @code{g} out of the column, and
-@code{merge-differently-headed} works properly.
-
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-\override Staff.NoteCollision #'merge-differently-headed = ##t
-<<
- { d=''2 g2 } \\
- { \oneVoice d=''8 c8 r4 e,8 c'8 r4 } \\
- { \voiceFour e,,2 e'2}
->>
+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.
+
+@lilypond[quote,relative=2,verbatim]
<<
- { d'=''2 \shiftOn g2 } \\
- { \oneVoice d=''8 c8 r4 e,8 c'8 r4 } \\
- { \voiceFour e,,2 e'2}
+ {
+ \override Staff.NoteCollision #'merge-differently-headed = ##t
+ \override Staff.NoteCollision #'merge-differently-dotted = ##t
+ c8 d e d c d c4
+ \shiftOn
+ g'2 fis
+ } \\ {
+ c2 c8. b16 c4
+ e,2 r
+ } \\ {
+ \oneVoice
+ s1
+ e8 a b c d2
+ }
+
>>
@end lilypond
+Notes are only merged if they have opposing stem directions (i.e., in
+@code{Voice} 1 and 2).
+
@cindex multiple voices
@cindex polyphonic music
@cindex shifting voices
additional voices to avoid collisions between notes. Additional
voices are added by defining an variable, as shown below:
-@lilypond[quote,verbatim,ragged-right]
+@lilypond[quote,verbatim]
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,}
+\relative c'''
+<<
+ { \voiceOne g2. ~ \stemDown g32[ f( es d c b a b64) g] } \\
+ { \voiceThree b4 } \\
+ { \voiceFive d, } \\
+ { \voiceTwo g, }
>>
@end lilypond
-
@predefined
@funindex \oneVoice
@funindex \voiceFour
@code{\voiceFour}.
+@c undocumented?: --FV
@funindex \voiceNeutralStyle
@funindex \voiceOneStyle
@funindex \voiceTwoStyle
@funindex \shiftOff
@code{\shiftOff}: these commands specify the degree to which
chords of the current voice should be shifted. The outer voices
-(normally: voice one and two) have @code{\shiftOff}, while the
+(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.
When LilyPond cannot cope, the @code{force-hshift} property of the
-@rinternals{NoteColumn} object and pitched rests can be used to
+@code{NoteColumn} object and pitched rests can be used to
override typesetting decisions.
-@lilypond[quote,verbatim,ragged-right]
-\relative <<
-{
- <d g>
- <d g>
-} \\ {
- <b f'>
- \once \override NoteColumn #'force-hshift = #1.7
- <b f'>
-} >>
+@lilypond[quote,verbatim,relative=1]
+<<
+ { <d g>2
+ <d g> }
+ \\
+ { <b f'>2
+ \once \override NoteColumn #'force-hshift = #1.7
+ <b f'> }
+>>
@end lilypond
@seealso
+Music Glossary:
+@rglos{polyphony}.
+
+Learning Manual:
+@rlearning{Multiple notes at once},
+@rlearning{Voices contain music},
+@rlearning{Collisions of objects}.
+
Snippets:
@rlsr{Simultaneous notes}.
-Internals Reference: the objects responsible for resolving collisions
+Internals Reference:
+@rinternals{NoteColumn}.
+The objects responsible for resolving collisions
are
@rinternals{NoteCollision} and
@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 gets
-the wrong offset.
+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.
+
+@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.
There is no support for clusters where the same note occurs with
different accidentals in the same chord. In this case, it is
recommended to use enharmonic transcription, or to use special
cluster notation (see @ref{Clusters}).
+
@node Automatic part combining
@subsubsection Automatic part combining
polyphony. The same variables are used for the independent
parts and the combined staff.
-@lilypond[quote,verbatim,ragged-right]
+@lilypond[quote,verbatim]
instrumentOne = \relative c' {
c4 d e f
R1
Parts may be merged without printing text:
-@lilypond[quote,verbatim,ragged-right]
+@lilypond[quote,verbatim]
\new Staff <<
\set Staff.printPartCombineTexts = ##f
\partcombine
The printed text may be changed:
-@lilypond[quote,verbatim,ragged-right]
+@lilypond[quote,verbatim]
\new Staff <<
\set Score.soloText = #"girl"
\set Score.soloIIText = #"boy"
@warning{Bar checks @code{|} must be used, and the measures must
be of the same length.}
-@lilypond[quote,fragment,verbatim]
+@lilypond[quote,verbatim]
\parallelMusic #'(voiceA voiceB) {
% Bar 1
r8 g'16[ c''] e''[ g' c'' e''] r8 g'16[ c''] e''[ g' c'' e''] |
note in the input -- in other words, relative notes for
@code{voiceA} ignore the notes in @code{voiceB}.
-@lilypond[quote,fragment,verbatim]
+@lilypond[quote,verbatim]
\parallelMusic #'(voiceA voiceB) {
% Bar 1
r8 g16 c e g, c e r8 g,16 c e g, c e |
}
@end lilypond
-
@seealso
Learning Manual: