[ << Retouche de partition ] | [Top][Contents][Index] | [ Modèles >> ] |
[ < Collisions d’objets ] | [ Up : Collisions d’objets ] | [ Correction des collisions d’objets > ] |
5.7.1 Déplacement d’objets
Aussi surprenant que cela puisse paraître, LilyPond n’est pas parfait. Certains éléments sur la partition peuvent se chevaucher, ce qui est regrettable mais, le plus souvent, facile à corriger. En général, quand on déplace des objets, c’est pour des raisons de lisibilité ou d’esthétique – ils rendraient mieux avec un peu plus ou un peu moins d’espace autour d’eux.
Il y a trois façons de résoudre les problèmes de chevauchement. Il est préférable de les aborder dans l’ordre suivant :
- L’orientation d’un objet qui en chevauche un autre peut être changée grâce aux commandes prédéfinies dont la liste a été donnée plus haut à propos des objets de portée ( see Objets inclus dans la portée). Les queues de note, les liaisons de phrasé et de prolongation, les crochets, les nuances et les n-olets peuvent facilement être repositionnés de cette manière. En contrepartie, vous n’avez le choix qu’entre deux positions, sans personnalisation possible.
- Les propriétés d’objet, auxquelles LilyPond a recours pour
positionner les objets, sont modifiables avec
\override
. Il y a deux avantages à changer ces propriétés : (a) d’autres objets pourront être déplacés automatiquement si nécessaire pour faire de la place et (b) la même retouche peut s’appliquer à toutes les occurrences du même type d’objet. Ces propriétés sont :-
direction
Ce point a déjà été traité en détails – see Objets inclus dans la portée.
-
padding
,right-padding
,staff-padding
Au moment de positionner un objet, la valeur de sa propriété
padding
détermine l’espace à laisser libre entre celui-ci et le coin le plus proche de l’objet à côté duquel il est placé. Vous remarquerez que c’est la valeurpadding
de l’objet à placer qui compte ; la valeurpadding
de l’objet déjà placé est ignorée. Les espaces libres déterminés parpadding
s’appliquent à tous les objets associés à laside-position-interface
.Le positionnement de groupes d’altérations est contrôlé par
right-padding
, et non pluspadding
. Cette propriété appartient à l’objetAccidentalPlacement
qui, vous le remarquerez, prend place dans le contexte Staff. Dans le processus de composition, les têtes de notes sont disposées en premier, puis les altérations, s’il y en a, sont ajoutées à gauche des têtes de note suivant la propriétéright-padding
qui détermine l’espacement par rapport aux têtes de note. C’est pourquoi seule la propriétéright-padding
de l’objetAccidentalPlacement
joue sur le positionnement des altérations.La propriété
staff-padding
est très proche de la propriétépadding
:padding
contrôle l’espace minimum entre un objet qui accepte laside-position-interface
et l’objet le plus proche (généralement une note ou une ligne de portée) ;staff-padding
ne s’applique qu’aux objets qui sont toujours placés au-dehors de la portée – il contrôle l’espace minimum à insérer entre la portée et l’objet extérieur. Attention :staff-padding
concerne les objets positionnés par rapport à la portée et n’a aucun effet sur les objets qui sont positionnés par rapport à une note ; tout aménagement qui lui serait apporté ne provoquera pas d’erreur, mais sera ignoré.Pour trouver quelle propriété
padding
employer pour l’objet que vous cherchez à repositionner, il vous faut consulter les propriétés de l’objet dans la Référence des propriétés internes. Prenez garde que les propriétéspadding
ne sont pas forcément traitées dans l’objet en question ; il faut alors regarder les objets qui semblent s’en rapprocher.Toutes les valeurs
padding
sont exprimées en espace de portée. Pour la plupart des objets, la valeur par défaut est aux alentours de 1,0 et parfois moins (cela dépend de chaque objet). Il est possible de la modifier lorsqu’on a besoin d’un espace vide plus grand (ou plus petit). -
self-alignment-X
Cette propriété sert à aligner les objets sur la gauche, sur la droite ou à les centrer par rapport au point de référence des objets parents. Elle peut être utilisée avec tous les objets qui acceptent la
self-alignment-interface
. Il s’agit, en général, des objets qui contiennent du texte. Les valeurs admises sontLEFT
,RIGHT
etCENTER
. On peut aussi attribuer à la place une valeur numérique entre-1
et+1
, où-1
signifie alignement sur la gauche,+1
alignement sur la droite, et les nombres intermédiaires déplacent progressivement le texte de la gauche vers la droite. Des valeurs numériques supérieures à1
sont également admises pour déplacer le texte encore plus loin vers la gauche, ou des valeurs inférieures à-1
pour déplacer le texte encore plus loin vers la droite. Un écart de1
en valeur correspond à un déplacement de la moitié de la longueur du texte. -
extra-spacing-width
Cette propriété est utilisée pour tous les objets qui acceptent la
item-interface
. Elle reçoit deux nombres, le premier étant ajouté au bord gauche et le second au bord droit. Des nombres négatifs déplacent le coin vers la gauche, des nombres positifs vers la droite, si bien que pour élargir un objet, le premier nombre doit être négatif et le second positif. Attention : tous les objets n’acceptent pas forcément les deux nombres. Par exemple, l’objetAccidental
ne retient que le premier nombre (coin gauche). -
staff-position
Cette propriété est attachée à la
staff-symbol-referencer-interface
, qui s’applique aux objets positionnés par rapport à la portée. Elle indique, en demi-espace de portée, la position verticale des objets par rapport à la ligne médiane de la portée. C’est bien pratique pour résoudre des problèmes de collision entre des objets comme les silences valant mesure entière, les liaisons et les notes de différentes voix. -
horizontal-shift
Au sein d’une même voix, toutes les notes intervenant au même instant musical sont regroupées dans un empilement (une colonne) et est créé un objet
NoteColumn
afin de contrôler le positionnement horizontal de ce groupe de notes – voir « Empilement de notes » dans Instanciation explicite des voix. Si, et seulement si deux ou plusieurs empilements au sein d’un même contexte de portée ont une orientation de hampe identique et se produisent au même instant musical, les valeurs de leurs propriétéshorizontal-shift
permettront de les ordonner, les empilements de rang supérieur étant progressivement décalés pour éviter les chevauchements des têtes. Cette propriété est déterminée par les commandes\voiceXXX
et peut se voir aménagée par une commande\override
ou, plus habituellemnt, par les commandes\shiftOn
. Notez bien que cette propriété ne fait qu’affecter un rang aux empilements pour leur décalage ; elle ne détermine en rien la magnitude du décalage, qui sera augmentera progressivement et selon un pas proprotionnel à la largeur des têtes de chaque rang. Le pas, généralement de la moitié de la largeur d’une tête, peut aller jusqu’à la pleine largeur de tête en cas de groupes resserrés. -
force-hshift
La propriété
force-hshift
appartient aux grobsNoteColumn
(en réalité à lanote-column-interface
). Le fait de la modifier permet de déplacer un empilement dans le cas de chevauchement d’empilements. Notez bien qu’elle sera sans effet en l’absence de chevauchement. Elle s’exprime en unité appropriée aux colonnes de notes, à savoir la largeur des têtes de note de la première voix. Son utilisation est réservée à des situations complexes dans lesquelles les commandes habituelles\shiftOn
(see Instanciation explicite des voix) ne suffisent plus à résoudre les conflits. Elle est alors préférable à l’utilisation de la propriétéextra-offset
, dans la mesure où on n’a pas besoin d’exprimer la distance en espace de portée et où le fait de déplacer les notes à l’intérieur ou à l’extérieur d’uneNoteColumn
affecte d’autres actions comme les fusions de notes.
-
- Pour terminer, quand toutes les autres méthodes ont échoué, il est
possible de repositionner verticalement les objets à la main par rapport
à la ligne médiane de la portée, ou en les déplaçant à une distance
donnée vers une nouvelle position. Les inconvénients sont qu’il faut
individuellement, pour chaque objet, trouver les valeurs correctes de
repositionnement souvent par tâtonnement et que, puisque le mouvement
est opéré après que LilyPond a placé tous les autres objets, c’est à
l’utilisateur de résoudre tous les problèmes de collision qui pourraient
survenir. Et le pire avec cette méthode est que, le jour où la musique
est modifiée, il faut de nouveau rechercher les valeurs de
repositionnement. Les propriétés à utiliser pour ce type de
repositionnement manuel sont :
-
extra-offset
Cette propriété s’applique à tout objet acceptant la
grob-interface
. Elle reçoit une paire de nombres qui indiquent le déplacement supplémentaire dans le sens horizontal et vertical. Des nombres négatifs déplacent l’objet vers la gauche ou vers le bas. L’unité utilisée est l’espace de portée. Le déplacement supplémentaire intervient une fois que la composition des objets est achevée, si bien qu’un objet peut être repositionné à n’importe quel endroit sans perturber quoi que ce soit. -
positions
Cette propriété est très utile pour ajuster manuellement l’inclinaison et la hauteur des barres de ligature, des liaisons et des n-olets. Elle est suivie de deux nombres qui donnent la position des extrémités gauche et droite des barres, liaisons, etc. par rapport à la ligne médiane de la portée. L’unité de référence est l’intervalle de lignes de portée. Attention toutefois au fait que les liaisons et phrasés ne peuvent pas être repositionnés n’importe où. LilyPond commence par dresser la liste des emplacements possibles pour les liaisons et choisit par défaut la liaison qui « semble la meilleure ». Si la propriété
positions
a été retouchée, la liaison la plus proche de la position demandée sera retenue dans la liste.
-
Il est possible qu’un objet ne dispose pas de toutes ces propriétés. Il est donc nécessaire de consulter la RPI pour vérifier quelles sont les propriétés disponibles pour l’objet en question.
Voici une liste d’objets les plus couramment impliqués dans les collisions, avec le nom de l’objet à consulter dans la RPI afin de trouver les propriétés à retoucher pour obtenir un déplacement.
Type d’objet Nom d’objet Articulations, par ex. ‘->’ Script
Barres de ligature Beam
Doigté Fingering
Liaisons de phrasé Slur
Liaisons de prolongation Tie
N-olets TupletBracket
Nuances (verticalement) DynamicLineSpanner
Nuances (horizontalement) DynamicText
Reprises / marques de texte RehearsalMark
Texte, par ex. ‘^"texte"’ TextScript
[ << Retouche de partition ] | [Top][Contents][Index] | [ Modèles >> ] |
[ < Collisions d’objets ] | [ Up : Collisions d’objets ] | [ Correction des collisions d’objets > ] |