[ << Tweaking output ] | [Top][Contents][Index] | [ Templates >> ] |
[ < Placement of objects ] | [ Up : Placement of objects ] | [ Within-staff objects > ] |
5.4.1 Automatic behavior
There are some objects in musical notation that belong to the staff and there are other objects that should be placed outside the staff. These are called within-staff objects and outside-staff objects respectively.
Within-staff objects are those that are located on the staff – note heads, stems, accidentals, etc. The positions of these are usually fixed by the music itself – they are vertically positioned on specific lines of the staff or are tied to other objects that are so positioned. Collisions of note heads, stems and accidentals in closely set chords are normally avoided automatically. There are commands and overrides which can modify this automatic behavior, as we shall shortly see.
Objects belonging outside the staff include things such as
rehearsal marks, text and dynamic markings. LilyPond’s rule for
the vertical placement of outside-staff objects is to place them
as close to the staff as possible but not so close that they
collide with any other object. LilyPond uses the
outside-staff-priority
property to determine the order in
which the objects should be placed, as follows.
First, LilyPond places all the within-staff objects.
Then it sorts the outside-staff objects according to their
outside-staff-priority
. The outside-staff objects are
taken one by one, beginning with the object with the lowest
outside-staff-priority
, and placed so that they do not
collide with any objects that have already been placed. That is,
if two outside-staff grobs are competing for the same space, the
one with the lower outside-staff-priority
will be placed
closer to the staff. If two objects have the same
outside-staff-priority
the one encountered first will be
placed closer to the staff.
In the following example all the markup texts have the same priority (since it is not explicitly set). Note that ‘Text3’ is automatically positioned close to the staff again, nestling under ‘Text2’.
c''2^"Text1" c''2^"Text2" | c''2^"Text3" c''2^"Text4" |
Staves are also positioned, by default, as closely together as possible (subject to a minimum separation). If notes project a long way towards an adjacent staff they will force the staves further apart only if an overlap of the notation would otherwise occur. The following example demonstrates this ‘nestling’ of the notes on adjacent staves:
<< \new Staff { \relative { c'4 a, } } \new Staff { \relative { c''''4 a, } } >>
[ << Tweaking output ] | [Top][Contents][Index] | [ Templates >> ] |
[ < Placement of objects ] | [ Up : Placement of objects ] | [ Within-staff objects > ] |