La propriété outside-staff-priority (GNU LilyPond – Manuel d’initiation)

#### La propriété `outside-staff-priority`

Les objets avec la plus petite valeur de la propriété `outside-staff-priority` sont placés au plus près de la portée, tandis que les autres sont écartés autant qu’il faut pour éviter les collisions. La `outside-staff-priority` est définie dans la `grob-interface` ; elle est donc une propriété commune à tous les objets de rendu. Par défaut, elle est réglée sur `#f` pour tous les objets de la portée, et porte une valeur numérique appropriée à chacun des objets extérieurs à la portée, à mesure qu’ils sont créés. Une annexe spécifique recense les différents objets concernés, avec leur valeur par défaut.

Vous noterez au passage certaines particularités quant au nom des objets. En effet, des objets à extension sont automatiquement créés dans le but de pouvoir contrôler le positionnement vertical des extrémités d’un grob qui commencerait et se terminerait à des instants musicaux différents. C’est la raison pour laquelle modifier le `outside-staff-priority` du grob sous-jacent n’aura aucun effet. C’est par exemple le cas lorsque vous modifiez l’alignement d’un objet `Hairpin` à l’aide de `outside-staff-priority` ; puisque le soufflet est associé à un objet `DynamicLineSpanner`, c’est sur celui-ci que doit porter l’effet de `outside-staff-priority`. L’instruction dérogatoire se place au début du bandeau qui constitue une ligne de base susceptible de contenir plusieurs soufflets ou indications de nuance.

Voici un exemple qui montre le placement par défaut de certains d’entre eux.

>     % set details for later TextSpanner
>     \override TextSpanner.bound-details.left.text =
>       \markup { \small \bold Slower }
>     % place dynamics above staff
>     \dynamicUp
>     % start ottava bracket
>     \ottava 1
>     c''4 \startTextSpan
>     % add dynamic text and hairpin
>     c''4\pp\<
>     c''4
>     % add text script
>     c''4^Text |
>     c''4 c''
>     % add dynamic text and terminate hairpin
>     c''4\ff c'' \stopTextSpan |
>     % stop ottava bracket
>     \ottava 0
>     c'4 c' c' c' |

Cet exemple montre comment créer des extensions de texte (text spanners en anglais) – texte avec des longues lignes au-dessus d’un passage musical. L’extension s’étend depuis la commande `\startTextSpan` jusqu’à la commande `\stopTextSpan` et le format de texte est défini par la commande `\override TextSpanner`. Pour de plus amples détails, voir Indication textuelle avec extension.

Il montre aussi comment créer des marques d’octaviation.

Si les valeurs de `outside-staff-priority` par défaut ne donnent pas les résultats escomptés, il suffit de modifier la priorité de l’un de ces objets. Supposons que vous vouliez placer l’indication d’octaviation sous le bandeau de texte, dans l’exemple précédent. Tout ce que nous devons faire, c’est regarder la priorité de `OttavaBracket` dans la Référence des propriétés internes ou dans Valeurs par défaut de `outside-staff-priority`, et la ramener à une valeur plus basse que celle de `TextSpanner`, en gardant à l’esprit que `OttavaBracket` est créé dans le contexte `Staff` :

>     % set details for later text spanner
>     \override TextSpanner.bound-details.left.text =
>       \markup { \small \bold Slower }
>     % place dynamics above staff
>     \dynamicUp
>     % place following ottava bracket below text spanners
>     \once \override Staff.OttavaBracket.outside-staff-priority = 340
>     % start ottava bracket
>     \ottava 1
>     c''4 \startTextSpan
>     % add dynamic text
>     c''4\pp
>     % add dynamic line spanner
>     c''4\<
>     % add text script
>     c''4^Text |
>     c''4 c''
>     % add dynamic text
>     c''4\ff c'' \stopTextSpan |
>     % stop ottava bracket
>     \ottava 0
>     c'4 c' c' c' |

N’oublions pas que certains objets, tels les numéros de mesure, indications métronomiques et marques-repères, sont par défaut attachés au contexte `Score`.

Les liaisons sont intrinsèquement des objets membres de la portée (within-staff objects) bien qu’elles la surplombent lorsque les notes auxquelles elles se rattachent sont relativement hautes. Ceci peut avoir pour conséquence de remonter d’autant les objets externes (outside-staff objects) tels les articulations. La propriété `avoid-slur` de l’articulation en question peut se voir déterminée à `'inside` dans le but de « ramener » cette articulation à l’intérieur de la liaison. Cette propriété `avoid-slur` ne sera toutefois effective que dans la mesure où la `outside-staff-priority` est désactivée (valeur `#f`). Dans le même esprit, il est possible d’affecter une valeur numérique particulière à la propriété `outside-staff-priority` d’une liaison dans le but de regrouper la liaison avec les objets externes. L’exemple suivant illustre ces deux différentes méthodes.

