[ << Retouche de partition ] | [Top][Contents][Index] | [ Modèles >> ] |
[ < Objets hors de la portée ] | [ Up : Objets hors de la portée ] | [ La commande \textLengthOn > ] |
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
.
[ << Retouche de partition ] | [Top][Contents][Index] | [ Modèles >> ] |
[ < Objets hors de la portée ] | [ Up : Objets hors de la portée ] | [ La commande \textLengthOn > ] |