Previous: Explicitly instantiating voices, Up: Polyphony


6.3.5 Collision Resolution

Normally, note heads with a different number of dots are not merged, but when the object property merge-differently-dotted is set in the NoteCollision object, they are merged:

     
     \new Voice << {
       g8 g8
       \override Staff.NoteCollision
         #'merge-differently-dotted = ##t
       g8 g8
     } \\ { g8.[ f16] g8.[ f16] } >>

[image of music]

Similarly, you can merge half note heads with eighth notes, by setting merge-differently-headed:

     
     \new Voice << {
       c8 c4.
       \override Staff.NoteCollision
         #'merge-differently-headed = ##t
     c8 c4. } \\ { c2 c2 } >>

[image of music]

merge-differently-headed and merge-differently-dotted only apply to opposing stem directions (ie. Voice 1 & 2).

LilyPond also vertically shifts rests that are opposite of a stem, for example

     
     \new Voice << c''4 \\ r4 >>

[image of music]

If three or more notes line up in the same column, 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 \shift to the note that should not be merged. In the first measure of following example, merge-differently-headed does not work (the half-note head is solid). In the second measure, \shiftOn is applied to move the top g out of the column, and merge-differently-headed works properly.

     
     \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}
     >>
     <<
       { d'=''2 \shiftOn g2 } \\ 
       { \oneVoice d=''8 c8 r4 e,8 c'8 r4 } \\
       { \voiceFour e,,2 e'2}
     >>

[image of music]

Predefined commands

\oneVoice, \voiceOne, \voiceTwo, \voiceThree, \voiceFour.

\shiftOn, \shiftOnn, \shiftOnnn, \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 \shiftOff, while the inner voices (three and four) have \shiftOn. \shiftOnn and \shiftOnnn define further shift levels.

When LilyPond cannot cope, the force-hshift property of the NoteColumn object and pitched rests can be used to override typesetting decisions.

     
     \relative <<
     {
       <d g>
       <d g>
     } \\ {
       <b f'>
       \once \override NoteColumn #'force-hshift = #1.7
       <b f'>
     } >>

[image of music]

See also

Program reference: the objects responsible for resolving collisions are NoteCollision and RestCollision.

Examples: input/regression/collision-dots.ly, input/regression/collision-head-chords.ly, input/regression/collision-heads.ly, input/regression/collision-mesh.ly, and input/regression/collisions.ly.

Bugs

When using merge-differently-headed with an upstem eighth or a shorter note, and a downstem half note, the eighth note gets the wrong offset.

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 Clusters).


Previous: Explicitly instantiating voices, Up: Polyphony

This page is for LilyPond-2.10.33 (stable-branch).

Report errors to http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs.

Other languages: French.