The easiest way to enter fragments with more than one voice on a staff
is to split chords using the separator \\
. You can use it for
small, short-lived voices or for single chords
\context Staff \relative c'' { c4 << { f d e } \\ { b c2 } >> c4 << g' \\ b, \\ f' \\ d >> }
The separator causes Voice contexts1
to be instantiated. They bear the names "1"
, "2"
, etc. In
each of these contexts, vertical direction of slurs, stems, etc. is set
appropriately.
This can also be done by instantiating Voice contexts
by hand, and using \voiceOne
, up to \voiceFour
to assign
a stem directions and horizontal shift for each part
\relative c'' \context Staff << \new Voice { \voiceOne cis2 b } \new Voice { \voiceThree b4 ais ~ ais4 gis4 } \new Voice { \voiceTwo fis4~ fis4 f ~ f } >>
The command \oneVoice
will revert back to the normal setting.
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
\context Voice << { g8 g8 \override Staff.NoteCollision #'merge-differently-dotted = ##t g8 g8 } \\ { g8.[ f16] g8.[ f16] } >>
Similarly, you can merge half note heads with eighth notes, by setting
merge-differently-headed
\context Voice << { c8 c4. \override Staff.NoteCollision #'merge-differently-headed = ##t c8 c4. } \\ { c2 c2 } >>
LilyPond also vertically shifts rests that are opposite of a stem
\context Voice << c''4 \\ r4 >>
\oneVoice
,
\voiceOne
,
\voiceTwo
,
\voiceThree
,
\voiceFour
.
The following commands specify in what chords of the current voice
should be shifted: the outer voice has \shiftOff
, and the inner
voices have \shiftOn
, \shiftOnn
, etc.
\shiftOn
,
\shiftOnn
,
\shiftOnnn
,
\shiftOff
.
Program reference: the objects responsible for resolving collisions are NoteCollision and RestCollision.
Examples: See also example files 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.
Resolving collisions is a intricate subject, and only a few situations
are handled. When LilyPond cannot cope, the force-hshift
property of the NoteColumn object and pitched rests can
be used to override typesetting decisions.
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).
Read comments on this page, or
add one.
This page is for LilyPond-2.2.6 (stable-branch). |