>     \relative c'' {
>       c4( c^\markup { \tiny \sharp } d4.) c8 |
>       c4(
>         \once \override TextScript.avoid-slur = #'inside
>         \once \override TextScript.outside-staff-priority = ##f
>         c4^\markup { \tiny \sharp } d4.) c8 |
>       \once \override Slur.outside-staff-priority = 500
>         c4( c^\markup { \tiny \sharp } d4.) c8 |
>     }

Le fait de changer la `outside-staff-priority` peut aussi servir à contrôler le positionnement vertical des objets individuels, quoique le résultat ne soit pas toujours formidable. Imaginons que nous voulions placer « Text3 » au-dessus de « Text4 » dans l’exemple de la section Comportement automatique, plus haut. Il nous suffit pour cela de regarder dans la Référence des propriétés internes ou dans le tableau plus haut la priorité de `TextScript`, et d’augmenter la priorité de « Text3 » jusqu’à une valeur très haute :

>     c''2^"Text1"
>     c''2^"Text2" |
>     \once \override TextScript.outside-staff-priority = 500
>     c''2^"Text3"
>     c''2^"Text4" |

S’il est vrai que cela place « Text3 » au-dessus de « Text4 », ça le place aussi plus haut que « Text2 » tandis que « Text4 » dégringole. Ce n’est peut-être pas si bien que ça. En fait, ce que nous aimerions faire, c’est placer toutes les annotations à égale distance de la portée. Pour cela, nous avons besoin d’espacer horizontalement les notes pour laisser plus de place au texte. C’est possible grâce à la commande `\textLengthOn`.

#### GNU LilyPond – Manuel d’initiation v2.26.0 (stable-branch).

- 1 Installation
  - 1.1 Installation en mode graphique
  - 1.2 Installation en ligne de commande
- 2 Tutoriel
  - 2.1 Compilation d’un fichier
  - 2.2 Composition d’un fichier source
    - 2.2.1 Notation simple
      - Hauteurs
      - Durées et rythme
      - Silences
      - Métrique
      - Indication de tempo
      - Clefs
      - Tout ensemble
    - 2.2.2 Travail sur les fichiers d’entrée
  - 2.3 Gestion des erreurs
  - 2.4 Bien lire le manuel
    - 2.4.1 Matériel incomplet
    - 2.4.2 Exemples cliquables
    - 2.4.3 Vue d’ensemble des manuels
- 3 Bases de notation musicale
  - 3.1 Notation sur une seule portée
    - 3.1.1 Barre et contrôle de mesure
      - Barre de mesure
      - Contrôle de mesure
    - 3.1.2 Hauteurs et armure
      - Altérations
      - Armures
      - Attention aux armures et aux hauteurs
    - 3.1.3 Liaisons
      - Liaisons de prolongation
      - Liaisons d’articulation
      - Liaisons de phrasé
      - Attention aux types de liaison
    - 3.1.4 Articulations et nuances
      - Articulation
      - Doigté
      - Nuance
    - 3.1.5 Ajout de texte
    - 3.1.6 Barres de ligature automatiques et manuelles
    - 3.1.7 Commandes rythmiques avancées
      - Mesure incomplète
      - N-olet
      - Note d’ornement
  - 3.2 Notes simultanées
    - 3.2.1 Les expressions musicales en clair
      - Analogie avec les expressions mathématiques
      - Expressions musicales simultanées – plusieurs portées
      - Expressions musicales simultanées – une seule portée
    - 3.2.2 Plusieurs portées
    - 3.2.3 Regroupements de portées
    - 3.2.4 Combinaison de notes en accords
    - 3.2.5 Polyphonie sur une portée
  - 3.3 Chansons
    - 3.3.1 Écriture de chants simples
    - 3.3.2 Alignement des paroles sur une mélodie
    - 3.3.3 Paroles pour plusieurs portées
  - 3.4 Dernières précisions
    - 3.4.1 Organisation du code source avec des variables
    - 3.4.2 Ajout de titres
    - 3.4.3 Noms de note absolus
    - 3.4.4 Après le tutoriel
