lilypond-learning: Automatic behavior
4.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’.
c2^"Text1"
c2^"Text2" |
c2^"Text3"
c2^"Text4" |
[image src="" alt="[image of music]" text="image of music" ]
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' { c4 a, }
}
\new Staff {
\relative c'''' { c4 a, }
}
>>
[image src="" alt="[image of music]" text="image of music" ]