Espacement entre éléments adjacents non musicaux
Au sein d’un empilement non musical, les éléments sont disposés dans un
ordre spécifique. Par exemple, si l’on considère le jeu d’éléments de
l’image ci-dessous, l’ordonnancement par défaut placera d’abord le signe
de respiration, puis la clef, la barre de mesure, les altérations
d’annulation et l’armure, et enfin la métrique – ceci est contrôlé par
la propriété BreakAlignment.break-align-orders
.
\relative { \key g \minor g'1 \breathe \clef alto \time 6/8 \key a \major aes4. }
La distance entre deux éléments successifs d’un même empilement non
musical est contrôlée par la valeur de la propriété space-alist
de celui de gauche. space-alist
prend la forme d’une liste
associative mettant en correspondance les éléments non musicaux
autorisant la survenue d’un saut avec des paires
(style-d-espacement . valeur)
. Le type d’élément
non musical est caractérisé par sa propiété
break-align-symbol
. Les possibilités standard sont listées
dans break-alignment-interface, et les styles d’espacement
dans break-aligned-interface. Parmi les options
disponibles, seules extra-space
et minimum-space
sont
pertinentes en matière de retouche de l’espacement entre des éléments
non musicaux. Elles se distinguent par le fait que extra-space
mesure l’espacement en partant de la droite du premier objet, alors que
minimum-space
compte dès la gauche du premier objet. L’un des
moyens d’éloigner la barre de mesure de la clef est donc le suivant :
\relative { \key g \minor g'1 \override Staff.Clef.space-alist.staff-bar = #'(extra-space . 4) \breathe \clef alto \time 6/8 \key a \major aes4. }
Les réglages de space-alist
, qui ne se limitent pas aux styles
d’espacement que nous venons de voir, permettent aussi d’apporter des
dérogations à l’espacement entre différents empilements. Cette sorte
d’espacement est néanmoins flexible et ne dépend pas uniquement des
types d’objet concernés mais aussi de leur galbe. Des méthodes
spécifiques à ce cas de figure sont abordées dans la section suivante.
Morceaux choisis
Séparation entre altérations annulées et nouvelle armure
Les altérations supprimées lors d’un changement de tonalité sont par
défaut accolées à la nouvelle armure. Ce comportement peut s’adapter
grâce à la propriété break-align-orders
de l’objet
BreakAlignment
.
La valeur de break-align-orders
est constituée d’un vecteur à
trois composantes listant l’ordre des éléments à l’occasion d’une
rupture. Chaque composante liste l’ordre par défaut des éléments selon
qu’ils intervennent en fin, en cours, et au début d’une ligne. Seule la
deuxième liste nous intéresse ici,
Si l’on se réfère à la référence des propriétés internes à propos de
l’objet break-align-orders
, l’ordre du deuxième élément est :
... staff-bar key-cancellation key-signature ...
C’est ce que nous voulons modifier, en déplaçant key-cancellation
avant staff-bar
. Nous nous appuyons sur la fonction
grob-transformer
qui nous donne accès au vecteur original en tant
que second argument de la fonction labmda, ici appelé orig (nous
n’avons pas besoin du premier argument grob). Nous retournons un
nouveau vecteur dont les premier et dernier éléments restent inchangés.
Pour l’élément du milieu, nous supprimons key-cancellation
de la
liste puis le réinsérons avant staff-bar
.
#(define (insert-before where what lst) (cond ((null? lst) ; If the list is empty, (list what)) ; return a single-element list. ((eq? where (car lst)) ; If we find symbol `where`, (cons what lst)) ; insert `what` before curr. position. (else ; Otherwise keep building the list by (cons (car lst) ; adding the current element and ; recursing with the next element. (insert-before where what (cdr lst)))))) cancellationFirst = \override Score.BreakAlignment.break-align-orders = #(grob-transformer 'break-align-orders (lambda (grob orig) (let* ((middle (vector-ref orig 1)) (middle (delq 'key-cancellation middle)) (middle (insert-before 'staff-bar 'key-cancellation middle))) (vector ;; end of line (vector-ref orig 0) ;; middle of line middle ;; beginning of line (vector-ref orig 2))))) music = { \key es \major d'1 \bar "||" \key a \major d'1 } { <>^\markup "default" \music } { <>^\markup "cancellation first" \cancellationFirst \music } \paper { tagline = ##f }
Voir aussi
Manuel de notation :
Utilisation de break-aligned-interface
.
Manuel d’extension : Listes associatives (alists).
Référence des propriétés internes : Break_align_engraver, BreakAlignGroup, BreakAlignment, break-alignable-interface, break-aligned-interface, break-alignment-interface.