- 4 Concepts fondamentaux
  - 4.1 Organisation des fichiers LilyPond
    - 4.1.1 Introduction à la structure de fichier LilyPond
    - 4.1.2 La partition est une (unique) expression musicale composée
    - 4.1.3 Expressions musicales imbriquées
    - 4.1.4 Structuration de la saisie des notes
    - 4.1.5 Non-imbrication des crochets et liaisons
  - 4.2 Les voix contiennent la musique
    - 4.2.1 J’entends des voix
    - 4.2.2 Instanciation explicite des voix
    - 4.2.3 Voix et paroles
  - 4.3 Contextes et graveurs
    - 4.3.1 Tout savoir sur les contextes
    - 4.3.2 Création d’un contexte
    - 4.3.3 Tout savoir sur les graveurs
    - 4.3.4 Modification des propriétés d’un contexte
    - 4.3.5 Ajout et suppression de graveurs
  - 4.4 Extension des modèles
    - 4.4.1 Soprano et violoncelle
    - 4.4.2 Partition pour chœur à quatre voix mixtes
    - 4.4.3 Écriture d’une partition à partir de zéro
    - 4.4.4 Économie de saisie grâce aux identificateurs et fonctions
    - 4.4.5 Conducteurs et parties
- 5 Retouche de partition
  - 5.1 Retouches élémentaires
    - 5.1.1 Objets et interfaces
    - 5.1.2 Conventions de nommage des objets et propriétés
    - 5.1.3 Méthodes de retouche
      - La commande `\override`
      - La commande `\revert`
      - Le préfixe `\once`
      - Les commandes `\tweak` et `\offset`
      - Le préfixe `\single`
  - 5.2 Le manuel de référence des propriétés internes
    - 5.2.1 Propriétés des objets de rendu
    - 5.2.2 Propriétés listées par interface
    - 5.2.3 Types de propriétés
  - 5.3 Apparence des objets
    - 5.3.1 Visibilité et couleur des objets
      - La propriété `stencil`
      - La propriété `break-visibility`
      - La propriété `transparent`
      - La propriété `color`
    - 5.3.2 Taille des objets
    - 5.3.3 Longueur et épaisseur des objets
  - 5.4 Décalages et alignements
  - 5.5 Positionnement des objets
    - 5.5.1 Comportement automatique
    - 5.5.2 Objets inclus dans la portée
      - La propriété `direction`
      - Doigtés
    - 5.5.3 Objets hors de la portée
      - La propriété `outside-staff-priority`
      - La commande `\textLengthOn`
      - Positionnement des nuances
      - Dimensionnement des objets graphiques
  - 5.6 Espacement vertical
  - 5.7 Collisions d’objets
    - 5.7.1 Déplacement d’objets
    - 5.7.2 Correction des collisions d’objets
      - La propriété `padding`
      - La propriété `right-padding`
      - La propriété `staff-padding`
      - La propriété `self-alignment-X`
      - La propriété `staff-position`
      - La propriété `extra-offset`
      - La propriété `positions`
      - La propriété `force-hshift`
    - 5.7.3 Exemple concret
  - 5.8 Autres retouches
    - 5.8.1 Autres utilisations des retouches
      - Liaison entre plusieurs voix
      - Rendu MIDI d’un point d’orgue
    - 5.8.2 Utilisation de variables dans les retouches
    - 5.8.3 Feuilles de style
    - 5.8.4 Autres sources de documentation
    - 5.8.5 Retouches avancées avec Scheme
- Appendix A Modèles
  - A.1 Gabarits préprogrammés
    - A.1.1 Gabarit pour chœur à quatre voix mixtes
    - A.1.2 Gabarit pour double chœur à quatre voix mixtes
  - A.2 Modèles pour portée unique
    - A.2.1 Notes seules
    - A.2.2 Notes et paroles
    - A.2.3 Notes et accords
    - A.2.4 Notes, paroles et accords
  - A.3 Modèles pour piano
    - A.3.1 Piano seul
    - A.3.2 Chant et accompagnement
    - A.3.3 Piano et paroles entre les portées
  - A.4 Modèles pour quatuor à cordes
    - A.4.1 Quatuor à cordes simple
    - A.4.2 Parties pour quatuor à cordes
  - A.5 Modèles pour ensemble vocal
    - A.5.1 Partition pour chœur SATB
    - A.5.2 Partition pour chœur SATB avec réduction pour piano
    - A.5.3 Partition pour chœur SATB avec alignement des contextes
    - A.5.4 Chœur à quatre voix mixtes sur quatre portées
    - A.5.5 Couplet pour solo et refrain à deux voix
    - A.5.6 Hymnes et cantiques
    - A.5.7 Psalmodie
  - A.6 Orchestre
    - A.6.1 Orchestre, chœur et piano
  - A.7 Exemples de notation ancienne
    - A.7.1 Transcription de musique mensurale
    - A.7.2 Transcription du grégorien
  - A.8 Autres modèles
    - A.8.1 Symboles de jazz
- Appendix B GNU Free Documentation License
- Appendix C Index des commandes et concepts