29.1.1 Propriétés d’espacement au sein d’un système
L’espacement entre les portées est géré par deux jeux de propriétés
d’objet graphique (grob). Le premier, associé à l’objet graphique
VerticalAxisGroup, est créé pour toute ligne de portée ou de
non-portée. Le second, associé à l’objet graphique StaffGrouper,
doit être explicitement créé pour un regroupement de portées
particulier. Les propriétés qui leur sont attachées sont abordées en fin
de section.
Le nom de ces propriétés, sauf staff-affinity, suit le schéma
item1-item2-spacing – item1 et
item2 étant les éléments à espacer. Notez bien que
item2 n’est pas forcément placé au-dessous : c’est le cas
pour la propriété nonstaff-relatedstaff-spacing qui spécifie
l’espacement d’une ligne de non-portée alors que sa
staff-affinity a été déterminée à UP.
Toutes ces distances sont mesurées entre les points de
référence10 respectifs des éléments considérés. Le point
de référence d’une portée est le centre vertical du StaffSymbol
– la ligne médiane si line-count est impair, l’interligne médian
si line-count est pair. Quant aux lignes rattachées à des portées
– lignes de non-portée – le tableau suivant présente le point de
référence pour chacune d’elles :
Ligne de non-portée Point de référence ChordNamesligne de base NoteNamesligne de base Lyricsligne de base Dynamicsmi-hauteur du « m » FiguredBassligne de base de l’élément le plus haut FretBoardsligne supérieure
En voici une représentation graphique :
Hormis staff-affinity – propriété attachée au grob
VerticalAxisGroup –, chacune de ces propriétés est enregistrée
sous la forme d’une liste associative dont la structure est identique à
celle des variables du bloc \paper que nous avons examinées au
chapitre Variables d’espacement vertical fluctuant. Les
particularités en matière de modification d’une liste associative font
l’objet d’un chapitre particulier. Les propriétés
des objets graphiques se règlent avec un \override mentionné dans
un bloc \score ou \layout, pas dans le bloc \paper.
L’exemple suivant illustre deux façons de modifier une liste associative. La première déclaration n’agit que sur une seule clé, alors que la seconde redéfinit la propriété dans son intégralité.
\new Staff \with {
\override VerticalAxisGroup
.default-staff-staff-spacing.basic-distance = 10
} { … }
\new Staff \with {
\override VerticalAxisGroup.default-staff-staff-spacing =
#'(('basic-distance . 10)
(minimum-distance . 9)
(padding . 1)
(stretchability . 10))
} { … }
La modification d’un espacement au niveau global se mentionne au sein du
bloc \layout :
\layout {
\context {
\Staff
\override VerticalAxisGroup
.default-staff-staff-spacing.basic-distance = 10
}
}
Les réglages concernant les propriétés d’espacement vertical des objets graphiques sont répertoriées aux chapitres VerticalAxisGroup et StaffGrouper. Les propriétés relatives aux lignes de non-portée sont répertoriées selon la définition de leur contexte dans la Référence des propriétés internes.
Propriétés de l’objet VerticalAxisGroup
Les propriétés de l’objet VerticalAxisGroup s’ajustent à l’aide
d’un \override au niveau d’un contexte Staff (ou son
équivalent).
staff-staff-spacingIl s’agit de la distance entre la portée en cours et la portée qui suit au sein du même regroupement, qu’il y ait ou des lignes de non-portée (
Lyricsou autre entre les deux. Cette propriété ne s’applique pas à la dernière portée d’un système.En tout état de cause, la fonction Scheme
staff-staff-spacingd’unVerticalAxisGroupaffectera les propriétés duStaffGroupersi la portée est incluse dans un regroupement ; elle s’appliquera audefault-staff-staff-spacingen l’absence de regroupement. Les portées peuvent donc s’aligner différemment selon qu’elles sont ou non regroupées. Pour obtenir le même espacement sans tenir compte des éventuels regroupements, cette fonction peut faire place à une complète redéfinition des espacements fluctuants à l’aide de règles dérogatoires comme vu précédemment. Au cas où seulement certaines +valeurs font l’objet d’une dérogation, les valeurs non mentionnées +seront ajustées sur celles dedefault-staff-staff-spacing(si +tant est qu’elles y soient définies).default-staff-staff-spacingIl s’agit de la distance qui s’appliquera par défaut aux portées isolées, à moins que
staff-staff-spacingn’ait été redéfini explicitement par un\override.staff-affinityIl s’agit de la direction –
UP,DOWNouCENTER– que prendra une ligne de non-portée pour aller s’accoler aux portées adjacentes. Si vous lui attribuezCENTER, cette ligne de non-portée ira se placer à équidistance entre les portées qui l’encadrent, tout en tenant compte des éventuels risques de collision et autres contraintes d’espacement. Des lignes de non-portée adjacentes devraient avoir unestaff-affinityallant de haut en bas – autrement dit, pas deUPaprès unDOWN. Une ligne de non-portée en dessous d’un système devrait avoir sastaff-affinitydéfinie àUP. De la même manière, lorsque cette ligne surplombe un système, sastaff-affinitydevrait être définie àDOWN. Prenez garde à la valeur que vous affectez àstaff-affinity: si vous affectez la valeur#fà une ligne de non-portée, cette ligne sera considérée comme étant une portée ; à l’inverse, utiliser la propriétéstaff-affinitypour une portée lui fera perdre cette qualité.nonstaff-relatedstaff-spacingIl s’agit de la distance entre la ligne de non-portée en cours et la portée la plus proche selon la
staff-affinity, à la double condition qu’il n’y ait pas déjà une autre ligne de non-portée et que la valeur destaff-affinitysoitUPouDOWN. Lorsque la valeur destaff-affinityest égale àCENTER, la valeur denonstaff-relatedstaff-spacingservira à centrer la ligne de non-portée entre les deux portées adjacentes même si une autre non-portée est présente (quelque soit le côté). Le positionnement d’une ligne de non-portée dépend donc à la fois des portées qui l’entourent tout comme des autres lignes de non-portée adjacentes. L’affectation d’une faible valeur à la propriétéstretchabilityde l’un de ces types d’espacement l’avantagera ; lui affecter une valeur élevée aura pour conséquence de diminuer l’influence de l’espacement considéré.nonstaff-nonstaff-spacingIl s’agit de la distance entre deux lignes de non-portée selon l’orientation définie par
staff-affinityet dès lors qu’elles ont la même orientation. Bien entendu, ceci ne peut concerner que les valeursUPetDOWNdestaff-affinity.nonstaff-unrelatedstaff-spacingIl s’agit de la distance entre une ligne de non-portée et la portée à l’opposé de l’orientation adoptée, à la double condition qu’il n’y ait pas déjà une autre ligne de non-portée et que la valeur de
staff-affinitysoitUPouDOWN. Cette propriété trouve toute sa légitimité pour décaler une ligne deLyricsde la portée à laquelle elle ne correspond pas.
Propriétés de l’objet StaffGrouper
Les propriétés de l’objet StaffGrouper s’ajustent à l’aide d’un
\override au niveau d’un contexte StaffGroup (ou son
équivalent).
staff-staff-spacingIl s’agit de la distance entre deux portées consécutives d’un même système. La propriété
staff-staff-spacingde l’objetVerticalAxisGroupd’une portée en particulier peut se redéfinir à l’aide de règles dérogatoires.staffgroup-staff-spacingIl s’agit de la distance entre la dernière portée d’un regroupement et la portée suivante, au sein d’un même système, y compris lorsqu’une ou plusieurs lignes de non-portée (tel
Lyrics) s’insèrent entre les deux. Cette propriété ne concerne pas la dernière portée d’un système. Dans le cas où la propriétéstaff-staff-spacingd’une portée du regroupement a été ajustée au niveau de son propreVerticalAxisGroup, cette dernière aura préséance.
Voir aussi
Manuel de notation : Modification de listes associatives, Variables d’espacement vertical fluctuant.
Fichiers d’initialisation : ly/engraver-init.ly, scm/define-grobs.scm.
Référence des propriétés internes : Contexts, VerticalAxisGroup, StaffGrouper.
Footnotes
(10)
C’est une formulation hasardeuse. Pour les
contextes, le positionnement des objets sur l’axe horizontal est calculé
par l’algorithme de LilyPond (à partir d’objets PaperColumn entre
autres), ce qui signifie que la seule information alors pertinente est
la position verticale. En d’autres termes, le « point » de référence
d’un contexte est le positionnement vertical sur lequel les autres
grobs s’alignent.
![[image of music]](../5f/lily-3e307792.png)