Node: Polyphony, Next: , Previous: Staff notation, Up: Notation manual



Polyphony

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 >>
     }
     

[picture of music]

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  } >>
     

[picture of music]

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:

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

[picture of music]

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

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

[picture of music]

LilyPond also vertically shifts rests that are opposite of a stem:

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

[picture of music]

Predefined commands

\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.

See also

The objects responsible for resolving collisions are NoteCollision and RestCollision. 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.

Bugs

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 8th or a shorter note, and a downstem half note, the 8th note gets the wrong offset.


Footnotes

  1. Polyphonic voices are sometimes called "layers" other notation packages



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

Report errors to <bug-lilypond@gnu.org>.