GNU LilyPond – Manuel de notation: 4.4.3 Résolution des collisions verticales

### 4.4.3 Résolution des collisions verticales

Vous savez de manière intuitive qu’un certain nombre d’objets en matière de notation musicale appartiennent à la portée, et que d’autres se placent en dehors de la portée. Entre autres objets externes, nous avons les marques repères, les textes et les nuances ; nous les appellerons « objets extérieurs à la portée ». La règle adoptée par LilyPond pour positionner verticalement ces objets extérieurs consiste à les placer au plus près de la portée tout en prenant garde d’éviter qu’il y ait chevauchement.

LilyPond utilise la propriété `outside-staff-priority` afin de déterminer si un objet est ou non un objet extérieur à la portée : lorsque la valeur de `outside-staff-priority` est numérique, il s’agit d’un objet extérieur à la portée. De plus, la propriété `outside-staff-priority` indique à LilyPond l’ordre dans lequel ces objets doivent être disposés.

Tout d’abord, LilyPond dispose tous les objets qui ne sont pas externes. Les objets extérieurs à la portée sont alors triés selon l’ordre croissant de leur `outside-staff-priority`. Enfin, LilyPond prend chacun des ces objets et les positionne de telle sorte qu’il n’entrent pas en collision avec ceux qui on déjà été placés. Autrement dit, lorsque deux objets devraient se placer au même endroit, celui dont la `outside-staff-priority` est la plus faible sera disposé au plus près de la portée.

Une liste des `outside-staff-priorities` est disponible à la rubrique La propriété outside-staff-priority.

>     \relative c'' {
>       c4_"Text"\pp
>       r2.
>       \once \override TextScript.outside-staff-priority = #1
>       c4_"Text"\pp % this time the text will be closer to the staff
>       r2.
>       % by setting outside-staff-priority to a non-number,
>       % we disable the automatic collision avoidance
>       \once \override TextScript.outside-staff-priority = ##f
>       \once \override DynamicLineSpanner.outside-staff-priority = ##f
>       c4_"Text"\pp % now they will collide
>     }

Le décalage vertical entre des objets extérieurs à la portée se contrôle par la propriété `outside-staff-padding`.

>     \relative {
>       \once \override TextScript.outside-staff-padding = #0
>       a'4-"outside-staff-padding = #0"
>       \once \override TextScript.outside-staff-padding = #3
>       d-"outside-staff-padding = #3"
>       c-"outside-staff-padding par défaut"
>       b-"outside-staff-padding par défaut"
>       R1
>     }

Par défaut, les objets extérieurs à la portée sont positionnés en évitant les collisions horizontales avec des objets précédemment positionnés. Ceci peut cependant générer des situations où des objets se trouvent horizontalement trop proches. Comme l’illustre l’exemple suivant, la propriété `outside-staff-horizontal-padding` permet d’accroître l’espace horizontal requis et repoussera verticalement un objet pour éviter qu’il ne soit trop proche d’éventuelles lignes supplémentaires.

>     \relative {
>       c''4^"Word" c c''2
>       R1
>       \once \override TextScript.outside-staff-horizontal-padding = #1
>       c,,4^"Word" c c''2
>     }

#### Voir aussi

Morceaux choisis : Espacements.

#### LilyPond — Manuel de notation v2.22.2 (branche stable).