1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
3 Translation of GIT committish: 7343fa0420aefbc1f55c516a01d3879bd1474451
5 When revising a translation, copy the HEAD committish of the
6 version that you are working on. For details, see the Contributors'
7 Guide, node Updating translation committishes..
12 @c Translators: Valentin Villenave, Nicolas Klutchnikoff, Damien Heurtebise
13 @c Translation checkers: Jean-Charles Malahieude, John Mandereau
14 @c Translation status: post-GDP
16 @node Retouche de partition
17 @chapter Retouche de partition
18 @translationof Tweaking output
20 Ce chapitre indique comment modifier le résultat obtenu.
21 LilyPond offre de nombreuses possibilités de réglages, permettant
22 théoriquement de modifier chaque élément de votre partition.
25 * Retouches élémentaires::
26 * Le manuel des références internes::
27 * Apparence des objets::
28 * Positionnement des objets::
29 * Collisions d'objets::
33 @node Retouches élémentaires
34 @section Retouches élémentaires
35 @translationof Tweaking basics
38 * Introduction aux retouches::
39 * Objets et interfaces::
40 * Conventions de nommage des objets et propriétés::
41 * Méthodes de retouche::
44 @node Introduction aux retouches
45 @subsection Introduction aux retouches
46 @translationof Introduction to tweaks
48 LilyPond regroupe sous le terme de @qq{retouches} (@emph{tweaks} en
49 anglais) les différents moyens dont dispose l'utilisateur pour
50 intervenir sur l'interprétation du fichier d'entrée et pour modifier
51 l'apparence du fichier de sortie. Certaines retouches sont très
52 simples à mettre en œuvre ; d'autres sont plus complexes. Mais
53 à elles toutes, elles permettent d'obtenir tout ce qu'on veut en matière
56 Dans ce chapitre, nous traitons des concepts de base nécessaires
57 pour comprendre l'art de la retouche. Puis nous présentons de
58 nombreuses commandes déjà prêtes, qu'il suffit de recopier pour
59 obtenir un résultat identique dans vos partitions ; nous en profitons
60 pour expliquer comment ces commandes ont été construites, si bien
61 que vous pouvez apprendre par la même occasion à développer
62 vos propres retouches.
64 Avant de vous lancer dans ce chapitre, il peut être utile de revoir la
65 section @ref{Contextes et graveurs}, dans la mesure où les contextes,
66 graveurs et autres propriétés qui y sont décrits, sont indispensables
67 pour comprendre et construire les retouches.
69 @node Objets et interfaces
70 @subsection Objets et interfaces
71 @translationof Objects and interfaces
78 @cindex propriétés des objets
79 @cindex objet, propriétés
80 @cindex objet de rendu
81 @cindex rendu, objets de
83 Toute retouche implique que l'on modifie les opérations internes
84 et les structures du programme LilyPond. Nous allons donc, pour
85 commencer, présenter certains termes qui servent à décrire ces
86 opérations internes et ces structures.
88 Le terme d'@qq{Objet} est un terme générique qui fait référence à
89 une multitude de structures internes mises en place par LilyPond
90 durant la compilation d'un fichier d'entrée. Ainsi, quand une
91 commande du type @code{\new Staff} apparaît, un nouvel objet
92 du type @code{Staff} est créé. Cet objet @code{Staff} contient
93 alors toutes les propriétés associées à cette portée, par exemple son
94 nom et son armure, ainsi que le détail des graveurs qui ont été
95 désignés pour fonctionner dans ce contexte de portée.
96 Certains objets peuvent contenir les propriétés de tous les autres
97 contextes, comme les objets @code{Voice}, les objets @code{Score},
98 les objets @code{Lyrics} ; d'autres se rapportent à tous les éléments de
99 notation, comme les barres de mesure, les liaisons, les nuances, etc.
100 Chaque objet dispose de son propre échantillon de valeurs pour le
101 réglage des propriétés.
103 Certains types d'objet portent des noms spécifiques. Les objets qui se
104 rapportent à des éléments de notation sur le fichier de sortie, comme les
105 notes, les hampes, les liaisons de phrasé ou de prolongation, les doigtés,
106 les clefs, etc. sont appelés @qq{Objets de rendu} ; ils sont aussi connus
107 sous le nom d'@qq{Objets graphiques} (en anglais : @emph{Graphical
108 objects} ou @emph{Grobs} pour faire court). Ce sont bien des objets au
109 sens générique ci-dessus, et, en tant que tels, ils reçoivent des
110 propriétés qui leur sont associées, comme leur position, leur taille,
113 Certains objets de rendu, comme les liaisons de phrasé, les soufflets
114 de crescendo, les marques d'octaviation et beaucoup d'autres @emph{grobs},
115 ont pour particularité de ne pas se situer à un seul et unique endroit
116 -- ils ont un point de départ, un point d'arrivée, et éventuellement
117 d'autres propriétés relatives à leur forme. Ces objets avec une forme
118 étendue sont appelés des bandeaux (@emph{Spanners} en anglais).
120 Il reste à expliquer ce que sont les @qq{interfaces}. De nombreux objets,
121 qui peuvent être très différents les uns des autres, ont pour point commun
122 de devoir être compilés simultanément. Par exemple, tous les
123 @emph{grobs} ont une couleur, une taille, une position, etc., et toutes
124 ces propriétés sont compilées simultanément durant l'interprétation du
125 fichier d'entrée par LilyPond. Pour alléger ces opérations internes,
126 ces actions et propriétés communes sont regroupées en un objet appelé
127 @code{grob-interface}. Il existe beaucoup d'autres regroupements de
128 propriétés communes dans le genre de celui-ci, chacun portant un nom qui
129 se termine par @code{interface}. En tout, on en compte plus d'une
130 centaine. Nous verrons plus loin en quoi c'est intéressant et utile
133 Ainsi s'achève le tour des principaux termes relatifs aux objets et
134 que nous serons amenés à utiliser dans ce chapitre.
136 @node Conventions de nommage des objets et propriétés
137 @subsection Conventions de nommage des objets et propriétés
138 @translationof Naming conventions of objects and properties
140 @cindex conventions de nommage des objets
141 @cindex conventions de nommage des propriétés
142 @cindex objets, conventions de nommage des
143 @cindex propriétés, conventions de nommage des
145 Nous avons eu un aperçu, dans @ref{Contextes et graveurs}, de
146 la façon de nommer les objets. Voici maintenant une liste de
147 référence des types d'objets et de propriétés les plus courants,
148 avec leurs conventions de nommage et quelques exemples
149 de cas concrets. La lettre @var{A} représente n'importe quel
150 caractère alphabétique majuscule, et les lettres @var{aaa}
151 un nombre indéterminé de caractères alphabétiques minuscules.
152 Les autres caractères sont à prendre tels qu'ils se présentent.
154 @multitable @columnfractions .33 .33 .33
155 @headitem Type d'objet/propriété
156 @tab Convention de nommage
159 @tab Aaaa ou AaaaAaaaAaaa
160 @tab Staff, GrandStaff
161 @item Objets de rendu
162 @tab Aaaa ou AaaaAaaaAaaa
165 @tab Aaaa_aaa_engraver
166 @tab Clef_engraver, Note_heads_engraver
168 @tab aaa-aaa-interface
169 @tab grob-interface, break-aligned-interface
170 @item Propriétés de contexte
171 @tab aaa ou aaaAaaaAaaa
172 @tab alignAboveContext, skipBars
173 @item Propriétés d'objet de rendu
174 @tab aaa ou aaa-aaa-aaa
175 @tab direction, beam-thickness
178 Comme nous le verrons bientôt, les propriétés des différents
179 types d'objet sont modifiées par des commandes différentes, si bien
180 qu'il est bon de savoir reconnaître le type d'un objet en fonction du nom
183 @node Méthodes de retouche
184 @subsection Méthodes de retouche
185 @translationof Tweaking methods
187 @cindex retouches, méthodologie
188 @cindex méthodes de retouche
190 @strong{La commande \override}
192 @cindex override, commande
193 @cindex override, syntaxe
198 Dans @ref{Modification des propriétés d'un contexte} et dans
199 @ref{Ajout et suppression de graveurs}, nous avons déjà rencontré les
200 commandes @code{\set} et @code{\with}, qui servent à changer les
201 propriétés des @strong{contextes} et à supprimer ou ajouter des
202 @strong{graveurs}. Voici maintenant d'autres commandes plus
205 La commande pour changer les propriétés des @strong{objets de rendu}
206 est @code{\override}. Du fait que cette commande modifie en profondeur
207 les propriétés internes de LilyPond, sa syntaxe n'est pas aussi simple que
208 pour les commandes vues précédemment. Elle a besoin de savoir avec
209 précision quelle est la propriété à modifier, pour quel objet et dans
210 quel contexte, et quelle doit être sa nouvelle valeur. Voyons de quoi
213 La syntaxe générale de cette commande est :
216 \override @var{Contexte}.@var{ObjetDeRendu} #'@var{propriété-rendu} = #@var{valeur}
220 Elle attribue à la propriété appelée @var{propriété-rendu}, associée à
221 l'objet @var{ObjetDeRendu}, appartenant lui-même au contexte
222 @var{Contexte}, une valeur @var{valeur}.
224 Le contexte @var{Contexte} peut être omis (c'est généralement
225 le cas) quand il n'y a pas d'ambiguïté et qu'il s'agit d'un contexte
226 de très bas niveau, comme @code{Voice}, @code{ChordNames}
227 ou @code{Lyrics}. Dans les exemples qui suivent, le contexte sera
228 très souvent omis. Nous verrons plus tard dans quelles
229 circonstances il doit impérativement être indiqué.
231 Les sections ci-dessous traitent largement des propriétés et de leurs
232 valeurs mais, pour illustrer la mise en forme et l'utilisation de ces
233 commandes, nous nous limiterons à n'employer que quelques propriétés et
234 valeurs simples, facilement compréhensibles.
236 Nous ne parlerons dans l'immédiat ni du @code{#'}, qui précède
237 toujours la propriété, ni du @code{#}, qui précède toujours la
238 valeur. Ces deux éléments doivent obligatoirement être
239 présents sous cette forme. Voici la commande la plus fréquente
240 pour faire des retouches, et pratiquement tout le reste de ce
241 chapitre aura pour but montrer, à travers des exemples, comment
242 l'utiliser. L'exemple ci-dessous change la couleur des têtes de
245 @cindex couleur,exemple d'utilisation de la propriété
246 @cindex NoteHead, exemple de dérogation
248 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
250 \override NoteHead #'color = #red
252 \override NoteHead #'color = #green
256 @strong{La commande \revert}
258 @cindex revert, commande
263 Une fois qu'elle a été modifiée, la propriété conserve sa nouvelle valeur
264 jusqu'à ce qu'elle soit à nouveau modifiée ou qu'elle rencontre la
265 commande @code{\revert}. La commande @code{\revert} obéit à
266 la syntaxe ci-dessous et ramène la valeur de la propriété à sa valeur
267 d'origine. Attention : dans le cas où plusieurs @code{\override} ont
268 été employés, il ne s'agit pas de la valeur précédente mais bien de la
272 \revert @var{Contexte}.@var{ObjetDeRendu} #'@var{propriété-de-rendu}
275 Tout comme pour la commande @code{\override}, la mention du
276 @var{Contexte} est souvent facultative. Elle sera omise dans de
277 nombreux exemples ci-dessous. Voici un exemple qui ramène la
278 couleur des deux dernières notes à leur valeur par défaut :
280 @cindex couleur,exemple d'utilisation de la propriété
281 @cindex NoteHead, exemple de dérogation
283 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
285 \override NoteHead #'color = #red
287 \override NoteHead #'color = #green
289 \revert NoteHead #'color
293 @strong{Le préfixe \once}
298 Les commandes @code{\override} et @code{\set} peuvent supporter
299 toutes les deux le préfixe @code{\once}. Celui-ci a pour fonction de
300 n'appliquer la commande @code{\override} ou @code{\set} qu'à
301 l'instant musical en cours, avant que la propriété ne reprenne
302 sa valeur par défaut. Toujours à partir du même exemple, il est
303 possible de ne changer la couleur que d'une seule note :
305 @cindex couleur,exemple d'utilisation de la propriété
306 @cindex NoteHead, exemple de dérogation
308 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
310 \once \override NoteHead #'color = #red
312 \once \override NoteHead #'color = #green
316 @strong{La commande \overrideProperty}
318 @cindex overrideProperty, commande
320 @funindex \overrideProperty
321 @funindex overrideProperty
323 Il existe une autre forme de commande @code{\override},
324 @code{\overrideProperty}, qui est parfois utile. Nous la mentionnons
325 ici par souci d'exhaustivité ; pour le détail, voir
326 @ruser{Retouches complexes}.
328 @c Maybe explain in a later iteration -td
330 @strong{La commande \tweak}
332 @cindex tweak, commande
337 La dernière commande disponible pour les retouches est
338 @code{\tweak}. Elle sert à changer les propriétés d'objets qui
339 surviennent simultanément dans la musique, comme par exemple les
340 notes d'un accord. La commande @code{\override} modifierait toutes
341 les notes de l'accord, tandis que @code{\tweak} permet de ne modifier
342 que l'élément suivant dans la chaîne de saisie.
344 Voici un exemple. Supposons que nous voulions changer la taille de
345 la tête de note du milieu (le mi) dans un accord de do majeur. Voyons
346 d'abord ce que donnerait @code{\once \override} :
348 @cindex font-size, exemple d'utilisation de la propriété
349 @cindex NoteHead, exemple de dérogation
351 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
353 \once \override NoteHead #'font-size = #-3
358 Nous voyons que @code{\override} modifie @emph{toutes} les têtes
359 de notes de l'accord, car toutes les notes de l'accord surviennent au
360 même @emph{instant musical} et que la fonction de @code{\once}
361 est de faire porter la modification sur tous les objets du type spécifié
362 qui surviennent au même instant musical, comme le fait la commande
363 @code{\override} elle-même.
365 La commande @code{\tweak} opère différemment. Elle agit
366 sur l'élément immédiatement suivant dans la chaîne de saisie. Elle ne
367 fonctionne toutefois que sur des objets créés directement à partir de
368 la chaîne de saisie, c'est-à-dire essentiellement des têtes de notes et
369 des articulations ; des objets comme les hampes ou les
370 altérations accidentelles sont créés ultérieurement et ne peuvent
371 être retouchés de cette manière. En outre, quand la retouche porte
372 sur une tête de note, celle-ci @emph{doit} appartenir à un accord,
373 c'est-à-dire être comprise à l'intérieur de chevrons gauche/droite. Pour
374 retoucher une note isolée, il faut donc placer la commande
375 @code{\tweak} avec la note à l'intérieur des chevrons gauche/droite.
377 Pour reprendre notre exemple, la taille de la note du milieu d'un
378 accord peut être modifiée de cette manière :
380 @cindex font-size, exemple d'utilisation de la propriété
381 @cindex @code{\tweak}, exemple
383 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
385 <c \tweak #'font-size #-3 e g>4
388 Vous noterez que la syntaxe de @code{\tweak} est différente de
389 celle de la commande @code{\override}. Ni le contexte,
390 ni l'objet n'ont besoin d'être spécifiés ; au contraire, cela
391 produirait une erreur si on le faisait. Tous deux sont sous-entendus
392 par l'élément suivant dans la chaîne de saisie. La syntaxe générale
393 de la commande @code{\tweak} est donc, tout simplement :
396 \tweak #'@var{propriété-de-rendu} = #@var{valeur}
399 La commande @code{\tweak} est aussi utilisée quand on veut, dans
400 une série d'articulations, n'en modifier qu'une seule. Ainsi :
402 @cindex couleur, exemple d'utilisation de la propriété
403 @cindex @code{\tweak}, exemple
405 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
407 -\tweak #'color #red ^Red
408 -\tweak #'color #green _Green
412 Attention : la commande @code{\tweak} doit être précédée d'une
413 marque d'articulation, comme si elle-même était une articulation.
415 @cindex nolets imbriqués
416 @cindex triolets imbriqués
417 @cindex crochet de nolet
418 @cindex nolet, crochet
419 @cindex triolet, crochet
421 @funindex TupletBracket
423 Quand plusieurs nolets sont imbriqués et commencent au même instant
424 musical, c'est encore la commande @code{\tweak} qui est utilisée pour
425 changer l'apparence de l'un d'entre eux. Dans l'exemple suivant, le
426 long crochet de nolet et le premier des trois crochets courts commencent
427 au même instant musical ; une commande @code{\override} s'appliquerait
428 donc à la fois aux deux. En revanche, @code{\tweak} permet
429 de les dissocier. La première commande @code{\tweak} indique que
430 le long crochet doit être placé au-dessus des notes, et la seconde
431 indique que le coefficient de nolet doit être imprimé en rouge sur le
432 premier crochet de triolet court.
434 @cindex @code{\tweak}, exemple
435 @cindex direction, exemple d'utilisation de la propriété
436 @cindex couleur, exemple d'utilisation de la propriété
438 @lilypond[quote,ragged-right,verbatim,fragment,relative=2]
439 \tweak #'direction #up
442 \times 2/3 { c8[ c8 c8] }
443 \times 2/3 { c8[ c8 c8] }
444 \times 2/3 { c8[ c8 c8] }
448 Si les nolets imbriqués ne commencent pas au même moment,
449 leur apparence peut alors être modifiée de la façon habituelle,
450 avec la commande @code{\override} :
452 @cindex texte, exemple d'utilisation de la propriété
453 @cindex tuplet-number, exemple de fonction
454 @cindex transparence, exemple d'utilisation de la propriété
455 @cindex TupletNumber, exemple de dérogation
457 @c NOTE Tuplet brackets collide if notes are high on staff
459 @lilypond[quote,ragged-right,verbatim,fragment,relative=1]
460 \times 2/3 { c8[ c c]}
461 \once \override TupletNumber
462 #'text = #tuplet-number::calc-fraction-text
466 \once \override TupletNumber #'transparent = ##t
467 \times 2/3 { c8[ c c] }
468 \times 2/3 { c8[ c c]}
474 @ruser{La commande d'affinage (@emph{tweak})}.
477 @node Le manuel des références internes
478 @section Le manuel des références internes
479 @translationof The Internals Reference manual
481 @cindex Références internes
484 * Propriétés des objets de rendu::
485 * Propriétés listées par interface::
486 * Types de propriétés::
489 @node Propriétés des objets de rendu
490 @subsection Propriétés des objets de rendu
491 @translationof Properties of layout objects
493 @cindex propriétés des objets de rendu
494 @cindex propriétés des objets graphiques (grobs)
495 @cindex grobs, propriétés
496 @cindex objets de rendu, propriétés
497 @cindex Manuel des références internes
499 Imaginons que votre partition contienne une liaison trop fine à votre
500 goût et que vous vouliez la rendre plus épaisse. Comment vous y
501 prendre ? Vous êtes convaincu, avec tout ce qui a été dit sur la
502 souplesse de LilyPond, qu'une telle retouche est réalisable et
503 vous vous dites qu'elle fera sans doute intervenir la commande
504 @code{\override}. Mais existe-t-il une propriété lourde qui s'applique
505 à une liaison et, dans l'affirmative, comment faire pour la modifier ?
506 C'est là qu'intervient la Référence des propriétés internes.
507 Elle contient toutes les informations dont vous avez besoin pour
508 construire n'importe quelle commande @code{\override}.
510 Avant de nous plonger dans la Référence des propriétés
511 internes, un mot d'avertissement. Il s'agit d'un document de
512 @strong{références}, de sorte qu'il ne contient pas ou peu
513 d'explications : son but est de présenter les informations de
514 façon précise et concise. Cela peut paraître décourageant
515 à première vue. Pas d'inquiétude ! Les conseils et les explications
516 fournis ici vous permettent de retrouver par vous-même les
517 informations dans la Référence des propriétés internes. Il
518 suffit d'un peu de pratique.
520 @cindex override, exemple
521 @cindex dérogation, exemple
522 @cindex Références internes, exemple d'utilisation
523 @cindex @code{\addlyrics} -- exemple
525 Prenons un exemple concret tiré d'un morceau de musique connu :
527 @lilypond[quote,verbatim,relative=2]
532 g[( e]) e d[( f]) a |
536 The man who feels love's sweet e -- mo -- tion
541 Admettons que nous voulions rendre les traits de liaison plus épais.
542 Est-ce possible ? Une liaison est assurément un objet de rendu, si bien
543 que la question est @qq{Existe-t-il une propriété attachée aux liaisons
544 et qui en contrôle l'épaisseur ? } Pour y répondre, nous consultons la
545 Référence des propriétés internes (ou RPI pour faire court).
547 Vous trouverez sur le site de LilyPond @uref{http://lilypond.org} la
548 RPI correspondant à votre version du programme. Allez sur la page
549 Documentation et cliquez sur Référence des propriétés internes.
550 Pour l'apprentissage, mieux vaut utiliser la version HTML standard,
551 et non la @qq{page unique en anglais} ou le PDF. Durant la lecture
552 des prochains paragraphes, il vous est conseillé de vous y reporter
553 réellement afin que les explications prennent tout leur sens.
555 En dessous du bandeau d'en-tête figurent cinq liens. Cliquez sur le lien
556 vers le @emph{Backend}, où se trouvent les informations sur les
557 objets de rendu. En dessous du titre @strong{Backend}, choisissez
558 alors le lien vers @emph{Tous les objets de rendu}. La page qui s'ouvre
559 énumère, dans l'ordre alphabétique, tous les objets utilisés dans votre
560 version de LilyPond. Cliquez sur Liaisons (@emph{Slurs} en anglais),
561 et les propriétés des liaisons apparaîtront.
563 Il existe un autre moyen de trouver cette page, à partir du Manuel de
564 notation. Une des pages qui traitent des liaisons contient un lien vers
565 la Référence des propriétés internes, qui mène directement à cette
566 page. Mais lorsque vous connaissez le nom de l'objet à retoucher, le
567 plus simple est de consulter la RPI.
569 La page de la RPI sur les liaisons commence par préciser que les objets
570 Liaison sont créés par le graveur Slur_engraver. Vient ensuite la liste
571 des réglages standard. Attention : ceux-ci @strong{ne suivent pas} l'ordre
572 alphabétique. Il faut donc les parcourir en entier pour trouver la propriété
573 susceptible de contrôler l'épaisseur des traits de liaison.
576 @code{thickness} (number)
578 Épaisseur de ligne, généralement mesurée en @code{line-thickness}
581 Voilà qui semble approprié pour changer l'épaisseur (@emph{thickness} en
582 anglais). On apprend que la valeur de @code{thickness}
583 est un simple nombre (@emph{number}), qu'elle est par défaut définie
584 à 1,2 et que l'unité de mesure est fixée par une autre propriété
585 appelée @code{line-thickness}.
587 Comme il a été indiqué, on ne trouve que peu, voire pas du tout
588 d'explication dans la RPI, mais nous en savons assez pour essayer
589 de changer l'épaisseur de la liaison. Comme nous l'avons vu, le
590 nom de l'objet est @code{Slur}, le nom de la propriété à changer
591 est @code{thickness} et la nouvelle valeur sera un nombre supérieur
592 à @code{1.2} si l'on veut augmenter l'épaisseur du trait.
594 Pour construire la commande @code{\override}, il suffit donc de
595 remplacer les valeurs que nous avons trouvées en guise de noms, en
596 laissant de côté le contexte. Commençons par une valeur très élevée
597 dans un premier temps, pour nous assurer que la commande fonctionne.
601 \override Slur #'thickness = #5.0
604 N'oublions pas le @code{#'} qui doit précéder le nom de la propriété et
605 le @code{#} qui doit précéder la nouvelle valeur.
607 La dernière question est : @qq{Où placer cette commande ?}
608 Tant qu'on n'est pas sûr de soi, la meilleure réponse est @qq{À
609 l'intérieur de l'expression musicale, avant la première liaison et
610 proche d'elle.} Essayons :
612 @cindex Slur, exemple de dérogation
613 @cindex thickness, exemple d'utilisation de la propriété
615 @lilypond[quote,verbatim,relative=2]
619 % Increase thickness of all following slurs from 1.2 to 5.0
620 \override Slur #'thickness = #5.0
622 g[( e]) e d[( f]) a |
626 The man who feels love's sweet e -- mo -- tion
632 et nous constatons que le trait de liaison est beaucoup plus épais.
634 Telle est la façon normale de construire les commandes
635 @code{\override}. Comme nous aurons l'occasion de le voir
636 par la suite, le problème est parfois plus complexe. Dans
637 l'immédiat, nous en savons assez pour construire nos propres
638 commandes -- mais il faut encore s'exercer. Les exemples
639 suivants sont là dans cette intention.
641 @subheading Détermination du contexte adéquat
643 @cindex contexte, détermination du
644 @cindex contexte, identification correcte du
646 Tout d'abord, de quoi avions-nous besoin pour préciser le
647 contexte ? À quoi devait-il ressembler ? Gageons que les
648 liaisons appartiennent au contexte Voix, dans la mesure où
649 elles sont étroitement liées à une ligne mélodique, mais
650 comment en être sûr ? Pour répondre à cette question,
651 revenons en haut de la page de la RPI consacrée aux liaisons ;
652 il est écrit : @qq{Les objets Liaison sont créés par le graveur
653 Slur_engraver}. Ainsi les liaisons seront créées dans n'importe
654 quel contexte où se trouve le @code{Slur_engraver}. Suivons
655 le lien vers la page @code{Slur_engraver}. Tout en bas, on
656 lit que le @code{Slur_engraver} est un élément appartenant
657 à cinq contextes Voix, dont le contexte de voix
658 standard, @code{Voice}. Notre hypothèse était donc juste.
659 Et parce que @code{Voice} est un contexte de très bas
660 niveau, qu'il est activé sans ambiguïté par le fait que l'on est
661 en train de saisir des notes, on peut ici ne pas le mentionner.
663 @subheading Redéfinition pour une seule occurence
665 @cindex dérogation pour une seule fois
666 @cindex usage unique, dérogation à
671 Dans le dernier exemple ci-dessus, @emph{toutes} les liaisons étaient plus
672 épaisses. Et si on veut épaissir uniquement la première liaison ? On
673 recourt alors à la commande @code{\once}. Placée juste avant la commande
674 @code{\override}, elle lui indique de ne changer que la liaison commençant
675 avec la note @strong{juste après}. Si la note juste après n'ouvre pas une
676 liaison, la commande sera sans aucun effet -- elle ne reste pas en mémoire
677 jusqu'à la prochaine liaison, elle est purement et simplement ignorée.
678 Il faut donc que la commande introduite par @code{\once} soit insérée
682 @cindex Slur, exemple de dérogation
683 @cindex thickness, exemple d'utilisation de la propriété
684 @cindex Liaison, exemple de dérogation
685 @cindex Épaisseur, exemple d'utilisation de la propriété
687 @lilypond[quote,verbatim,relative=2]
692 % Increase thickness of immediately following slur only
693 \once \override Slur #'thickness = #5.0
695 g[( e]) e d[( f]) a |
699 The man who feels love's sweet e -- mo -- tion
705 Alors seule la première liaison est rendue plus épaisse.
707 La commande @code{\once} peut aussi être utilisée devant la commande
711 @subheading Rétablissement
715 @cindex défaut, retour aux propriétés par
720 Et si l'on voulait que les deux premières liaisons soient plus épaisses ?
721 On pourrait bien sûr utiliser deux commandes, chacune précédée de
722 @code{\once}, et placées juste avant la note par laquelle débute la
726 @cindex Slur, exemple de dérogation
727 @cindex thickness, exemple d'utilisation de la propriété
728 @cindex Liaison, exemple de dérogation
729 @cindex Épaisseur, exemple d'utilisation de la propriété
731 @lilypond[quote,verbatim,relative=2]
736 % Increase thickness of immediately following slur only
737 \once \override Slur #'thickness = #5.0
739 % Increase thickness of immediately following slur only
740 \once \override Slur #'thickness = #5.0
741 g[( e]) e d[( f]) a |
745 The man who feels love's sweet e -- mo -- tion
751 mais on peut aussi, au lieu de la commande @code{\once}, utiliser après
752 la seconde liaison la commande @code{\revert}, qui ramène la propriété
753 @code{thickness} à sa valeur par défaut .
755 @cindex Slur, exemple de dérogation
756 @cindex thickness, exemple d'utilisation de la propriété
757 @cindex Liaison, exemple de dérogation
758 @cindex Épaisseur, exemple d'utilisation de la propriété
760 @lilypond[quote,verbatim,relative=2]
765 % Increase thickness of all following slurs from 1.2 to 5.0
766 \override Slur #'thickness = #5.0
769 % Revert thickness of all following slurs to default of 1.2
770 \revert Slur #'thickness
775 The man who feels love's sweet e -- mo -- tion
781 N'importe quelle propriété modifiée par @code{\override} peut ainsi
782 être ramenée, grâce à la commande @code{\revert}, à sa valeur par
785 Ici s'achève notre introduction à la RPI et aux retouches
786 simples. Vous trouverez d'autres exemples dans les prochaines
787 sections de ce chapitre ; ils vous permettront, d'une part,
788 d'apprendre à connaître un peu mieux la RPI et, d'autre part, de
789 vous entraîner un peu plus à y chercher les informations. Ces
790 exemples seront progressivement accompagnés d'explications et
791 introduiront des termes nouveaux.
793 @node Propriétés listées par interface
794 @subsection Propriétés listées par interface
795 @translationof Properties found in interfaces
798 @cindex interfaces, propriétés des
799 @cindex propriétés des interfaces
801 Supposons maintenant que nous voulions imprimer des paroles en italique.
802 Quelle formulation de la commande @code{\override} allons-nous utiliser ?
803 Nous consultons en premier lieu, comme précédemment, la page de la RPI
804 qui contient la liste @qq{Tous les objets de rendu}, et recherchons
805 un objet qui contrôle les paroles. Nous trouvons @code{LyricText}, qui
806 semble approprié. Nous cliquons dessus et nous voyons apparaître les
807 différentes propriétés des paroles, parmi lesquelles @code{font-series}
808 et @code{font-size}. Mais aucune ne propose l'italique. Car la mise
809 en forme des caractères est une propriété commune à tous les objets
810 d'écriture, si bien que, au lieu de figurer dans tous les objets de rendu,
811 elle est regroupée avec d'autres propriétés semblables et placée dans une
812 @strong{Interface}, la @code{font-interface}.
814 Il nous faut donc apprendre à trouver les propriétés des interfaces
815 et découvrir les objets qui utilisent les propriétés de ces interfaces.
817 Retournons à la page de la RPI qui traite des paroles
818 (@emph{LyricText}). En bas de la page est dressée sous forme de liens
819 la liste des interfaces qui concernent LyricText. Cette liste comporte
820 plusieurs entrées, dont @code{font-interface}. En cliquant dessus, nous
821 voyons apparaître les différentes propriétés associées à cette
822 interface, qui sont en même temps les propriétés de tous les objets qui
823 s'y rapportent, parmi lesquels LyricText.
825 Nous avons alors sous les yeux tous les réglages des propriétés qui
826 contrôlent les polices de caractères, et notamment
827 @code{font-shape(symbole)}, où @code{symbole} peut prendre la valeur
828 @code{upright}, @code{italics} ou @code{caps}.
830 Vous remarquerez que @code{font-series} et @code{font-size} figurent
831 aussi dans la liste. La question qui ne manque pas de se poser est :
832 @qq{Comment se fait-il que les propriétés @code{font-series} et
833 @code{font-size} se retrouvent à la fois dans @code{LyricText} et dans
834 l'interface @code{font-interface} alors que ce n'est pas le cas pour
835 @code{font-shape} ?} La réponse est que lorsqu'un objet @code{LyricText}
836 est créé, les valeurs globales par défaut de @code{font-series} et
837 @code{font-size} sont modifiées, mais pas celles de @code{font-shape}.
838 Les possibilités de modification dans @code{LyricText} ne concernent
839 donc que les valeurs à appliquer à @code{LyricText}. Les autres objets qui
840 dépendent de @code{font-interface} fixeront leurs propriétés différemment
841 lorsqu'ils seront créés.
843 Voyons maintenant si nous sommes en mesure de formuler la commande
844 @code{\override} pour mettre les paroles en italique. L'objet est
845 @code{LyricText}, la propriété est @code{font-shape} et la valeur est
846 @code{italic}. Comme auparavant, nous laissons de côté le contexte.
848 Signalons rapidement -- même si cette remarque est importante -- que,
849 puisque les valeurs de @code{font-shape} se présentent sous forme de
850 symboles, elles doivent être précédées d'une simple apostrophe,
851 @code{'}. C'est pour cette raison qu'il fallait une apostrophe devant
852 @code{thickness} dans l'exemple précédent, et qu'il en faut une devant
853 @code{font-shape}. Ce sont à chaque fois des symboles, qui sont
854 interprétés comme tels par LilyPond. Certains symboles peuvent être des
855 noms de propriété, comme @code{thickness} ou @code{font-shape},
856 d'autres sont des valeurs à attribuer aux propriétés, comme
857 @code{italic}. À ne pas confondre avec les chaînes de caractères libres,
858 qui se présentent comme @code{"un texte libre"} ; pour plus de détails
859 sur les symboles et les chaînes de caractères, voir @ref{Tutoriel Scheme}.
861 Ainsi, la commande @code{\override} pour mettre les paroles en italique
865 \override LyricText #'font-shape = #'italic
869 et doit être placée juste devant et tout près des paroles à modifier,
872 @cindex font-shape, exemple d'utilisation de la propriété
873 @cindex italic, exemple
874 @cindex LyricText, exemple de dérogation
875 @cindex @code{\addlyrics}, exemple
877 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
882 g[( e]) e d[( f]) a |
886 \override LyricText #'font-shape = #'italic
887 The man who feels love's sweet e -- mo -- tion
893 et voilà les paroles en italiques.
895 @subheading Spécification du contexte en mode lyrique
897 @cindex contexte, spécification en mode lyrique
898 @cindex mode lyrique, spécification de contexte en
900 Lorsqu'il s'agit de paroles et qu'on cherche à préciser le contexte
901 sur le modèle de ce qui a été fait précédemment, la commande échoue.
902 Car une syllabe saisie en mode Paroles (lyricmode) se termine
903 obligatoirement par une espace, un saut de ligne ou un nombre. Tout
904 autre caractère compte comme un élément de la syllabe. C'est pourquoi
905 il faut une espace ou un saut de ligne avant le @code{@}} final, pour
906 éviter qu'il ne soit assimilé à la dernière syllabe. De même, il faut insérer
907 des espaces avant et après le point, @qq{.}, qui sépare le nom de
908 contexte du nom de l'objet, faute de quoi les deux noms seront joints et
909 l'interpréteur ne pourra pas les reconnaître. La formulation correcte est
913 \override Lyrics . LyricText #'font-shape = #'italic
916 @warning{Dans la saisie des paroles, pensez à toujours laisser une
917 espace entre la dernière syllabe et l'accolade fermante.}
919 @warning{Lorsqu'on retouche des paroles, toujours placer des espaces
920 autour du point qui sépare le nom de contexte du nom d'objet.}
923 Manuel d'initiation : @ref{Tutoriel Scheme}.
926 @node Types de propriétés
927 @subsection Types de propriétés
928 @translationof Types of properties
931 @cindex propriété, types de
933 Nous avons vu jusqu'à maintenant deux types de propriétés :
934 @code{nombre} et @code{symbole}. Pour pouvoir fonctionner, la valeur
935 associée à une propriété doit correspondre au type attendu et suivre les
936 règles liées à ce type. Le type de propriété est toujours donné entre
937 parenthèses après le nom de propriété dans la RPI. Voici une liste des
938 différents types de propriétés, avec les règles qui les régissent et
939 quelques exemples d'utilisation. Il faut, bien sûr, toujours ajouter un
940 symbole hash, @code{#}, devant ces valeurs lors de la saisie de la
941 commande @code{\override}.
943 @multitable @columnfractions .2 .45 .35
944 @headitem Type de propriété
947 @item Booléenne (@emph{Boolean} en anglais)
948 @tab Vrai (@emph{true} en anglais) ou Faux (@emph{false} en anglais),
949 sous la forme #t ou #f
950 @tab @code{#t}, @code{#f}
951 @item Dimension (en lignes de portée)
952 @tab Un nombre positif décimal (en unités de lignes de portée)
953 @tab @code{2.5}, @code{0.34}
955 @tab Une direction valide ou son équivalent numérique (valeur décimale
956 comprise entre -1 et 1 seulement)
957 @tab @code{LEFT}, @code{CENTER}, @code{UP}, @code{1}, @code{-1}
958 @item Entier (@emph{Integer} en anglais)
959 @tab Un nombre entier positif
960 @tab @code{3}, @code{1}
962 @tab Plusieurs valeurs séparées par une espace, encadrées par des
963 parenthèses et prédédées par une apostrophe
964 @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'(1.0 0.25 0.5)}
965 @item Markup (ou étiquette)
966 @tab Toute commande @code{\markup} valide
967 @tab @code{\markup @{ \italic "cresc." @}}
968 @item Durée (@emph{Moment} en anglais)
969 @tab Une durée de note construite avec la fonction make-moment
970 @tab @code{(ly:make-moment 1 4)}, @code{(ly:make-moment 3 8)}
972 @tab Une valeur décimale positive ou négative
973 @tab @code{3.5}, @code{-2.45}
974 @item Paire (de nombres)
975 @tab Deux nombres séparées par @qq{espace point espace}, encadrés
976 par des parenthèses et précédés par une apostrophe
977 @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
979 @tab L'un des symboles autorisés pour cette propriété, précédé par une
981 @tab @code{'italic}, @code{'inside}
982 @item Inconnu (@emph{Unknown} en anglais)
983 @tab Un processus, ou @code{#f} pour empêcher toute action
984 @tab @code{bend::print}, @code{ly:text-interface::print}, @code{#f}
986 @tab Une liste de trois éléments encadrés par des parenthèses et
987 précédés par apostrophe-hash, @code{'#}
988 @tab @code{'#(#t #t #f)}
993 Manuel d'initiation : @ref{Tutoriel Scheme}.
996 @node Apparence des objets
997 @section Apparence des objets
998 @translationof Appearance of objects
1000 Il est temps de mettre en pratique les notions apprises précédemment
1001 pour modifier l'allure de la partition ; les exemples qui suivent
1002 montrent l'utilisation des différentes méthodes de retouche.
1005 * Visibilité et couleur des objets::
1006 * Taille des objets::
1007 * Longueur et épaisseur des objets::
1011 @node Visibilité et couleur des objets
1012 @subsection Visibilité et couleur des objets
1013 @translationof Visibility and color of objects
1015 Dans un but pédagogique, on peut être amené à masquer certains éléments
1016 d'une partition, que les élèves doivent ensuite compléter. Imaginons,
1017 par exemple, un exercice dans lequel il faudrait rétablir les barres de
1018 mesure dans un morceau de musique. En temps normal, les barres de mesure
1019 s'insèrent automatiquement. Comment faire pour les effacer de la
1022 Avant de nous y attaquer, souvenons-nous que les propriétés d'objets
1023 sont parfois groupées dans ce qu'on appelle des @emph{interfaces} --
1024 voir @ref{Propriétés listées par interface}. Cela permet de rapprocher
1025 toutes les propriétés susceptibles d'être utilisées ensemble pour
1026 modifier un objet graphique -- si l'une d'elles est choisie pour un
1027 objet, elle s'appliquera à tous les autres. Certains objets tirent
1028 alors leurs propriétés de telle ou telle interface, d'autres objets de
1029 telle ou telle autre interface. La liste des interfaces qui contiennent
1030 les propriétés liées à un objet graphique (@emph{grob}) figure dans la
1031 RPI, en bas de la page de description du @emph{grob} ; pour voir ces
1032 propriétés, il faut aller voir ces interfaces.
1034 Nous avons vu, dans @ref{Propriétés des objets de rendu}, comment trouver
1035 les informations sur les @emph{grobs}. Nous procédons de la même manière
1036 et consultons la RPI pour connaître l'objet chargé d'imprimer les barres
1037 de mesure. En cliquant sur @emph{Backend} puis sur @emph{Tous les
1038 objets de rendu}, nous trouvons un objet appelé @code{BarLine}. Parmi
1039 ses propriétés, deux d'entre elles déterminent son aspect visuel :
1040 @code{break-visibility} et @code{stencil}. L'objet @code{BarLine}
1041 est également lié à plusieurs interfaces, dont la @code{grob-interface}
1042 où figurent les propriétés @code{transparent} et @code{color}. Toutes
1043 peuvent modifier l'aspect visuel des barres de mesure -- et de beaucoup
1044 d'autres objets, bien sûr. Examinons chacune d'elles tour à tour.
1048 @cindex stencil, propriété
1050 Cette propriété contrôle l'apparence des barres de mesure en précisant
1051 le type de symbole (glyphe) à imprimer. Comme pour de nombreuses
1052 autres propriétés, on peut lui indiquer de ne rien imprimer en lui
1053 attribuant la valeur @code{#f}. Essayons en laissant de côté, une fois
1054 encore, le contexte concerné (@code{Voice} en l'occurrence) :
1056 @cindex BarLine, exemple de dérogation
1057 @cindex stencil, exemple d'utilisation de la propriété
1059 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1062 \override BarLine #'stencil = ##f
1064 g, a16 b8 c d4 e16 |
1069 Les barres de mesure sont encore là ! Pourquoi ? Retournons à la RPI
1070 et regardons de nouveau la page qui traite des propriétés de BarLine.
1071 En haut de la page, il est précisé que @qq{Les objets BarLine sont créés
1072 par le graveur Bar_engraver}. Allons à la page de @code{Bar_engraver}.
1073 Tout en bas se trouve la liste des contextes dans lesquels fonctionne ce
1074 graveur. Tous sont du type @code{Staff}, de sorte que, si la commande
1075 @code{\override} n'a pas fonctionné comme prévu, c'est parce que
1076 @code{Barline} n'appartient pas au contexte par défaut, @code{Voice}.
1077 Si le contexte spécifié est erroné, la commande ne fonctionne pas. Cela
1078 n'entraîne pas de message d'erreur, et rien n'apparaît dans le fichier log.
1079 Essayons de corriger en mentionnant le bon contexte :
1081 @cindex BarLine, exemple de dérogation
1082 @cindex stencil, exemple d'utilisation de la propriété
1084 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1087 \override Staff.BarLine #'stencil = ##f
1089 g, a16 b8 c d4 e16 |
1094 Cette fois, les barres de mesure ont disparu.
1096 @subheading visibilité des barres (break-visibility)
1098 @cindex break-visibility, propriété
1100 La RPI mentionne, à la page sur @code{BarLine}, que la propriété
1101 @code{break-visibility} attend comme argument un vecteur de trois
1102 boléens. Ceux-ci indiquent respectivement si les barres de mesure
1103 doivent être imprimées ou non à la fin de la ligne, à l'intérieur de la
1104 ligne et au début de la ligne. Dans notre cas, nous voulons que toutes
1105 les barres soient supprimées, si bien que la valeur dont nous avons
1106 besoin est @code{'#(#f@tie{}#f@tie{}#f)}. Essayons, sans oublier
1107 d'ajouter le contexte @code{Staff}. Vous remarquerez que, en plus de
1108 cette valeur, nous ajoutons @code{#'#} devant la parenthèse ouvrante.
1109 Le @code{'#} est nécessaire car il fait partie intégrante de la valeur
1110 contenant un vecteur, et le premier @code{#} est là, comme toujours avec
1111 la commande @code{\override}, pour introduire la valeur elle-même.
1113 @cindex BarLine, exemple de dérogation
1114 @cindex break-visibility exemple d'utilisation de la propriété
1116 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1119 \override Staff.BarLine #'break-visibility = #'#(#f #f #f)
1121 g, a16 b8 c d4 e16 |
1126 Comme on peut le constater, cette solution-là aussi supprime les barres
1129 @subheading transparence
1131 @cindex transparent, propriété
1132 @cindex transparence
1134 La RPI mentionne, à la page sur @code{grob-interface}, que la propriété
1135 @code{transparent} attend comme argument un boléen. Il faudrait donc
1136 mettre @code{#t} pour rendre l'objet transparent. Dans cet exemple,
1137 essayons de rendre transparente la métrique (@emph{time signature} en
1138 anglais) plutôt que les barres de mesure. Pour cela, il nous faut
1139 trouver le nom du @emph{grob} chargé de l'indication de mesure. De
1140 retour sur la page @qq{Tous les objets de rendu} de la RPI, nous
1141 cherchons les propriétés de l'objet @code{TimeSignature}. Celui-ci est
1142 géré par le graveur @code{Time_signature_engraver} qui, comme vous
1143 pouvez le constater, appartient au contexte @code{Staff} et peut se
1144 rattacher à la @code{grob-interface}. Dans ces conditions, la commande
1145 pour rendre la métrique transparente est :
1147 @cindex TimeSignature, exemple de dérogation
1148 @cindex transparent, exemple d'utilisation de la propriété
1150 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1153 \override Staff.TimeSignature #'transparent = ##t
1155 g, a16 b8 c d4 e16 |
1161 La métrique a bien disparu mais la commande a laissé un blanc en lieu et
1162 place du chiffrage. Ce peut être souhaitable dans le cadre d'un
1163 exercice, afin que les élèves aient la place pour compléter, mais dans
1164 d'autres circonstances, ce peut être gênant. Pour y remédier,
1165 attribuons plutôt au stencil des métriques la valeur @code{#f} :
1167 @cindex TimeSignature, exemple de dérogation
1168 @cindex stencil, exemple d'utilisation de la propriété
1170 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1173 \override Staff.TimeSignature #'stencil = ##f
1175 g, a16 b8 c d4 e16 |
1181 La différence est flagrante : le fait d'attribuer au stencil la valeur
1182 @code{#f} supprime totalement l'objet, tandis que le fait de le rendre
1183 @code{transparent} le laisse en place, mais de façon invisible.
1187 @cindex color, propriété
1189 Essayons enfin de rendre les barres de mesure invisibles en les colorant
1190 en blanc. La difficulté est de savoir si les barres blanches vont
1191 couper ou non les lignes de la portée aux endroits où elles se
1192 croisent. Vous verrez dans les exemples ci-dessous que cela peut se
1193 produire, sans qu'on le sache à l'avance. Les explications de ce
1194 phénomène et les solutions pour y remédier sont exposées dans
1195 @ruser{Blanchiment des objets}. Pour le moment, acceptons cet
1196 inconvénient et concentrons-nous sur l'apprentissage de la gestion des
1199 La @code{grob-interface} indique que la valeur de la propriété
1200 @code{color} est une liste, sans plus d'explication. En fait, cette
1201 liste est une liste de valeurs en unités internes ; pour éviter d'avoir
1202 à chercher ce qu'il faut y mettre, il existe différents moyens
1203 d'indiquer la couleur. Le premier moyen consiste à utiliser l'une des
1204 couleurs @emph{normales} de la première @ruser{Liste des couleurs}. Pour
1205 mettre les barres de mesure en blanc, on écrit :
1207 @cindex BarLine, exemple de dérogation
1208 @cindex color, exemple d'utilisation de la propriété
1210 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1213 \override Staff.BarLine #'color = #white
1215 g, a16 b8 c d4 e16 |
1221 et nous constatons que les barres de mesure sont une fois de plus
1222 invisibles. Attention : aucune apostrophe ne précède @code{white} -- il
1223 ne s'agit pas d'un symbole mais d'une @strong{fonction}. Quand on
1224 l'invoque, elle fournit une liste de valeurs internes requises pour
1225 changer la couleur en blanc. Les autres couleurs aussi, dans la
1226 @qq{liste normale}, sont des fonctions. Pour en être certain, vous
1227 pouvez faire l'essai en choisissant une autre fonction de la liste en
1231 @cindex X11, couleurs
1235 Le deuxième moyen de changer la couleur consiste à utiliser la deuxième
1236 @ruser{Liste des couleurs}, dite noms de couleurs X11. Ceux-ci doivent
1237 obligatoirement être précédés d'une autre fonction, qui convertit les
1238 noms de couleurs X11 en une liste de valeurs internes, @code{x11-color},
1241 @cindex BarLine, exemple de dérogation
1242 @cindex color, exemple d'utilisation de la propriété
1244 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1247 \override Staff.BarLine #'color = #(x11-color 'white)
1249 g, a16 b8 c d4 e16 |
1255 Vous noterez que, dans ce cas, la fonction @code{x11-color} admet un
1256 symbole comme argument ; il faut donc placer une apostrophe devant le
1257 symbole et insérer les deux à l'intérieur de parenthèses.
1259 @cindex rgb, couleur
1260 @cindex couleurs rgb
1264 Il existe une troisième fonction, écrite pour convertir les valeurs RVB
1265 en couleurs internes -- la fonction @code{rgb-color}. Elle comporte
1266 trois arguments, donnant respectivement l'intensité du rouge, du vert et
1267 du bleu. Ces arguments prennent des valeurs comprises entre 0 et 1.
1268 Ainsi, pour choisir la couleur rouge, la valeur serait
1269 @code{(rgb-color 1 0 0)} ; pour le blanc, ce serait
1270 @code{(rgb-color 1 1 1)} :
1272 @cindex BarLine, exemple de dérogation
1273 @cindex color, exemple d'utilisation de la propriété
1275 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1278 \override Staff.BarLine #'color = #(rgb-color 1 1 1)
1280 g, a16 b8 c d4 e16 |
1285 Enfin, il existe une échelle de gris parmi les possibilités de couleurs
1286 X11. Elle va du noir, @code{'grey0}, au blanc, @code{'grey100}, avec
1287 un pas de 1. Essayons de l'utiliser en attribuant à tous les objets de
1288 notre exemple différentes nuances de gris :
1290 @cindex StaffSymbol, exemple de dérogation
1291 @cindex TimeSignature, exemple de dérogation
1292 @cindex Clef, exemple de dérogation
1293 @cindex NoteHead, exemple de dérogation
1294 @cindex Stem, exemple de dérogation
1295 @cindex BarLine, exemple de dérogation
1296 @cindex color, exemple d'utilisation de la propriété
1297 @cindex x11-color, exemple d'utilisation
1299 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1302 \override Staff.StaffSymbol #'color = #(x11-color 'grey30)
1303 \override Staff.TimeSignature #'color = #(x11-color 'grey60)
1304 \override Staff.Clef #'color = #(x11-color 'grey60)
1305 \override Voice.NoteHead #'color = #(x11-color 'grey85)
1306 \override Voice.Stem #'color = #(x11-color 'grey85)
1307 \override Staff.BarLine #'color = #(x11-color 'grey10)
1309 g, a16 b8 c d4 e16 |
1315 Vous remarquerez le contexte associé à chacun des objets. Une erreur
1316 sur ce point empêcherait la commande de fonctionner. Souvenez-vous que
1317 le contexte est celui dans lequel est placé le graveur approprié. Pour
1318 chaque graveur, on peut trouver son contexte par défaut en partant de
1319 l'objet lui-même, puis en cherchant le graveur qui le produit ; la page
1320 du graveur dans la RPI nous indique alors le contexte dans lequel le
1321 graveur se trouve normalement.
1324 @node Taille des objets
1325 @subsection Taille des objets
1326 @translationof Size of objects
1328 @cindex modification de la taille des objets
1329 @cindex taille d'objets
1330 @cindex objets, taille
1331 @cindex objets, modification de taille
1333 Pour commencer, reprenons l'exemple qui se trouvait dans
1334 @ref{Expressions musicales imbriquées}, qui montrait comment créer une
1335 nouvelle portée temporaire, du type @rglos{ossia}.
1337 @cindex alignAboveContext, exemple d'utilisation de la propriété
1338 @cindex @code{\with}, exemple
1340 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1341 \new Staff ="main" {
1348 alignAboveContext = #"main" }
1356 Normalement, les ossias ne comportent ni clef ni indication de mesure, et
1357 elles sont imprimées légèrement plus petit que la portée principale.
1358 Nous avons déjà appris à enlever la clef et la métrique -- il suffit de
1359 régler le stencil de chacun sur @code{#f}, comme ceci :
1361 @cindex alignAboveContext, exemple d'utilisation de la propriété
1362 @cindex @code{\with}, exemple
1363 @cindex stencil, exemple d'utilisation de la propriété
1364 @cindex Clef, exemple de dérogation
1365 @cindex TimeSignature, exemple de dérogation
1367 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1368 \new Staff ="main" {
1375 alignAboveContext = #"main"
1378 \override Staff.Clef #'stencil = ##f
1379 \override Staff.TimeSignature #'stencil = ##f
1389 La paire d'accolades ajoutée après la clause @code{\with} est nécessaire
1390 pour être sûr que les retouches (@code{\override}) ainsi que la musique
1391 qui se trouvent à l'intérieur soient bien appliquées à la portée
1394 Mais alors, quelle différence y a-t-il à modifier le contexte de portée
1395 au moyen de @code{\with} ou à modifier les stencils de la clef et de la
1396 métrique avec @code{\override} ? La principale différence est que les
1397 changements opérés dans une clause @code{\with} sont réalisés au moment
1398 où le contexte est créé et restent par la suite les valeurs @strong{par
1399 défaut} aussi longtemps que ce contexte existe, tandis que les commandes
1400 @code{\set} ou @code{\override} insérées dans la musique sont dynamiques
1401 -- elles provoquent des changements synchronisés avec un point
1402 particulier de la musique. Si les changements sont annulés ou
1403 désactivés par @code{\unset} ou @code{\revert}, les réglages reprennent
1404 leurs valeurs par défaut, c'est-à-dire celles qui ont été fixées dans la
1405 clause @code{\with}, ou, en l'absence de celle-ci, les valeurs par
1408 Certaines propriétés de contexte ne peuvent être modifiées que dans une
1409 clause @code{\with}. Il s'agit des propriétés qu'on ne peut évidemment
1410 plus changer après que le contexte a été créé. C'est le cas de
1411 @code{alignAboveContext} et de son pendant, @code{alignBelowContext}
1412 -- une fois que la portée a été créée, son alignement est décidé et cela
1413 n'aurait aucun sens de vouloir le modifier par la suite.
1415 Dans une clause @code{\with}, on peut aussi régler les valeurs par
1416 défaut des propriétés d'un objet. Il suffit d'utiliser la commande
1417 @code{\override} normale, sans s'occuper du nom de contexte
1418 puisqu'il ne fait pas de doute qu'il s'agit du contexte en cours de
1419 modification par la clause @code{\with}. Il se produirait même une
1420 erreur si le contexte était précisé.
1422 Remplaçons donc l'exemple ci-dessus par celui-ci :
1424 @cindex alignAboveContext, exemple d'utilisation de la propriété
1425 @cindex @code{\with}, exemple
1426 @cindex Clef, exemple de dérogation
1427 @cindex TimeSignature, exemple de dérogation
1429 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1430 \new Staff ="main" {
1437 alignAboveContext = #"main"
1438 % Don't print clefs in this staff
1439 \override Clef #'stencil = ##f
1440 % Don't print time signatures in this staff
1441 \override TimeSignature #'stencil = ##f
1450 Venons-en finalement au changement de taille des objets.
1452 Certains objets sont créés comme des glyphes choisis dans une police de
1453 caractères. C'est le cas des têtes de notes, des altérations, des
1454 @emph{markup}, des clefs, des métriques, des nuances et des paroles.
1455 Pour changer leur taille, on modifie la propriété @code{font-size},
1456 comme nous le verrons rapidement. D'autres objets, comme les liaisons
1457 de phrasé ou de prolongation -- en général les objets étendus -- sont
1458 dessinés à la demande, si bien qu'aucune @code{font-size} ne leur est
1459 associée. Ces objets tirent généralement leur dimension des objets
1460 auxquels ils sont rattachés, de sorte qu'on ne doit pas avoir à les
1461 redimensionner à la main. D'autres propriétés, comme la hauteur des
1462 hampes et des barres de mesure, l'épaisseur des ligatures et d'autres
1463 lignes, et l'écartement des lignes de portée, doivent encore être
1464 modifiées de façon particulière.
1466 Si l'on revient à l'exemple d'ossia, commençons par changer la taille de
1467 police. Nous pouvons employer deux méthodes. Soit nous changeons la
1468 taille de police de chaque type d'objet avec des commandes comme
1469 celle-ci pour les têtes de notes (@code{NoteHead}) :
1472 \override NoteHead #'font-size = #-2
1475 soit nous changeons la taille de toutes les polices à la fois grâce à la
1476 propriété @code{fontSize}, en utilisant @code{\set} ou en l'insérant
1477 dans une clause @code{\with} (mais alors sans le @code{\set}).
1483 Chacune de ces méthodes réduira la taille de police de deux points par
1484 rapport à sa valeur précédente, sachant que chaque point réduit ou
1485 augmente la taille d'environ 12 %.
1487 Essayons sur l'exemple d'ossia :
1489 @cindex alignAboveContext, exemple d'utilisation de la propriété
1490 @cindex @code{\with}, exemple
1491 @cindex Clef, exemple de dérogation
1492 @cindex TimeSignature, exemple de dérogation
1493 @cindex fontSize, exemple d'utilisation de la propriété
1495 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1496 \new Staff ="main" {
1503 alignAboveContext = #"main"
1504 \override Clef #'stencil = ##f
1505 \override TimeSignature #'stencil = ##f
1506 % Reduce all font sizes by ~24%
1516 Ce n'est pas encore parfait. Les têtes de notes et les crochets sont
1517 plus petits mais, proportionnellement, les hampes sont trop longues et
1518 les lignes de la portée trop espacées. Il faut donc les réduire dans les
1519 mêmes proportions que les polices de caractères. La prochaine
1520 sous-section montrera comment faire.
1522 @node Longueur et épaisseur des objets
1523 @subsection Longueur et épaisseur des objets
1524 @translationof Length and thickness of objects
1530 @cindex taille, modification
1531 @cindex hampe, modification de longueur
1532 @cindex écartement des lignes, modification
1534 Dans LilyPond, les écartements et longueurs sont généralement mesurés en
1535 @qq{intervalles de lignes} (@emph{staff-spaces} en anglais),
1536 c'est-à-dire l'écartement qui sépare deux lignes adjacentes dans la
1537 portée -- plus rarement, il est question de demi-intervalles de lignes.
1538 Les propriétés d'épaisseur (@code{thickness}), quant à elles, sont
1539 généralement mesurées en unités d'une propriété interne appelée
1540 @qq{épaisseur de ligne} (@code{line-thickness}). Par exemple, les
1541 lignes de crescendo/decrescendo présentent par défaut une épaisseur de 1
1542 unité de @code{line-thickness}, alors que l'épaisseur d'une hampe est de
1543 1,3. Toutefois, certaines propriétés d'épaisseur sont différentes : par
1544 exemple, l'épaisseur des ligature se mesure en espaces de portée.
1546 Dans ces conditions, comment ajuster les longueurs à la taille des
1547 polices de caractères ? La solution consiste à utiliser une fonction
1548 spéciale appelée @code{magstep} -- pseudo facteur de zoom --, créée
1549 précisément dans ce but. Elle comporte un argument, le changement de
1550 taille de police (#-2 dans l'exemple précédent), à partir duquel elle
1551 applique un facteur de mise à l'échelle qui réduit, ou augmente, les
1552 objets en question. Voici comment elle s'utilise :
1554 @cindex alignAboveContext, exemple d'utilisation de la propriété
1555 @cindex @code{\with}, exemple
1556 @cindex Clef, exemple de dérogation
1557 @cindex TimeSignature, exemple de dérogation
1558 @cindex fontSize , exemple d'utilisation de la propriété
1559 @cindex StaffSymbol, exemple de dérogation
1560 @cindex magstep, exemple d'utilisation de la fonction
1561 @cindex staff-space, exemple d'utilisation de la propriété
1562 @cindex stencil, exemple d'utilisation de la propriété
1564 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1565 \new Staff ="main" {
1572 alignAboveContext = #"main"
1573 \override Clef #'stencil = ##f
1574 \override TimeSignature #'stencil = ##f
1576 % Reduce stem length and line spacing to match
1577 \override StaffSymbol #'staff-space = #(magstep -2)
1587 Puisque la longueur des hampes et plusieurs autres propriétés de
1588 longueur sont calculées par rapport à la valeur de la propriété
1589 @code{staff-space}, elles sont automatiquement mises à l'échelle. Vous
1590 remarquerez que cela n'affecte que la dimension verticale de l'ossia --
1591 la dimension horizontale étant déterminée par les objets de la portée
1592 principale de façon à rester synchronisée vis-à-vis d'elle, elle n'est
1593 pas affectée par tous ces changements de taille. Bien sûr, si l'échelle
1594 de toute la portée principale était modifiée, tout le placement
1595 horizontal s'en trouverait affecté. Il en sera question plus bas dans
1598 Voilà qui complète la création d'une ossia. Les tailles et longueurs de tous
1599 les objets peuvent être modifiées de manière analogue.
1601 Pour de petits changements d'échelle, comme dans l'exemple ci-dessus, il
1602 n'est généralement pas utile d'ajuster l'épaisseur des différentes
1603 lignes telles que les barres de mesure, les ligatures, les soufflets de
1604 crescendo/decrescendo, les liaisons, etc. Si l'épaisseur d'un objet en
1605 particulier doit être ajustée, le mieux est de modifier sa propriété
1606 @code{thickness}. Nous avons vu plus haut, dans
1607 @ref{Propriétés des objets de rendu}, un exemple de modification de
1608 l'épaisseur des liaisons. L'épaisseur de tous les objets tracés
1609 (c'est-à-dire ceux qui ne proviennent pas d'une police de caractère)
1610 peut être changée de la même manière.
1612 @node Positionnement des objets
1613 @section Positionnement des objets
1614 @translationof Placement of objects
1617 * Comportement automatique::
1618 * Objets inclus dans la portée::
1619 * Objets hors de la portée::
1622 @node Comportement automatique
1623 @subsection Comportement automatique
1624 @translationof Automatic behavior
1626 @cindex objets de la portée
1627 @cindex objets extérieurs à la portée
1628 @cindex portée, objets de la
1629 @cindex portée, objets extérieurs à la
1631 Dans la notation musicale, il y a des objets qui appartiennent à la
1632 portée et d'autres qui sont placés à l'extérieur de la portée. On les
1633 appelle respectivement les @qq{objets de la portée} (@emph{within-staff
1634 objects} en anglais) et les @qq{objets extérieurs à la portée}
1635 (@emph{outside-staff objects} en anglais).
1637 Les objets de la portée sont ceux qui sont placés sur la portée
1638 -- les têtes de notes et les hampes, les altérations, etc. Leur
1639 position est généralement déterminée par la musique elle-même -- ils
1640 sont placés verticalement sur des lignes spécifiques ou sont liés à
1641 d'autres objets placés de cette manière. Normalement, les collisions
1642 entre les têtes et queues de notes et les altérations dans des accords
1643 proches sont évitées automatiquement. Comme nous le verrons rapidement,
1644 il existe des commandes et des possibilités de retouche qui permettent
1645 de modifier ce comportement automatique.
1647 Parmi les objets extérieurs à la portée, on compte des éléments comme
1648 les marques de reprise, les indications de texte ou de nuances. Dans
1649 LilyPond, la règle est de placer verticalement ces objets extérieurs à
1650 la portée le plus près possible de la portée, tout en évitant la
1651 collision avec d'autres objets. LilyPond utilise la propriété
1652 @code{outside-staff-priority} pour déterminer l'ordre selon lequel
1653 placer ces objets, de la manière suivante :
1655 D'abord, LilyPond dresse la liste de tous les objets extérieurs à la
1656 portée. Puis ceux-ci sont classés suivant leur
1657 @code{outside-staff-priority}. Enfin, ils sont pris un par un, en
1658 commençant par les objets avec la @code{outside-staff-priority} la plus
1659 basse, et placés de façon à ne pas entrer en collision avec d'autres
1660 objets déjà placés. Cela signifie que, si deux @emph{grobs} extérieurs
1661 à la portée doivent occuper la même place, c'est celui qui a la
1662 @code{outside-staff-priority} la plus basse qui est placé le plus près
1663 de la portée. Et si deux objets ont la même
1664 @code{outside-staff-priority}, le premier rencontré sera placé le plus
1667 Dans l'exemple suivant, tous les @emph{markup} ont la même priorité,
1668 dans la mesure où rien n'est indiqué explicitement. Vous remarquerez
1669 que @code{Text3} est également positionné près de la portée, juste
1670 en-dessous de @code{Text2}.
1672 @cindex markup, exemple
1674 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1681 Les portées aussi sont positionnées, par défaut, le plus près possible
1682 les unes des autres, en ménageant tout de même une certaine séparation.
1683 Si des notes se rapprochent nettement d'une portée adjacente, elles ne
1684 forceront les portées à s'écarter que s'il y a un risque de
1687 @lilypond[quote,ragged-right,verbatim]
1690 \relative c' { c a, }
1693 \relative c'''' { c a, }
1699 @node Objets inclus dans la portée
1700 @subsection Objets inclus dans la portée
1701 @translationof Within-staff objects
1703 Nous avons vu que les commandes @code{\voiceXXX} jouent sur la
1704 direction des liaisons, des doigtés et sur toute autre chose liée à
1705 l'orientation des hampes. Ces commandes sont essentielles dans
1706 la musique polyphonique pour distinguer des lignes mélodiques
1707 entremêlées. Mais il arrive qu'on ait besoin de modifier ce comportement
1708 automatique. On peut le faire pour toutes les parties de la musique ou
1709 juste pour une note. La propriété qui contrôle ce comportement est la
1710 propriété @code{direction} de chaque objet. Expliquons d'abord ce
1711 qu'elle fait, puis nous présenterons un certain nombre de commandes
1712 déjà prêtes qui évitent, pour les modifications les plus courantes,
1713 d'avoir à encoder les retouches.
1715 Certains objets comme les traits des liaisons se recourbent tantôt
1716 vers le haut, tantôt vers le bas ; d'autres encore, comme les hampes
1717 et les crochets, peuvent se décaler vers la gauche ou vers la droite
1718 selon qu'ils pointent vers le haut ou vers le bas. Ce comportement est
1719 géré automatiquement dès lors que @code{direction} est activé.
1726 L'exemple ci-dessous montre dans la première mesure le comportement par
1727 défaut des hampes -- celles des notes les plus hautes pointant vers le
1728 bas et celles des notes les plus basses pointant vers le haut ; viennent
1729 ensuite quatre notes avec les hampes forcées vers le bas, puis quatre
1730 autres avec les hampes forcées vers le haut, et pour finir quatre notes
1731 de nouveau avec le comportement par défaut.
1733 @cindex Stem, exemple de dérogation
1734 @cindex direction, exemple d'utilisation de la propriété
1736 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1738 \override Stem #'direction = #DOWN
1740 \override Stem #'direction = #UP
1742 \revert Stem #'direction
1746 Nous utilisons ici les directions @code{DOWN} et @code{UP}. Elles
1747 correspondent respectivement aux valeurs @code{-1} et @code{+1},
1748 que l'on peut utiliser à la place. La valeur @code{0} peut aussi être
1749 utilisée dans certains cas. Elle est interprétée comme un @code{UP}
1750 pour les hampes, et comme un @qq{centré} pour d'autres objets. Il
1751 existe une direction, @code{CENTER}, qui correspond à la valeur
1754 Quoi qu'il en soit, ces retouches manuelles sont rarement utilisées car
1755 il existe des équivalents sous forme de commandes prédéfinies. Voici un
1756 tableau des plus courantes. Lorsque ce n'est pas évident, leur
1757 signification est précisée.
1759 @multitable @columnfractions .2 .2 .25 .35
1760 @headitem Bas/Gauche
1764 @item @code{\arpeggioArrowDown}
1765 @tab @code{\arpeggioArrowUp}
1766 @tab @code{\arpeggioNormal}
1767 @tab Flèche en bas, en haut, ou pas de flèche
1768 @item @code{\dotsDown}
1770 @tab @code{\dotsNeutral}
1771 @tab Déplacement des points pour éviter les lignes de portée
1772 @item @code{\dynamicDown}
1773 @tab @code{\dynamicUp}
1774 @tab @code{\dynamicNeutral}
1776 @item @code{\phrasingSlurDown}
1777 @tab @code{\phrasingSlurUp}
1778 @tab @code{\phrasingSlurNeutral}
1779 @tab Attention : à distinguer des commandes de liaison ci-dessous
1780 @item @code{\slurDown}
1782 @tab @code{\slurNeutral}
1784 @item @code{\stemDown}
1786 @tab @code{\stemNeutral}
1788 @item @code{\textSpannerDown}
1789 @tab @code{\textSpannerUp}
1790 @tab @code{\textSpannerNeutral}
1791 @tab Le texte saisi en tant qu'extension est au-dessous/au-dessus de la portée
1792 @item @code{\tieDown}
1794 @tab @code{\tieNeutral}
1796 @item @code{\tupletDown}
1797 @tab @code{\tupletUp}
1798 @tab @code{\tupletNeutral}
1799 @tab Les nolets sont au-dessous/au-dessus des notes
1802 Attention : ces commandes prédéfinies @strong{ne doivent pas} être
1803 précédées de @code{\once}. Pour limiter l'effet à une seule note, il
1804 faut soit utiliser la commande équivalente @code{\once \override}, soit
1805 utiliser la commande prédéfinie, suivie, après la note à modifier, de la
1806 commande @code{\xxxNeutral} correspondante.
1810 @cindex doigtés, positionnement
1811 @cindex doigtés, accords
1813 Le placement des doigtés sur des notes simples peut aussi être contrôlé
1814 par la propriété @code{direction}, mais le changement de
1815 @code{direction} n'a pas d'effet sur les accords. Comme nous le
1816 verrons, il existe des commandes qui permettent de contrôler le doigté
1817 sur chaque note d'un accord, en plaçant l'indication de doigté
1818 au-dessus, en dessous, à gauche ou à droite de chaque note.
1820 Tout d'abord, voici l'effet de @code{direction} sur le doigté lié à une
1821 note simple. La première mesure montre le comportement par défaut, et
1822 les deux suivantes montrent l'effet lorsqu'on indique @code{DOWN} et
1825 @cindex doigtés, exemple de dérogation
1826 @cindex direction, exemple d'utilisation de la propriété
1828 @lilypond[quote,verbatim,relative=2]
1830 \override Fingering #'direction = #DOWN
1832 \override Fingering #'direction = #UP
1836 Le fait d'intervenir sur la propriété @code{direction} n'est sûrement
1837 pas la façon la plus simple de placer manuellement les doigtés au-dessus
1838 ou en dessous des notes ; mieux vaut utiliser @code{_} ou @code{^}
1839 devant le chiffre de doigté plutôt que @code{-}. Voici ce que donne
1840 l'exemple précédent avec cette méthode :
1842 @cindex doigtés, exemple
1844 @lilypond[quote,verbatim,relative=2]
1850 La propriété @code{direction} ne fonctionne pas pour les accords alors
1851 que les préfixes de direction, @code{_} et @code{^}, fonctionnent. Par
1852 défaut, le doigté est placé automatiquement à la fois au-dessus et
1853 au-dessous des notes d'un accord, comme ceci :
1855 @cindex doigtés, exemple
1857 @lilypond[quote,verbatim,relative=2]
1864 mais il est possible de forcer manuellement vers le haut ou vers le bas le
1865 placement de tous ou certains chiffres de doigté, comme ceci :
1867 @cindex doigtés, exemple
1869 @lilypond[quote,verbatim,relative=2]
1875 On peut aller encore plus loin dans le positionnement des doigtés pour
1876 chacune des notes d'un accord grâce à la commande
1877 @code{\set@tie{}fingeringOrientations}. La syntaxe de cette commande
1881 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
1885 On utilise @code{\set} car @code{fingeringOrientations} est une propriété
1886 du contexte @code{Voice}, créée et utilisée par le graveur
1887 @code{New_fingering_engraver}.
1889 On peut attribuer à cette propriété une liste composée de une à trois
1890 valeurs. Celles-ci déterminent si l'indication de doigté doit être
1891 placée au-dessus (lorsque @code{up} apparaît dans la liste), au-dessous
1892 (lorsque @code{down} apparaît), à gauche (lorsque @code{left} apparaît)
1893 ou à droite (lorsque @code{right} apparaît). En revanche, si une valeur
1894 n'est pas dans la liste, aucun doigté n'ira à cet emplacement. LilyPond
1895 garde ces contraintes en mémoire et recherche le meilleur emplacement
1896 pour le doigté des notes des accords suivants. Vous remarquerez que
1897 @code{left} et @code{right} s'excluent l'un l'autre -- l'indication de
1898 doigté ne peut être placée que d'un côté ou de l'autre, pas des deux.
1900 @warning{Pour contrôler à l'aide de cette commande le placement du
1901 doigté sur une note simple, il faut la saisir comme un accord composé
1902 d'une note unique, en l'encadrant de chevrons.}
1904 Voici quelques exemples :
1906 @cindex doigtés, exemple
1907 @cindex @code{\set}, exemple d'utilisation
1908 @cindex fingeringOrientations, exemple d'utilisation de la propriété
1910 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1911 \set fingeringOrientations = #'(left)
1913 < c-1 e-2 g-3 b-5 > 4
1914 \set fingeringOrientations = #'(left)
1916 < c-1 e-2 g-3 b-5 > 4
1917 \set fingeringOrientations = #'(up left down)
1919 < c-1 e-2 g-3 b-5 > 4
1920 \set fingeringOrientations = #'(up left)
1922 < c-1 e-2 g-3 b-5 > 4
1923 \set fingeringOrientations = #'(right)
1925 < c-1 e-2 g-3 b-5 > 4
1929 Si les indications de doigtés paraissent un peu serrées, on peut
1930 toujours réduire la taille de police (@code{font-size}). La valeur
1931 par défaut donnée dans la RPI à la page de l'objet
1932 @code{Fingering} étant @code{-5}, essayons @code{-7} :
1934 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1935 \override Fingering #'font-size = #-7
1936 \set fingeringOrientations = #'(left)
1938 < c-1 e-2 g-3 b-5 > 4
1939 \set fingeringOrientations = #'(left)
1941 < c-1 e-2 g-3 b-5 > 4
1942 \set fingeringOrientations = #'(up left down)
1944 < c-1 e-2 g-3 b-5 > 4
1945 \set fingeringOrientations = #'(up left)
1947 < c-1 e-2 g-3 b-5 > 4
1948 \set fingeringOrientations = #'(right)
1950 < c-1 e-2 g-3 b-5 > 4
1954 @node Objets hors de la portée
1955 @subsection Objets hors de la portée
1956 @translationof Outside staff objects
1958 Les objets extérieurs à la portée sont placés automatiquement de façon à
1959 éviter les collisions. Les objets avec la plus petite valeur de la
1960 propriété @code{outside-staff-priority} sont placés au plus près de la
1961 portée, tandis que les autres sont écartés autant qu'il faut pour éviter
1962 les collisions. La @code{outside-staff-priority} est définie dans la
1963 @code{grob-interface} ; elle est donc une propriété commune à tous les
1964 objets de rendu. Par défaut, elle est réglée sur @code{#f} pour tous
1965 les objets de la portée, et porte une valeur numérique appropriée à
1966 chacun des objets extérieurs à la portée, à mesure qu'ils sont créés.
1967 Le tableau suivant montre la valeur numérique par défaut pour
1968 quelques-uns des objets extérieurs à la portée les plus courants qui
1969 sont placés, par défaut, dans les contextes @code{Staff} ou
1972 @multitable @columnfractions .3 .3 .3
1973 @headitem Objet de rendu
1975 @tab Contrôle la position de :
1976 @item @code{MultiMeasureRestText}
1978 @tab Texte sur les silences qui couvrent des mesures entières
1979 @item @code{TextScript}
1981 @tab Texte des @emph{markup} (ou étiquettes)
1982 @item @code{OttavaBracket}
1984 @tab Indication d'octaviation
1985 @item @code{TextSpanner}
1987 @tab Bandeau ou extension de texte
1988 @item @code{DynamicLineSpanner}
1990 @tab Toutes les marques de nuances
1991 @item @code{VoltaBracketSpanner}
1993 @tab Bandeau de répétition
1994 @item @code{TrillSpanner}
1996 @tab Bandeau de trille
1999 Voici un exemple qui montre le placement par défaut de certains
2002 @cindex extension de texte
2003 @cindex indication d'octaviation
2005 @funindex \startTextSpan
2006 @funindex startTextSpan
2007 @funindex \stopTextSpan
2008 @funindex stopTextSpan
2010 @cindex TextSpanner, exemple de dérogation
2011 @cindex bound-details, exemple d'utilisation de la propriété
2013 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2014 % Set details for later Text Spanner
2015 \override TextSpanner #'bound-details #'left #'text
2016 = \markup { \small \bold Slower }
2017 % Place dynamics above staff
2019 % Start Ottava Bracket
2024 % Add Dynamic Line Spanner
2030 c\ff c \stopTextSpan
2031 % Stop Ottava Bracket
2036 Cet exemple montre comment créer des extensions de texte (@emph{Text
2037 Spanners} en anglais ) -- texte avec des longues lignes au-dessus d'un
2038 passage musical. L'extension s'étend depuis la commande
2039 @code{\startTextSpan} jusqu'à la commande @code{\stopTextSpan} et le
2040 format de texte est défini par la commande @code{\override TextSpanner}.
2041 Pour de plus amples détails, voir @ruser{Extensions de texte}.
2043 Il montre aussi comment créer des marques d'octaviation.
2045 @cindex modification du positionnement des numéros de mesure
2046 @cindex numéros de mesure, modification du positionnement
2047 @cindex modification du positionnement des indications métronomiques
2048 @cindex indications métronomiques, modification du positionnement
2049 @cindex modification du positionnement des marques de repère
2050 @cindex marques de repère, modification du positionnement
2052 Vous aurez remarqué que les numéros de mesure, l'indication métronomique
2053 et les marques de répétition n'apparaissent pas. Par défaut, ils sont
2054 créés dans le contexte @code{Score} et leur
2055 @code{outside-staff-priority} est ignorée face aux objets qui sont créés
2056 dans le contexte @code{Staff}. Si vous voulez faire apparaître les
2057 numéros de mesure, l'indication métronomique ou les marques de
2058 répétition conformément à la valeur de leur
2059 @code{outside-staff-priority}, il vous faudra retirer respectivement le
2060 @code{Bar_number_engraver}, le @code{Metronome_mark_engraver} ou le
2061 @code{Mark_engraver} du contexte @code{Score} et les placer en tête du
2062 contexte @code{Staff}. Après quoi ces marques porteront les valeurs de
2063 @code{outside-staff-priority} par défaut suivantes :
2065 @multitable @columnfractions .3 .3
2066 @headitem Objet de rendu @tab Priorité
2067 @item @code{RehearsalMark} @tab @code{1500}
2068 @item @code{MetronomeMark} @tab @code{1000}
2069 @item @code{BarNumber} @tab @code{ 100}
2072 Si les valeurs de @code{outside-staff-priority} par défaut ne donnent
2073 pas les résultats que vous attendez, il suffit de modifier la priorité
2074 de l'un de ces objets. Supposons que vous vouliez placer l'indication
2075 d'octaviation sous le bandeau de texte, dans l'exemple précédent. Tout
2076 ce que nous devons faire, c'est regarder la priorité de
2077 @code{OttavaBracket} dans la RPI ou dans le tableau plus haut, et la
2078 ramener à une valeur plus basse que celle de @code{TextSpanner}, en
2079 gardant à l'esprit que @code{OttavaBracket} est créé dans le contexte
2082 @cindex TextSpanner, exemple de dérogation
2083 @cindex bound-details, exemple d'utilisation de la propriété
2085 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2086 % Set details for later Text Spanner
2087 \override TextSpanner #'bound-details #'left #'text
2088 = \markup { \small \bold Slower }
2089 % Place dynamics above staff
2091 %Place following Ottava Bracket below Text Spanners
2092 \once \override Staff.OttavaBracket #'outside-staff-priority = #340
2093 % Start Ottava Bracket
2098 % Add Dynamic Line Spanner
2104 c\ff c \stopTextSpan
2105 % Stop Ottava Bracket
2110 @cindex liaisons et outside-staff-priority
2111 @cindex liaisons et articulations
2112 @cindex articulations et liaisons
2114 Les liaisons sont intrinsèquement des objets membres de la portée
2115 (@emph{within-staff objects}) bien qu'elles la surplombent lorsque les
2116 notes auxquelles elles se rattachent sont relativement hautes. Ceci
2117 peut avoir pour conséquence de remonter d'autant les objets externes
2118 (@emph{outside-staff objects}) tels les articulations. La propriété
2119 @code{avoid-slur} de l'articulation en question peut se voir déterminée
2120 à @code{'inside} dans le but de @qq{ramener} cette articulation à
2121 l'intérieur de la liaison. Cette propriété @code{avoid-slur} ne sera
2122 toutefois effective que dans la mesure où la
2123 @code{outside-staff-priority} est désactivée (valeur @code{#f}). Dans
2124 le même esprit, il est possible d'affecter une valeur numérique
2125 particulière à la propriété @code{outside-staff-priority} d'une
2126 liaison dans le but de regrouper la liaison avec les objets externes.
2127 L'exemple suivant illustre ces deux différentes méthodes.
2129 @lilypond[quote,verbatim,relative=2]
2130 c4( c^\markup\tiny\sharp d4.) c8
2132 \once \override TextScript #'avoid-slur = #'inside
2133 \once \override TextScript #'outside-staff-priority = ##f
2134 c^\markup\tiny\sharp d4.) c8
2135 \once \override Slur #'outside-staff-priority = #500
2136 c4( c^\markup\tiny\sharp d4.) c8
2139 Le fait de changer la @code{outside-staff-priority} peut aussi servir à
2140 contrôler le positionnement vertical des objets individuels, quoique le
2141 résultat ne soit pas toujours formidable. Imaginons que nous voulions
2142 placer @qq{Text3} au-dessus de @qq{Text4} dans l'exemple de la section
2143 @ref{Comportement automatique}, plus haut. Il nous suffit pour cela de
2144 regarder dans la RPI ou dans le tableau plus haut la priorité de
2145 @code{TextScript}, et d'augmenter la priorité de @qq{Text3} jusqu'à une
2148 @cindex TextScript, exemple de dérogation
2149 @cindex outside-staff-priority, exemple d'utilisation de la propriété
2151 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2154 \once \override TextScript #'outside-staff-priority = #500
2159 S'il est vrai que cela place @qq{Text3} au-dessus de @qq{Text4}, ça le
2160 place aussi plus haut que @qq{Text2} tandis que @qq{Text4} dégringole.
2161 Ce n'est peut-être pas si bien que ça. En fait, ce que nous aimerions
2162 faire, c'est placer toutes les annotations à égale distance de la
2163 portée. Pour cela, nous avons besoin d'espacer horizontalement les
2164 notes pour laisser plus de place au texte. C'est possible grâce à la
2165 commande @code{textLengthOn}.
2167 @subheading \textLengthOn
2169 @cindex notes, répartition selon le texte
2171 @funindex \textLengthOn
2172 @funindex textLengthOn
2173 @funindex \textLengthOff
2174 @funindex textLengthOff
2176 Par défaut, l'espacement horizontal d'un texte produit sous forme de
2177 @emph{markup} (ou d'étiquette) n'est pas pris en compte, dans la mesure
2178 où ce qui est concerné n'entre pas dans la musique. La commande
2179 @code{\textLengthOn} inverse ce comportement, faisant en sorte que les
2180 notes soient espacées autant qu'il le faut pour s'adapter au texte :
2182 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2183 \textLengthOn % Cause notes to space out to accommodate text
2190 La commande qui permet de revenir au comportement par défaut est
2191 @code{\textLengthOff}. Rappelez-vous que @code{\once} ne
2192 fonctionne qu'avec @code{\override}, @code{\set}, @code{\revert} ou
2193 @code{\unset}, et donc ne peut pas être utilisé avec
2194 @code{\textLengthOn}.
2196 @cindex étiquette de texte et collision
2198 Les textes des @emph{markup} éviteront également les notes qui
2199 s'échappent au-dessus de la portée. Si ce n'est pas notre souhait, il
2200 est possible de supprimer ce déplacement automatique vers le haut en
2201 attribuant à la priorité la valeur @code{#f}. Voici un exemple qui
2202 montre comment les textes des @emph{markup} interagissent avec ces types
2205 @cindex TextScript, exemple de dérogation
2206 @cindex outside-staff-priority, exemple d'utilisation de la propriété
2208 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2209 % This markup is short enough to fit without collision
2213 % This is too long to fit, so it is displaced upwards
2217 % Turn off collision avoidance
2218 \once \override TextScript #'outside-staff-priority = ##f
2222 % Turn off collision avoidance
2223 \once \override TextScript #'outside-staff-priority = ##f
2224 \textLengthOn % and turn on textLengthOn
2225 c,,2^"Long Text " % Spaces at end are honored
2232 @cindex modifier le positionnement des nuances
2233 @cindex nuances, modifier le positionnement
2235 Les indications de nuance se placent normalement sous la portée mais on
2236 peut les placer au-dessus avec la commande @code{dynamicUp}. Elles se
2237 positionnent verticalement par rapport à la note à laquelle elles sont
2238 liées et se décalent vers le bas (ou le haut) en fonction des objets de
2239 la portée comme les liaisons de phrasé ou les numéros de mesure. Cela
2240 peut donner d'assez bons résultats, comme le montre cet exemple :
2242 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2247 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2248 ees,2.~\)\mf ees4 r8 |
2251 De toute façon, si les notes et les nuances qui leur sont liées sont
2252 trop proches, le positionnement automatique évitera les collisions en
2253 déplaçant davantage les nuances suivantes, mais le résultat peut ne
2254 pas être très satisfaisant, comme le montre cet exemple artificiel :
2256 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2262 Si une telle situation devait survenir dans de la musique @qq{réelle},
2263 il serait préférable d'espacer un peu plus les notes, de façon que les
2264 indications de nuance puissent toutes se situer à la même distance de la
2265 portée. Il était possible de faire cela pour les textes de
2266 @emph{markup} grâce à la commande @code{\textLengthOn} mais il n'existe
2267 pas d'équivalent pour les indications de nuance. Il nous faut donc
2268 chercher à faire cela avec la commande @code{\override}.
2270 @subheading Dimensionnement des objets graphiques
2272 @cindex grob, dimensionnement
2273 @cindex dimensionnement des grobs
2275 Tout d'abord, nous devons apprendre ce qui détermine la dimension des
2276 @emph{grobs}. Tous les @emph{grobs} portent en eux un point de référence
2277 qui est utilisé pour les positionner par rapport à leur objet parent. Ce
2278 point du @emph{grob} est placé à une distance horizontale,
2279 @code{X-offset}, et à une distance verticale, @code{Y-offset}, de son
2280 parent. L'étendue horizontale de l'objet est fixée par une paire de
2281 nombres, @code{X-extent}, qui donnent la position du coin
2282 gauche et du coin droit par rapport au point de référence. De
2283 même, l'étendue verticale est fixée par une paire de nombre,
2284 @code{Y-extent}. Ce sont des propriétés communes à tous les
2285 @emph{grobs} et que gère la @code{grob-interface}.
2287 @cindex @code{extra-spacing-width}
2289 Par défaut, la largeur des objets extérieurs à la portée est donnée
2290 comme étant nulle, si bien qu'ils peuvent se chevaucher
2291 horizontalement. Pour reméfier à cela, on a ajouté l'infini à
2292 l'extension gauche et moins l'infini à l'extension droite, en
2293 attribuant à @code{extra-spacing-width} la valeur
2294 @w{@code{'(+inf.0 . -inf.0)}}. Pour être sûr que les objets ne se
2295 chevaucheront pas horizontalement, nous devons donc corriger
2296 cette valeur de @code{extra-spacing-width} en @w{@code{'(0 . 0)}},
2297 afin que leur vraie largeur se manifeste. La commande pour y
2298 parvenir avec des indications de nuances est :
2301 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2305 Voyons si ça marche sur notre exemple précédent :
2307 @cindex DynamicText, exemple de dérogation
2308 @cindex extra-spacing-width, exemple d'utilisation de la propriété
2310 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2312 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2317 Bon, cela a mis un terme aux déplacements verticaux des
2318 nuances mais il reste deux problèmes. Il faudrait que les
2319 nuances soient un peu plus écartées et ce serait mieux si
2320 elles étaient toutes à la même distance de la portée. Le
2321 premier problème est simple à résoudre. Au lieu d'attribuer
2322 à @code{extra-spacing-width} la valeur zéro, nous pourrions
2323 mettre un peu plus. L'unité est la distance entre deux lignes
2324 de portée, donc en écartant le bord gauche d'une demi-unité
2325 et le bord droit d'une demi-unité, on obtient :
2327 @cindex DynamicText, exemple de dérogation
2328 @cindex extra-spacing-width, exemple d'utilisation de la propriété
2330 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2332 % Extend width by 1 staff space
2333 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2338 C'est mieux mais nous voulons peut-être aligner les indications de
2339 nuance sur une même ligne plutôt que de les voir monter et
2340 descendre avec les notes. La propriété qui gère cela est
2341 @code{staff-padding} ; la section suivante lui est consacrée.
2344 @node Collisions d'objets
2345 @section Collisions d'objets
2346 @translationof Collisions of objects
2349 * Déplacement d'objets::
2350 * Correction des collisions d'objets::
2354 @node Déplacement d'objets
2355 @subsection Déplacement d'objets
2356 @translationof Moving objects
2358 @cindex déplacement d'objets se chevauchant
2359 @cindex déplacement d'objets en collision
2360 @cindex déplacement de grobs en collision
2361 @cindex objets, évitement des collisions
2362 @cindex grobs, évitement des collisions
2364 Aussi surprenant que cela puisse paraître, LilyPond n'est pas parfait.
2365 Certains éléments sur la partition peuvent se chevaucher, ce qui est
2366 regrettable mais, le plus souvent, facile à corriger. En général, quand
2367 on déplace des objets, c'est pour des raisons de lisibilité ou
2368 d'esthétique -- ils rendraient mieux avec un peu plus ou un peu moins
2369 d'espace autour d'eux.
2371 Il y a trois façons de résoudre les problèmes de chevauchement. Il est
2372 préférable de les aborder dans l'ordre suivant :
2376 L'@strong{orientation} d'un objet qui en chevauche un autre peut être
2377 changée grâce aux commandes prédéfinies dont la liste a été donnée
2378 plus haut à propos des objets de portée (voir
2379 @ref{Objets inclus dans la portée}).
2380 Les queues de note, les liaisons de phrasé et de prolongation, les
2381 crochets, les nuances et les nolets peuvent facilement être repositionnés
2382 de cette manière. En contrepartie, vous n'avez le choix qu'entre deux
2383 positions, sans personnalisation possible.
2386 Les @strong{propriétés d'objet}, auxquelles LilyPond a recours pour
2387 positionner les objets, sont modifiables avec @code{\override}. Il y a deux
2388 avantages à changer ces propriétés : (a) d'autres objets pourront être
2389 déplacés automatiquement si nécessaire pour faire de la place, et (b)
2390 la même retouche peut s'appliquer à toutes les occurrences du même
2391 type d'objet. Ces propriétés sont :
2398 Ce point a déjà été traité en détails -- voir
2399 @ref{Objets inclus dans la portée}.
2402 @code{padding}, @code{left-padding},
2403 @code{right-padding}, @code{staff-padding}
2405 @cindex décalage (padding)
2406 @cindex left-padding, propriété
2407 @cindex padding, propriété
2408 @cindex right-padding, propriété
2409 @cindex staff-padding, propriété
2411 Au moment de positionner un objet, la valeur de sa propriété
2412 @code{padding} détermine l'espace à laisser libre entre celui-ci et le
2413 coin le plus proche de l'objet à côté duquel il est placé. Vous remarquerez
2414 que c'est la valeur @code{padding} de l'objet @strong{à placer} qui
2415 compte ; la valeur @code{padding} de l'objet déjà placé est ignorée.
2416 Les espaces libres déterminés par @code{padding} s'appliquent à tous
2417 les objets associés à la @code{side-position-interface}.
2419 Le positionnement de groupes d'altérations est contrôlé par
2420 @code{left-padding} et @code{right-padding}, et non plus @code{padding}.
2421 Ces propriétés appartiennent à l'objet @code{AccidentalPlacement}, qui,
2422 vous le remarquerez, prend place dans le contexte @strong{Staff}. Dans le
2423 processus de composition, les têtes de notes sont composées en premier,
2424 puis les altérations, s'il y en a, sont ajoutées à gauche des têtes de notes
2425 suivant la propriété @code{right-padding} qui détermine l'espacement par
2426 rapport aux têtes de note. C'est pourquoi seule la propriété
2427 @code{right-padding} de l'objet @code{AccidentalPlacement} joue sur le
2428 positionnement des altérations.
2430 La propriété @code{staff-padding} est très proche de la propriété
2431 @code{padding} : @code{padding} contrôle l'espace minimum entre un
2432 objet qui accepte la @code{side-position-interface} et l'objet le plus
2433 proche (généralement une note ou une ligne de portée) ; @code{staff-padding}
2434 ne s'applique qu'aux objets qui sont toujours placés en-dehors de la portée --
2435 il contrôle l'espace minimum à insérer entre l'objet et la portée. Attention :
2436 par défaut, @code{staff-padding} concerne les objets positionnés par rapport
2437 à la portée et n'a aucun effet sur les objets qui sont positionnés par
2438 rapport à une note ; il est toutefois possible de le régler pour
2439 fonctionner avec ces derniers.
2441 Pour trouver quelle propriété @code{padding} employer pour l'objet que vous
2442 cherchez à repositionner, il vous faut consulter les propriétés de l'objet dans
2443 la RPI. Prenez garde que les propriétés @code{padding} ne sont pas forcément
2444 traitées dans l'objet en question ; il faut alors regarder les objets
2445 qui semblent s'en rapprocher.
2447 Toutes les valeurs @code{padding} sont exprimées en espaces de portée.
2448 Pour la plupart des objets, la valeur par défaut est aux alentours de
2449 1,0 et parfois moins (cela dépend de chaque objet). Il est possible de
2450 la modifier lorsqu'on a besoin d'un espace vide plus grand (ou plus petit).
2454 @code{self-alignment-X}
2456 @cindex self-alignment-X, propriété
2458 Cette propriété sert à aligner les objets sur la gauche, sur la droite ou
2459 à les centrer par rapport au point de référence des objets parents.
2460 Elle peut être utilisée avec tous les objets qui acceptent la
2461 @code{self-alignment-interface}. Il s'agit, en général, des objets qui
2462 contiennent du texte. Les valeurs admises sont @code{LEFT},
2463 @code{RIGHT} et @code{CENTER}. On peut aussi attribuer à
2464 la place une valeur numérique entre @code{-1} et @code{+1},
2465 où @code{-1} signifie alignement sur la gauche, @code{+1}
2466 alignement sur la droite, et les nombres intermédiaires déplacent
2467 progressivement le texte de la gauche vers la droite. Des valeurs
2468 numériques supérieures à @code{1} sont également admises
2469 pour déplacer le texte encore plus loin vers la gauche, ou des
2470 valeurs inférieures à @code{-1} pour déplacer le texte encore
2471 plus loin vers la droite. Un écart de @code{1} en valeur
2472 correspond à un déplacement de la moitié de la longueur du
2476 @code{extra-spacing-width}
2478 @cindex extra-spacing-width, propriété
2480 Cette propriété est utilisée pour tous les objets qui acceptent la
2481 @code{item-interface}. Elle reçoit deux nombres, le premier étant
2482 ajouté au bord gauche et le second au bord droit. Des nombres
2483 négatifs déplacent le coin vers la gauche, des nombres positifs
2484 vers la droite, si bien que pour élargir un objet, le premier nombre
2485 doit être négatif et le second positif. Attention : tous les objets
2486 n'acceptent pas forcément les deux nombres. Par exemple, l'objet
2487 @code{Accidental} ne retient que le premier nombre (coin gauche).
2491 @code{staff-position}
2493 @cindex staff-position, propriété
2495 @code{staff-position} est une propriété de la
2496 @code{staff-symbol-referencer-interface}, qui s'applique aux objets
2497 positionnés par rapport à la portée. Elle indique, en demi-espaces de
2498 portée, la position verticale des objets par rapport à la ligne médiane
2499 de la portée. C'est bien pratique pour résoudre des problèmes de
2500 collision entre des objets comme les silences valant mesure entière,
2501 les liaisons et les notes de différentes voix.
2506 @cindex force-hshift, propriété
2508 Des notes très proches dans un accord, ou des notes simultanées dans
2509 différentes voix, peuvent être disposées sur deux colonnes, rarement
2510 plus, pour éviter que les têtes de notes ne se chevauchent. On parle
2511 alors de colonnes (ou empilement) de notes et un objet appelé
2512 @code{NoteColumn} est créé pour placer les notes sur la colonne.
2514 La propriété @code{force-hshift} appartient à @code{NoteColumn} (en
2515 réalité à la @code{note-column-interface}). Le fait de la modifier permet
2516 de déplacer un empilement selon l'unité appropriée aux colonnes
2517 de notes, à savoir la largeur des têtes de note de la première voix.
2518 Son utilisation est réservée à des situations complexes dans lesquelles
2519 les commandes habituelles @code{\shiftOn}
2520 (voir @ref{Instanciation explicite des voix}) ne suffisent plus à
2521 résoudre les conflits. Elle est alors préférable à l'utilisation de la
2522 propriété @code{extra-offset}, dans la mesure où on n'a pas besoin
2523 d'exprimer la distance en espaces de portée et où le fait de déplacer
2524 les notes à l'intérieur ou à l'extérieur d'une @code{NoteColumn} affecte
2525 d'autres actions comme les fusionnements de notes.
2530 Pour terminer, quand toutes les autres méthodes ont échoué, il est
2531 possible de repositionner verticalement les objets à la main par rapport
2532 à la ligne médiane de la portée, ou en les déplaçant à une distance
2533 donnée vers une nouvelle position. Les inconvénients sont qu'il faut
2534 individuellement, pour chaque objet, trouver les valeurs correctes de
2535 repositionnement souvent par tâtonnement, et que, puisque le
2536 mouvement est opéré après que LilyPond a placé tous les autres
2537 objets, c'est à l'utilisateur de résoudre tous les problèmes de
2538 collision qui pourraient survenir. Et le pire avec cette méthode est
2539 que, le jour où la musique est modifiée, il faut de nouveau rechercher
2540 les valeurs de repositionnement. Les propriétés à utiliser pour ce type
2541 de repositionnement manuel sont :
2547 @cindex extra-offset, propriété
2549 Cette propriété s'applique à tout objet acceptant la
2550 @code{grob-interface}. Elle reçoit une paire de nombre qui indiquent le
2551 déplacement supplémentaire dans le sens horizontal et vertical. Des
2552 nombres négatifs déplacent l'objet vers la gauche ou vers la droite.
2553 L'unité utilisée est l'espace de portée. Le déplacement supplémentaire
2554 intervient une fois que la composition des objets est achevée, si bien
2555 qu'un objet peut être repositionné à n'importe quel endroit sans
2556 perturber quoi que ce soit.
2560 @cindex positions, propriété
2562 Cette propriété est très utile pour ajuster manuellement l'inclinaison et
2563 la hauteur des barres de ligature, des liaisons et des nolets. Elle est
2564 suivie de deux nombres qui donnent la position des bords gauche et
2565 droit des barres, liaisons, etc. par rapport à la ligne médiane de la
2566 portée. L'unité de référence est l'intervalle de lignes de portée.
2567 Attention toutefois au fait que les liaisons et phrasés ne peuvent pas
2568 être repositionnés n'importe où. LilyPond commence par dresser la liste
2569 des emplacements possibles pour les liaisons et choisit par défaut la
2570 liaison qui @qq{semble la meilleure}. Si la propriété @code{positions}
2571 a été retouchée, la liaison la plus proche de la position demandée sera
2572 retenue dans la liste.
2577 Il est possible qu'un objet ne dispose pas de toutes ces propriétés. Il
2578 est donc nécessaire de consulter la RPI pour vérifier quelles sont les
2579 propriétés disponibles pour l'objet en question.
2581 Voici une liste d'objets les plus couramment impliqués dans les
2582 collisions, avec le nom de l'objet à consulter dans la RPI afin de
2583 trouver les propriétés à retoucher pour obtenir un déplacement.
2586 @multitable @columnfractions .5 .5
2587 @headitem Type d'objet @tab Nom d'objet
2588 @item Articulations @tab @code{Script}
2589 @item Barres de ligature @tab @code{Beam}
2590 @item Doigté @tab @code{Fingering}
2591 @item Liaisons de phrasé @tab @code{Slur}
2592 @item Liaisons de prolongation @tab @code{Tie}
2593 @item Nolets @tab @code{TupletBracket}
2594 @item Nuances (verticalement) @tab @code{DynamicLineSpanner}
2595 @item Nuances (horizontalement) @tab @code{DynamicText}
2596 @item Reprises / marques de texte @tab @code{RehearsalMark}
2597 @item Texte, p.ex. @code{^"texte"} @tab @code{TextScript}
2601 @node Correction des collisions d'objets
2602 @subsection Correction des collisions d'objets
2603 @translationof Fixing overlapping notation
2605 Voyons maintenant comment les propriétés décrites dans la section
2606 précédente peuvent nous aider à résoudre les collisions.
2608 @subheading la propriété padding
2610 @cindex décalage (padding)
2611 @cindex résolution des chevauchements de notation
2612 @cindex chevauchement de notation
2614 En jouant sur la propriété @code{padding} (littéralement
2615 @qq{rembourrage}), on augmente (ou on diminue) la distance entre
2616 des symboles qui sont imprimés au-dessus ou en dessous des notes.
2618 @cindex Script, exemple de dérogation
2619 @cindex padding, exemple d'utilisation de la propriété
2621 @lilypond[quote,fragment,relative=1,verbatim]
2623 \override Script #'padding = #3
2627 @cindex MetronomeMark, exemple de dérogation
2628 @cindex padding, exemple d'utilisation de la propriété
2630 @lilypond[quote,fragment,relative=1,verbatim]
2631 % This will not work, see below:
2632 \override MetronomeMark #'padding = #3
2636 \override Score.MetronomeMark #'padding = #3
2641 Vous remarquerez dans le second exemple à quel point il est important de
2642 préciser le nom du contexte qui contient l'objet. Puisque l'objet
2643 @code{MetronomeMark} appartient au contexte @code{Score}, le fait de
2644 modifier la propriété dans le contexte @code{Voice} passera inaperçu.
2645 Pour plus de détails, voir @ruser{Modification de propriétés}.
2647 Si on augmente la propriété @code{padding} d'un objet alors que celui-ci
2648 fait partie d'un ensemble d'objets positionnés en fonction de leur
2649 @code{outside-staff-priority}, cet objet sera déplacé, ainsi que tous
2650 les autres objets du groupe.
2652 @subheading left-padding et right-padding
2654 @cindex left-padding, propriété
2655 @cindex right-padding, propriété
2657 La propriété @code{right-padding} joue sur l'espacement entre une
2658 altération et la note sur laquelle elle porte. On ne l'utilise pas
2659 souvent, mais l'espacement par défaut peut se révéler inadéquat avec
2660 certaines altérations ou certains glyphes utilisés en musique
2661 microtonale. Le stencil de l'altération devra alors être construit sous
2662 la forme d'un @code{markup} qui contiendra le ou les symboles requis,
2665 @cindex Accidental, exemple de dérogation
2666 @cindex text, exemple d'utilisation de la propriété
2667 @cindex stencil, exemple d'utilisation de la propriété
2668 @cindex AccidentalPlacement, exemple de dérogation
2669 @cindex right-padding, exemple d'utilisation de la propriété
2671 @lilypond[quote,ragged-right,verbatim]
2672 sesquisharp = \markup { \sesquisharp }
2675 % This prints a sesquisharp but the spacing is too small
2676 \once \override Accidental
2677 #'stencil = #ly:text-interface::print
2678 \once \override Accidental #'text = #sesquisharp
2680 % This improves the spacing
2681 \once \override Score.AccidentalPlacement #'right-padding = #0.6
2682 \once \override Accidental
2683 #'stencil = #ly:text-interface::print
2684 \once \override Accidental #'text = #sesquisharp
2690 Cette méthode utilise, pour le stencil des altérations, une retouche
2691 qui ne sera pas reprise par la suite. Le type de stencil est
2692 obligatoirement une procédure, qui consiste ici à imprimer le contenu de
2693 la propriété @code{text} de @code{Accidental}, déclaré comme étant un
2694 signe sesqui-dièse. Celui-ci est ensuite repoussé devant la tête de
2695 note par la retouche de @code{right-padding}.
2699 @subheading la propriété staff-padding
2701 @cindex alignement d'objets sur une ligne de base
2702 @cindex objets, alignement sur une ligne de base
2704 @code{staff-padding} sert à aligner des objets tels que des nuances
2705 sur une ligne fictive à une hauteur donnée par rapport à la portée,
2706 plutôt qu'à une hauteur qui varie en fonction de la position de la note
2707 sur laquelle porte l'objet. Ce n'est pas une propriété de
2708 @code{DynamicText} mais de @code{DynamicLineSpanner}, car la ligne
2709 fictive est destinée à s'appliquer autant à @strong{toutes} les nuances,
2710 notamment celles qui sont créées comme des bandeaux en longueur (en
2711 anglais @emph{Spanners}). Tel est donc le moyen d'aligner les
2712 indications de nuance, comme dans cet exemple repris de la section
2715 @cindex DynamicText, exemple de dérogation
2716 @cindex extra-spacing-width, exemple d'utilisation de la propriété
2717 @cindex DynamicLineSpanner, exemple de dérogation
2718 @cindex staff-padding, exemple d'utilisation de la propriété
2720 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2722 % Extend width by 1 unit
2723 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2724 % Align dynamics to a base line 2 units above staff
2725 \override DynamicLineSpanner #'staff-padding = #2
2730 @subheading la propriété self-alignment-X
2732 L'exemple suivant montre comment résoudre une collision entre une
2733 indication de corde et une hampe, en alignant le coin droit sur le point
2734 de référence de la note parente :
2736 @cindex StringNumber, exemple de dérogation
2737 @cindex self-alignment-X, exemple d'utilisation de la propriété
2739 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
2742 \once \override StringNumber #'self-alignment-X = #RIGHT
2746 @subheading la propriété staff-position
2748 @cindex collision d'objets à l'intérieur d'une portée
2750 Dans une voix, un silence valant une mesure entière peut chevaucher les
2751 notes d'une autre voix. Vu que ces silences sont centrés entre les deux
2752 barres de mesure, il serait très compliqué de programmer LilyPond pour
2753 repérer ces risques de collision, dans la mesure où, normalement, toutes
2754 les collisions entre notes ou entre notes et silences se produisent sur
2755 des notes et silences simultanés. Voici un exemple de collision de ce
2758 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2759 << {c c c c} \\ {R1} >>
2762 Ici, la meilleure solution consiste à déplacer le symbole de pause vers
2763 le bas -- puisque cette pause appartient à la voix deux. Par défaut,
2764 dans la @code{\voiceTwo} (c'est-à-dire dans la seconde voix d'une
2765 construction @w{@code{<<@{...@} \\ @{...@}>>}}), la propriété
2766 @code{staff-position} est réglée sur @code{-4} pour les
2767 @code{MultiMeasureRest} ; nous avons donc besoin de la déplacer, disons,
2768 de quatre demi-intervalles vers le bas, ce qui donne @code{-8}.
2771 @cindex MultiMeasureRest, exemple de dérogation
2772 @cindex staff-position, exemple d'utilisation de la propriété
2774 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2778 \override MultiMeasureRest #'staff-position = #-8
2783 C'est mieux que d'utiliser, par exemple, @code{extra-offset},
2784 car la ligne supplémentaire au-dessus du silence est insérée
2787 @subheading la propriété extra-offset
2789 @cindex positionnement des objets
2790 @cindex positionnement des grobs
2791 @cindex objets, positionnement
2792 @cindex grobs, positionnement
2794 La propriété @code{extra-offset} offre la possibilité de contrôler
2795 entièrement le placement d'un objet, aussi bien horizontalement que
2798 Dans l'exemple suivant, la seconde indication de doigté est déplacée
2799 légèrement vers la gauche et de 1,8 intervalle de lignes vers le bas :
2801 @cindex Fingering, exemple de dérogation
2802 @cindex extra-offset, exemple d'utilisation de la propriété
2804 @lilypond[quote,fragment,relative=1,verbatim]
2807 \once \override Fingering
2808 #'extra-offset = #'(-0.3 . -1.8)
2813 @subheading la propriété positions
2815 @cindex contrôle des nolets, liaisons, phrasés et ligatures
2816 @cindex gestion manuelle des nolets, liaisons, phrasés et ligatures
2817 @cindex ligatures de nolet, gestion manuelle
2818 @cindex liaisons, gestion manuelle
2819 @cindex phrasés, gestion manuelle
2820 @cindex ligatures, gestion manuelle
2822 La propriété @code{positions} permet de contrôler manuellement la
2823 position et l'inclinaison des nolets, coulés, liaisons de phrasé et
2824 barres de ligature. Voici un exemple avec une horrible liaison de
2825 phrasé -- horrible pour avoir tenté de contourner la liaison de
2828 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2829 r4 \acciaccatura e8\( d8 c ~c d c d\)
2833 Nous pourrions tout simplement déplacer la liaison de phrasé au-dessus des
2834 notes, et ce serait la meilleure solution :
2836 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2839 \acciaccatura e8\( d8 c ~c d c d\)
2843 Mais si, pour une quelconque raison, cette solution n'était pas
2844 envisageable, l'autre solution consiste à déplacer légèrement vers le
2845 bas l'extrémité gauche de la liaison de phrasé, grâce à la propriété
2846 @code{positions}. Cela corrige en même temps la forme plutôt
2847 disgracieuse de la liaison.
2849 @cindex PhrasingSlur, exemple de dérogation
2850 @cindex positions, exemple d'utilisation de la propriété
2852 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2854 \once \override PhrasingSlur #'positions = #'(-4 . -3)
2856 e8\( d8 c ~c d c d\)
2859 Voici un autre exemple, tiré du début de la partie de main gauche
2860 du Prélude de Chopin, Op. 28, No 2. Comme nous pouvons le
2861 constater, les barres de ligature chevauchent les notes les plus hautes :
2863 @lilypond[quote,verbatim,fragment,ragged-right]
2866 << {b,8 ais, b, g,} \\ {e, g e, g} >>
2867 << {b,8 ais, b, g,} \\ {e, g e, g} >>
2872 On peut y remédier en déplaçant manuellement vers le haut les deux
2873 extrémités des ligatures de croches, non plus à 2 intervalles au-dessus
2874 de la ligne médiane mais, disons, à 3 :
2876 @cindex Beam, exemple de dérogation
2877 @cindex positions, exemple d'utilisation de la propriété
2879 @lilypond[quote,verbatim,fragment,ragged-right]
2883 \override Beam #'positions = #'(3 . 3)
2888 << {b,8 ais, b, g,} \\ {e, g e, g} >>
2893 Vous remarquerez que la retouche continue à s'appliquer au
2894 second bloc de croches de la première voix mais qu'il ne s'applique
2895 à aucune barre de la deuxième voix.
2897 @subheading la propriété force-hshift
2899 @c FIXME: formatting stuff (ie not important right now IMO)
2900 @c @a nchor Chopin finally corrected TODOgp
2902 Maintenant, nous sommes prêts à appliquer les dernières corrections à
2903 l'exemple de Chopin présenté à la fin de @ref{J'entends des Voix}, que
2904 nous avions laissé dans cet état :
2906 @lilypond[quote,verbatim,fragment,ragged-right]
2907 \new Staff \relative c'' {
2910 { c2 aes4. bes8 } \\
2922 Les deux plus basses notes du premier accord (c'est-à-dire celles de la
2923 troisième voix) ne devraient pas être décalées de l'empilement des deux
2924 plus hautes notes. Pour y remédier, nous réglons le @code{force-hshift}
2925 -- qui est une propriété de @code{NoteColumn} -- de ces notes sur zéro.
2926 Ensuite, la note la plus basse du second accord serait mieux à droite des
2927 notes plus hautes. Pour cela, nous réglons le @code{force-hshift} de
2928 cette note sur 0,5 -- c'est-à-dire la moitié de la largeur d'une tête de
2929 note vers la droite de la colonne des notes plus hautes.
2931 Et voici le résultat final :
2933 @cindex NoteColumn, exemple de dérogation
2934 @cindex force-hshift, exemple d'utilisation de la propriété
2936 @lilypond[quote,verbatim,fragment,ragged-right]
2937 \new Staff \relative c'' {
2940 { c2 aes4. bes8 } \\
2943 \once \override NoteColumn #'force-hshift = #0 <ees c>2
2944 \once \override NoteColumn #'force-hshift = #0.5 des2
2952 @node Exemple concret
2953 @subsection Exemple concret
2954 @translationof Real music example
2956 Pour terminer ce chapitre consacré aux retouches, voici, étape par
2957 étape, la mise en forme d'un exemple concret nécessitant un certain
2958 nombre de retouches jusqu'à l'obtention du résultat attendu. Cet
2959 exemple a été choisi en raison des problèmes inhabituels de notation
2960 qu'il soulevait et pour vous apprendre à les résoudre grâce au Manuel de
2961 notation. Il n'est pas représentatif d'une opération normale de gravure ;
2962 que ces difficultés ne vous découragent donc pas ! Des difficultés comme
2963 celles-ci ne sont, heureusement, pas courantes !
2965 Cet exemple est tiré de la Première Ballade de Chopin, Op. 23, mesures
2966 6 à 9 ; cela correspond à la transition entre le Lento d'ouverture et le
2967 Moderato. Voici, pour commencer, ce à quoi nous voulons que la
2968 partition ressemble ; pour limiter les complications, nous n'avons pas
2969 fait apparaître les indications de nuance, de doigté ni de pédale.
2972 @c The following should appear as music without code
2973 @c This example should not be indexed
2974 @lilypond[quote,ragged-right]
2975 rhMusic = \relative c'' {
2978 \once \override Tie #'staff-position = #3.5
2982 \mergeDifferentlyHeadedOn
2983 \mergeDifferentlyDottedOn
2984 bes2.^\markup {\bold "Moderato"} r8
2986 {c,8[ d fis bes a] | }
2988 % Reposition the c2 to the right of the merged note
2989 {c,8~ \once \override NoteColumn #'force-hshift = #1.0
2990 % Move the c2 out of the main note column so the merge will work
2993 % Stem on the d2 must be down to permit merging
2994 {s8 \stemDown \once \override Stem #'transparent = ##t d2}
2998 \mergeDifferentlyHeadedOff
2999 \mergeDifferentlyDottedOff
3003 lhMusic = \relative c' {
3005 <d g, d>1)\arpeggio |
3012 \new Staff = "RH" <<
3016 \new Staff = "LH" <<
3025 Nous constatons tout d'abord que, dans la troisième mesure, la main
3026 droite compte quatre voix. Ce sont les cinq croches avec une barre,
3027 le do avec liaison, le ré blanche qui se fond avec le ré croche, et le
3028 fa dièse noire pointée qui se fond lui aussi avec la croche de même
3029 hauteur. Tout le reste se réduit à une seule voix. Le plus simple est
3030 donc de créer temporairement ces quatre voix au moment opportun.
3031 Si vous avez oublié comment faire, reportez-vous à
3032 @ref{J'entends des Voix}. Commençons par saisir les notes comme
3033 appartenant à deux variables, mettons en place l'ossature des
3034 portées dans un bloc score et voyons ce que LilyPond propose par
3037 @lilypond[quote,verbatim,ragged-right]
3038 rhMusic = \relative c'' {
3043 % Start polyphonic section of four voices
3045 {c,8 d fis bes a | }
3056 lhMusic = \relative c' {
3065 \new Staff = "RH" <<
3069 \new Staff = "LH" <<
3078 Toutes les notes sont correctes mais l'allure générale est loin d'être
3079 satisfaisante. La liaison se heurte à l'indication de mesure lors du
3080 changement de métrique, la ligature des croches n'est pas bonne dans la
3081 troisième mesure, les notes ne sont pas fusionnées et il manque plusieurs
3082 éléments de notation. Commençons par le plus simple. Nous pouvons
3083 corriger la ligature des croches en la créant manuellement et nous pouvons
3084 facilement ajouter les limites droite et gauche de la liaison de phrasé,
3085 puisque tout cela a déjà été traité dans le tutoriel. Voici le résultat :
3087 @lilypond[quote,verbatim,ragged-right]
3088 rhMusic = \relative c'' {
3093 % Start polyphonic section of four voices
3095 {c,8[ d fis bes a] | }
3106 lhMusic = \relative c' {
3115 \new Staff = "RH" <<
3119 \new Staff = "LH" <<
3128 La première mesure est maintenant correcte. La seconde contient un
3129 arpège et doit se terminer par une double barre. Comment faire, puisque
3130 cela n'a pas été traité dans le Manuel d'initiation ? C'est alors qu'il
3131 faut nous reporter au Manuel de notation. Quand on cherche @qq{arpège}
3132 et @qq{barre de mesure} dans l'index, on voit aisément qu'il faut ajouter
3133 @code{\arpeggio} à un accord pour produire un arpège et qu'une double
3134 barre est le résultat de la commande @code{\bar "||"}. Rien de plus
3135 facile ! Nous devons ensuite corriger la collision entre la liaison et
3136 l'indication de mesure. Le mieux est de déplacer la liaison vers le
3137 haut. La méthode pour déplacer les objets a déjà été présentée dans
3138 @ref{Déplacement d'objets}, et l'on sait que, pour des objets
3139 positionnés par rapport à la portée, il nous faut modifier leur
3140 propriété @code{staff-position}, exprimée en demi-intervalles de lignes
3141 par rapport à la ligne médiane de la portée. Voici donc la retouche à
3142 insérer juste devant la première note liée ; elle est censée déplacer la
3143 liaison vers le haut de 3,5 demi-intervalles de lignes au-dessus de la
3146 @code{\once \override Tie #'staff-position = #3.5}
3148 Cela s'adjoint à la deuxième mesure, pour donner :
3150 @lilypond[quote,verbatim,ragged-right]
3151 rhMusic = \relative c'' {
3153 \once \override Tie #'staff-position = #3.5
3158 % Start polyphonic section of four voices
3160 {c,8[ d fis bes a] | }
3171 lhMusic = \relative c' {
3173 <d g, d>1)\arpeggio |
3180 \new Staff = "RH" <<
3184 \new Staff = "LH" <<
3193 Venons-en à la troisième mesure et au début de la section Moderato. Dans
3194 le Tutoriel, il est indiqué comment insérer du texte en gras à l'aide de
3195 la commande @code{\markup} ; pas de problème, du coup, pour ajouter
3196 @qq{Moderato} en gras. Mais comment faire pour fusionner les notes de
3197 différentes voix ? C'est là que le Manuel de notation peut nous venir
3198 en aide. Une recherche sur @qq{fusionnement de notes} dans l'index nous
3199 renvoie au chapitre @ruser{Résolution des collisions}, et plus
3200 précisément aux commandes permettant de fusionner des notes en fonction
3201 de leur type et selon qu'elles sont pointées ou non. Dans notre
3202 exemple, pour la durée de la polyphonie de la troisième mesure, nous
3203 avons besoin de fusionner deux types de notes ; grâce aux informations
3204 trouvées dans le Manuel de notation, nous ajoutons
3207 \mergeDifferentlyHeadedOn
3208 \mergeDifferentlyDottedOn
3212 au début de cette section et
3215 \mergeDifferentlyHeadedOff
3216 \mergeDifferentlyDottedOff
3220 à la fin, ce qui donne :
3222 @lilypond[quote,verbatim,ragged-right]
3223 rhMusic = \relative c'' {
3225 \once \override Tie #'staff-position = #3.5
3229 bes2.^\markup {\bold "Moderato"} r8
3230 \mergeDifferentlyHeadedOn
3231 \mergeDifferentlyDottedOn
3232 % Start polyphonic section of four voices
3234 {c,8[ d fis bes a] | }
3242 \mergeDifferentlyHeadedOff
3243 \mergeDifferentlyDottedOff
3247 lhMusic = \relative c' {
3249 <d g, d>1)\arpeggio |
3256 \new Staff = "RH" <<
3260 \new Staff = "LH" <<
3269 Ces retouches ont permis de fusionner les deux fa dièse mais pas les
3270 deux ré. Pourquoi ? La réponse se trouve dans la même section du
3271 Manuel de notation : les notes à fusionner doivent avoir des hampes dans
3272 des directions opposées et deux notes ne peuvent pas être fusionnées
3273 s'il y a une troisième note dans la même colonne. Ici, les deux ré ont
3274 leur hampe orientée vers le haut et il y a une troisième note, do. Nous
3275 savons changer l'orientation de la hampe avec @code{\stemDown} et
3276 le Manuel de notation nous indique également comment déplacer le do
3277 -- en produisant un décalage grâce à l'une des commandes @code{\shift}.
3278 Mais laquelle ? Le do appartient à la deuxième voix et n'est pas décalé ;
3279 les deux ré appartiennent respectivement à la première et à la troisième
3280 voix, et l'un n'est pas décalé tandis que l'autre l'est. Il nous faut
3281 donc décaler largement le do avec la commande @code{\shiftOnn} pour
3282 éviter une interférence avec les deux ré. Voici ce que donnent ces
3285 @cindex Tie, exemple de dérogation
3286 @cindex staff-position, exemple d'utilisation de la propriété
3288 @lilypond[quote,verbatim,ragged-right]
3289 rhMusic = \relative c'' {
3291 \once \override Tie #'staff-position = #3.5
3295 bes2.^\markup {\bold "Moderato"} r8
3296 \mergeDifferentlyHeadedOn
3297 \mergeDifferentlyDottedOn
3298 % Start polyphonic section of four voices
3300 {c,8[ d fis bes a] | }
3302 % Move the c2 out of the main note column so the merge will work
3303 {c,8~ \shiftOnn c2 | }
3305 % Stem on the d2 must be down to permit merging
3306 {s8 \stemDown d2 | }
3310 \mergeDifferentlyHeadedOff
3311 \mergeDifferentlyDottedOff
3315 lhMusic = \relative c' {
3317 <d g, d>1)\arpeggio |
3324 \new Staff = "RH" <<
3328 \new Staff = "LH" <<
3337 Pas loin. Il ne reste plus que deux problèmes : les ré une fois
3338 fusionnés ne devraient plus avoir de hampe vers le bas, et le do serait
3339 mieux à la droite des ré. Nous savons remédier à ces deux problèmes
3340 grâce aux retouches précédentes : nous allons rendre la hampe
3341 transparente et déplacer le do avec la propriété @code{force-hshift}.
3342 Et voici le résultat final :
3344 @cindex NoteColumn, exemple de dérogation
3345 @cindex force-hshift, exemple d'utilisation de la propriété
3346 @cindex Stem, exemple de dérogation
3347 @cindex transparent, exemple d'utilisation de la propriété
3349 @lilypond[quote,verbatim,ragged-right]
3350 rhMusic = \relative c'' {
3353 \once \override Tie #'staff-position = #3.5
3357 bes2.^\markup {\bold "Moderato"} r8
3358 \mergeDifferentlyHeadedOn
3359 \mergeDifferentlyDottedOn
3361 {c,8[ d fis bes a] | }
3363 % Reposition the c2 to the right of the merged note
3364 {c,8~ \once \override NoteColumn #'force-hshift = #1.0
3365 % Move the c2 out of the main note column so the merge will work
3368 % Stem on the d2 must be down to permit merging
3369 {s8 \stemDown \once \override Stem #'transparent = ##t d2}
3373 \mergeDifferentlyHeadedOff
3374 \mergeDifferentlyDottedOff
3378 lhMusic = \relative c' {
3380 <d g, d>1)\arpeggio |
3387 \new Staff = "RH" <<
3391 \new Staff = "LH" <<
3402 @node Autres retouches
3403 @section Autres retouches
3404 @translationof Further tweaking
3407 * Autres utilisations des retouches::
3408 * Utilisation de variables dans les retouches::
3409 * Autres sources de documentation::
3410 * Options ralentissant le traitement::
3411 * Retouches avancées avec Scheme::
3414 @node Autres utilisations des retouches
3415 @subsection Autres utilisations des retouches
3416 @translationof Other uses for tweaks
3418 @cindex transparent, utilisation de la propriété
3419 @cindex création d'objet invisible
3420 @cindex suppression d'objets
3421 @cindex objets, suppression d'
3422 @cindex masquage d'objets
3423 @cindex objets, masquage d'
3424 @cindex invisibles, objets
3425 @cindex objets, invisibles
3426 @cindex liaison de tenue avec changement de voix
3428 @subheading Liaison entre plusieurs voix
3430 Voici un exemple qui montre comment créer une liaison de
3431 prolongation entre des notes appartenant à des voix différentes. En
3432 temps normal, seules deux notes appartenant à une même voix
3433 peuvent être ainsi liées. La solution consiste à utiliser deux voix,
3434 dont l'une avec les notes liées
3436 @lilypond[quote,fragment,relative=2]
3437 << { b8~ b8\noBeam }
3443 et à rendre transparente la première hampe de cette voix ;
3444 on a alors l'impression que la liaison couvre les deux voix.
3446 @cindex Stem, exemple de dérogation
3447 @cindex transparent, exemple d'utilisation de la propriété
3449 @lilypond[quote,fragment,relative=2,verbatim]
3452 \once \override Stem #'transparent = ##t
3460 Pour être sûr que la hampe que nous avons rendue transparente
3461 n'empiète pas trop sur le trait de liaison, nous pouvons l'allonger en
3462 réglant la longueur (@code{length}) sur @code{8},
3464 @lilypond[quote,fragment,relative=2,verbatim]
3467 \once \override Stem #'transparent = ##t
3468 \once \override Stem #'length = #8
3476 @subheading Rendu MIDI d'un point d'orgue
3478 @cindex stencil, utilisation de la propriété
3479 @cindex point d'orgue, rendu en MIDI
3481 En ce qui concerne les objets extérieurs à la portée, quand on veut les
3482 faire disparaître de la partition imprimée , il est généralement
3483 préférable de modifier leur propriété @code{stencil} plutôt que leur
3484 propriété @code{transparent}. Le fait d'attribuer à la propriété
3485 @code{stencil} d'un objet la valeur @code{#f} supprimera entièrement
3486 celui-ci de la partition. Il ne risquera donc pas de gêner le placement
3489 Par exemple, si nous voulons changer le réglage de métronome pour
3490 simuler un point d'orgue dans le fichier MIDI, nous ne voulons surtout
3491 pas que cette indication métronomique apparaisse sur la partition ni
3492 qu'elle influence l'espacement entre les deux systèmes ou la position
3493 des annotations voisines sur la portée. Le fait d'attribuer à la propriété
3494 @code{stencil} la valeur @code{#f} est donc la bonne solution. Nous
3495 montrons ci-dessous le résultat des deux méthodes :
3497 @cindex MetronomeMark, exemple de dérogation
3498 @cindex transparent, exemple d'utilisation de la propriété
3500 @lilypond[quote,verbatim,ragged-right]
3503 % Visible tempo marking
3506 \once \override Score.MetronomeMark #'transparent = ##t
3507 % Invisible tempo marking to lengthen fermata in MIDI
3510 % New tempo for next section
3519 @cindex MetronomeMark, exemple de dérogation
3520 @cindex stencil, exemple d'utilisation de la propriété
3522 @lilypond[quote,verbatim,ragged-right]
3525 % Visible tempo marking
3528 \once \override Score.MetronomeMark #'stencil = ##f
3529 % Invisible tempo marking to lengthen fermata in MIDI
3532 % New tempo for next section
3542 Les deux méthodes permettent d'enlever l'indication métronomique qui
3543 allonge le point d'orgue de la partition, et toutes deux modifient le
3544 rythme MIDI comme souhaité mais, dans la première, l'indication
3545 métronomique transparente repousse vers le haut l'indication de tempo,
3546 contrairement à la seconde (avec le stencil désactivé) qui la laisse à
3550 @node Utilisation de variables dans les retouches
3551 @subsection Utilisation de variables dans les retouches
3552 @translationof Using variables for tweaks
3554 @cindex variables, utilisation dans les retouches
3555 @cindex utilisation de variables dans les retouches
3556 @cindex retouches et utilisation de variables
3558 Les commandes de retouche sont souvent longues et pénibles à
3559 taper, et ne tolèrent pas la moindre erreur. Lorsqu'on a besoin de
3560 faire plusieurs fois les mêmes retouches, il est préférable de
3561 définir des variables qui les contiennent.
3563 Imaginons que nous voulions accentuer certains mots dans des paroles en
3564 les mettant en italique. Au lieu des commandes @code{\italic} et
3565 @code{\bold}, qui ne fonctionnent dans les paroles que si elles sont
3566 enchâssées dans un @code{\markup}, ce qui les rend pénibles à saisir,
3567 pouvons-nous employer les commandes @code{\override} et @code{\revert} ?
3570 @code{\override Lyrics . LyricText #'font-shape = #'italic}
3571 @code{\override Lyrics . LyricText #'font-series = #'bold}
3573 @code{\revert Lyrics . LyricText #'font-shape}
3574 @code{\revert Lyrics . LyricText #'font-series}
3577 Là encore, ce serait extrêmement pénible à saisir, surtout s'il y avait
3578 beaucoup de mots à retoucher de cette façon. Plutôt que cette
3579 solution, nous déclarons ces commandes comme étant deux variables
3580 et les utilisons comme suit -- quoique on choisirait sans doute pour
3581 les variables des noms plus courts pour simplifier la frappe :
3583 @cindex LyricText, exemple de dérogation
3584 @cindex font-shape, exemple d'utilisation de la propriété
3585 @cindex font-series, exemple d'utilisation de la propriété
3587 @lilypond[quote,verbatim]
3589 \override Lyrics . LyricText #'font-shape = #'italic
3590 \override Lyrics . LyricText #'font-series = #'bold
3593 \revert Lyrics . LyricText #'font-shape
3594 \revert Lyrics . LyricText #'font-series
3597 global = { \time 4/4 \partial 4 \key c \major}
3598 SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a a g }
3599 AltoMusic = \relative c' { c4 | c4. c8 e4 e | f f e }
3600 TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
3601 BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
3602 VerseOne = \lyrics { E -- | ter -- nal \emphasize Fa -- ther, \normal | strong to save, }
3603 VerseTwo = \lyricmode { O | \emphasize Christ, \normal whose voice the | wa -- ters heard, }
3604 VerseThree = \lyricmode { O | \emphasize Ho -- ly Spi -- rit, \normal | who didst brood }
3605 VerseFour = \lyricmode { O | \emphasize Tri -- ni -- ty \normal of | love and pow'r }
3611 \new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
3612 \new Voice = "Alto" { \voiceTwo \AltoMusic }
3613 \new Lyrics \lyricsto "Soprano" { \VerseOne }
3614 \new Lyrics \lyricsto "Soprano" { \VerseTwo }
3615 \new Lyrics \lyricsto "Soprano" { \VerseThree }
3616 \new Lyrics \lyricsto "Soprano" { \VerseFour }
3620 \new Voice = "Tenor" { \voiceOne \TenorMusic }
3621 \new Voice = "Bass" { \voiceTwo \BassMusic }
3628 @node Autres sources de documentation
3629 @subsection Autres sources de documentation
3630 @translationof Other sources of information
3632 Le Manuel d'utilisation des programmes contient beaucoup d'informations
3633 sur LilyPond. Cependant vous pouvez en découvrir encore plus en
3634 consultant les fichiers internes de LilyPond. Pour cela, il vous faut
3635 d'abord connaître le répertoire @emph{ad hoc} sur votre système.
3636 L'emplacement du répertoire dépend (a) du fait que, pour vous procurer
3637 LilyPond, vous avez téléchargé un paquet précompilé sur lilypond.org, ou
3638 vous l'avez installé grâce à votre gestionnaire de paquetages
3639 (c'est-à-dire distribué avec Linux ou installé avec fink ou cygwin), ou
3640 encore vous l'avez compilé directement à partir des sources ; et (b) du
3641 système d'exploitation sur lequel il tourne.
3643 @strong{Téléchargé depuis lilypond.org}
3648 @file{@var{INSTALLDIR}/lilypond/usr/share/lilypond/current/}
3652 @code{@var{INSTALLDIR}/LilyPond.app/Contents/Resources/share/lilypond/current/}
3653 Pour accéder à ce dossier, deux possibilités : soit, dans un Terminal,
3654 taper @code{cd} suivi du chemin complet ci-dessus ; soit
3655 Control-cliquer (ou clic droit) sur l'application LilyPond
3656 et sélectionner @qq{Afficher le contenu du paquet}.
3660 Dans l'Explorateur Windows, voir
3661 @code{@var{INSTALLDIR}/LilyPond/usr/share/lilypond/current/}
3665 @strong{Installé par un gestionnaire de paquetages ou compilé d'après
3668 @code{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, où
3669 @var{PREFIX} est déterminé par votre gestionnaire de paquetages ou par
3670 le script @code{configure}, et @var{X.Y.Z} est le numéro de version de
3675 Dans ce répertoire, deux sous-répertoires sont particulièrement
3679 @item @code{ly/} --- contient les fichiers en format LilyPond
3680 @item @code{scm/} --- contient les fichiers en format Scheme
3683 Commençons par examiner quelques fichiers contenus dans @code{ly/}.
3684 Nous ouvrons @code{ly/property-init.ly} dans un éditeur de texte --
3685 celui que vous avez l'habitude d'utiliser pour les fichiers @code{.ly}
3686 fera très bien l'affaire. Ce fichier contient les définitions de toutes
3687 les commandes standard prédéfinies de LilyPond, comme @code{\stemUp} et
3688 @code{\slurDotted}. Vous pouvez constater que ce n'est rien d'autre
3689 que des définitions de variables composées d'un ou plusieurs groupes
3690 de commandes @code{\override}. Par exemple, @code{\tieDotted}
3695 \override Tie #'dash-period = #0.75
3696 \override Tie #'dash-fraction = #0.1
3700 Si vous n'aimez pas les valeurs par défaut, les commandes prédéfinies
3701 peuvent être facilement redéfinies, comme n'importe quelle autre
3702 variable, en tête de votre fichier d'entrée.
3704 Voici les fichiers les plus utiles dans le répertoire @code{ly/} :
3706 @multitable @columnfractions .4 .6
3707 @headitem Nom de fichier
3709 @item @code{ly/engraver-init.ly}
3710 @tab Définitions des Contextes de graveurs
3711 @item @code{ly/paper-defaults-init.ly}
3712 @tab Réglages papier par défaut
3713 @item @code{ly/performer-init.ly}
3714 @tab Définitions des Contextes d'interprétation
3715 @item @code{ly/property-init.ly}
3716 @tab Définitions de toutes les commandes prédéfinies courantes
3717 @item @code{ly/spanner-init.ly}
3718 @tab Définitions des commandes prédéfinies pour les bandeaux
3721 Les autres réglages (comme les définitions de commandes @emph{markup})
3722 sont conservés comme fichiers @code{.scm} (Scheme). Le langage de
3723 programmation Scheme offre une interface programmable dans le
3724 processus interne de LilyPond. De plus amples explications sur ces
3725 fichiers dépasseraient le cadre de ce manuel, dans la mesure où elles
3726 requièrent la connaissance du langage Scheme. Les utilisateurs qui
3727 souhaiteraient comprendre le fonctionnement de ces fichiers de
3728 configuration doivent être avertis que des connaissances techniques
3729 substantielles et beaucoup de temps sont nécessaires (voir le
3730 @ref{Tutoriel Scheme}).
3732 Si c'est votre cas, les fichiers Scheme les plus utiles à connaître sont :
3734 @multitable @columnfractions .4 .6
3735 @headitem Nom de fichier
3737 @item @code{scm/auto-beam.scm}
3738 @tab Régles par défaut des ligatures subalternes
3739 @item @code{scm/define-grobs.scm}
3740 @tab Réglages par défaut des propriétés de @emph{grobs}
3741 @item @code{scm/define-markup-commands.scm}
3742 @tab Spécification de toutes les commandes de @emph{markup}
3743 @item @code{scm/midi.scm}
3744 @tab Réglages par défaut pour les sorties MIDI
3745 @item @code{scm/output-lib.scm}
3746 @tab Réglages affectant l'apparence des frets, couleurs, altérations,
3747 barres de mesure, etc.
3748 @item @code{scm/parser-clef.scm}
3749 @tab Définition des clefs prises en charge
3750 @item @code{scm/script.scm}
3751 @tab Réglages par défaut des articulations
3756 @node Options ralentissant le traitement
3757 @subsection Options ralentissant le traitement
3758 @translationof Avoiding tweaks with slower processing
3760 LilyPond peut effectuer des vérifications supplémentaires lors du
3761 traitement des fichiers ; cependant, le rendu nécessitera alors plus de
3762 temps. En contrepartie, il y aura moins d'ajustements manuels à
3763 réaliser. Si une indication textuelle ou des paroles débordent dans la
3764 marge, ces vérifications auront pour effet de serrer la ligne
3765 suffisamment pour faire tenir le texte entre les marges.
3767 Pour pouvoir fonctionner en toutes circonstances, ces vérifications
3768 doivent être activées ; il faut pour cela placer les retouches dans un
3769 bloc @code{Score \with}, plutôt qu'à l'intérieur du fragment musical,
3774 % Pour s'assurer que les indications textuelles et paroles
3775 % seront à l'intérieur des marges de la page.
3776 \override PaperColumn #'keep-inside-line = ##t
3777 \override NonMusicalPaperColumn #'keep-inside-line = ##t
3784 @node Retouches avancées avec Scheme
3785 @subsection Retouches avancées avec Scheme
3786 @translationof Advanced tweaks with Scheme
3788 Nous avons vu à quel point le résultat obtenu avec LilyPond peut
3789 être largement personnalisé à l'aide de commandes comme
3790 @code{\override} et @code{\tweak}. Et pourtant l'utilisation de
3791 Scheme ouvre des possibilités encore plus grandes.
3792 Le code écrit dans le langage de programmation Scheme peut être
3793 intégré directement dans le processus interne de LilyPond. Bien sûr,
3794 il faut pour cela connaître un minimum de programmation en langage
3795 Scheme. Pour des explications complètes là-dessus, consultez le
3796 @ref{Tutoriel Scheme}.
3798 En guise d'illustration -- et ce n'est qu'une possibilité parmi tant
3799 d'autres -- nous allons attribuer à une propriété non pas une valeur
3800 préétablie mais une procédure Scheme qui sera lancée à chaque
3801 utilisation de la propriété par LilyPond. De cette façon, nous obtenons
3802 un réglage dynamique de la propriété par le simple fait d'invoquer la
3803 procédure. Dans cet exemple, nous colorons les têtes de notes en
3804 fonction de leur position sur la portée.
3807 @cindex x11-color, exemple d'utilisaation de la fonction
3808 @cindex NoteHead, exemple de dérogation
3809 @cindex color, détermination de la propriété par une procédure Scheme
3811 @lilypond[quote,verbatim,ragged-right]
3812 #(define (color-notehead grob)
3813 "Color the notehead according to its position on the staff."
3814 (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7)))
3816 ;; Return rainbow colors
3817 ((1) (x11-color 'red )) ; for C
3818 ((2) (x11-color 'orange )) ; for D
3819 ((3) (x11-color 'yellow )) ; for E
3820 ((4) (x11-color 'green )) ; for F
3821 ((5) (x11-color 'blue )) ; for G
3822 ((6) (x11-color 'purple )) ; for A
3823 ((0) (x11-color 'violet )) ; for B
3829 % Arrange to obtain color from color-notehead procedure
3830 \override NoteHead #'color = #color-notehead
3837 Some -- where o -- ver the Rain -- bow, way up high,
3841 Vous trouverez dans @ref{Scheme et les retouches} d'autres exemples
3842 d'utilisation de ces interfaces programmables.