]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/fr/learning/tweaks.itely
Merge branch 'lilypond/translation' of ssh://git.sv.gnu.org/srv/git/lilypond into...
[lilypond.git] / Documentation / fr / learning / tweaks.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
2 @ignore
3         Translation of GIT committish: 95e6825ee09ca7f8eea87580301c8819ff1d571b
4
5     When revising a translation, copy the HEAD committish of the
6     version that you are working on.  See TRANSLATION for details.
7 @end ignore
8
9 @c \version "2.12.0"
10
11 @c Translators: Valentin Villenave, Nicolas Klutchnikoff, Damien Heurtebise
12 @c Translation checkers: Jean-Charles Malahieude, John Mandereau
13 @c Translation status: post-GDP
14
15 @node Retouche de partition
16 @chapter Retouche de partition
17 @translationof Tweaking output
18
19 Ce chapitre indique comment modifier le résultat obtenu.
20 LilyPond offre de nombreuses possibilités de réglages, permettant
21 théoriquement de modifier chaque élément de votre partition.
22
23 @menu
24 * Retouches élémentaires::             
25 * Le manuel des références internes::  
26 * Apparence des objets::       
27 * Positionnement des objets::        
28 * Collisions d'objets::       
29 * Autres retouches::            
30 @end menu
31
32 @node Retouches élémentaires
33 @section Retouches élémentaires
34 @translationof Tweaking basics
35
36 @menu
37 * Introduction aux retouches::      
38 * Objets et interfaces::      
39 * Conventions de nommage des objets et propriétés::  
40 * Méthodes de retouche::            
41 @end menu
42
43 @node Introduction aux retouches
44 @subsection Introduction aux retouches
45 @translationof Introduction to tweaks
46
47 LilyPond regroupe sous le terme de @qq{retouches} (@emph{tweaks} en
48 anglais) les différents moyens dont dispose l'utilisateur pour 
49 intervenir sur l'interprétation du fichier d'entrée et pour modifier 
50 l'apparence du fichier de sortie.  Certaines retouches sont très 
51 simples à mettre en œuvre ; d'autres sont plus complexes.  Mais 
52 à elles toutes, elles permettent d'obtenir tout ce qu'on veut en matière
53 de musique imprimée.
54
55 Dans ce chapitre, nous traitons des concepts de base nécessaires
56 pour comprendre l'art de la retouche.  Puis nous présentons de 
57 nombreuses commandes déjà prêtes, qu'il suffit de recopier pour 
58 obtenir un résultat identique dans vos partitions ; nous en profitons
59 pour expliquer comment ces commandes ont été construites, si bien 
60 que vous pouvez apprendre par la même occasion à développer 
61 vos propres retouches.
62
63 Avant de vous lancer dans ce chapitre, il peut être utile de revoir la
64 section @ref{Contextes et graveurs}, dans la mesure où les contextes,
65 graveurs et autres propriétés qui y sont décrits, sont indispensables 
66 pour comprendre et construire les retouches.
67
68 @node Objets et interfaces
69 @subsection Objets et interfaces
70 @translationof Objects and interfaces
71
72 @cindex objet
73 @cindex grob
74 @cindex spanner
75 @cindex extenseur
76 @cindex interface
77 @cindex propriétés des objets
78 @cindex objet, propriétés
79 @cindex objet de rendu
80 @cindex rendu, objets de
81
82 Toute retouche implique que l'on modifie les opérations internes 
83 et les structures du programme LilyPond.  Nous allons donc, pour
84 commencer, présenter certains termes qui servent à décrire ces
85 opérations internes et ces structures.
86
87 Le terme d'@qq{Objet} est un terme générique qui fait référence à 
88 une multitude de structures internes mises en place par LilyPond 
89 durant la compilation d'un fichier d'entrée.  Ainsi, quand une 
90 commande du type @code{\new Staff} apparaît, un nouvel objet 
91 du type @code{Staff} est créé.  Cet objet @code{Staff} contient 
92 alors toutes les propriétés associées à cette portée, par exemple son
93 nom et son armure, ainsi que le détail des graveurs qui ont été 
94 désignés pour fonctionner dans ce contexte de portée.  
95 Certains objets peuvent contenir les propriétés de tous les autres 
96 contextes, comme les objets @code{Voice}, les objets @code{Score},
97 les objets @code{Lyrics} ; d'autres se rapportent à tous les éléments de
98 notation, comme les barres de mesure, les liaisons, les nuances, etc. 
99 Chaque objet dispose de son propre échantillon de valeurs pour le 
100 réglage des propriétés.
101
102 Certains types d'objet portent des noms spécifiques.  Les objets qui se 
103 rapportent à des éléments de notation sur le fichier de sortie, comme les 
104 notes, les hampes, les liaisons de phrasé ou de prolongation, les doigtés, 
105 les clefs, etc. sont appelés @qq{Objets de rendu} ; ils sont aussi connus 
106 sous le nom d'@qq{Objets graphiques} (en anglais : @emph{Graphical
107 objects} ou @emph{Grobs} pour faire court).  Ce sont bien des objets au
108 sens générique ci-dessus, et, en tant que tels, ils reçoivent des
109 propriétés qui leur sont associées, comme leur position, leur taille,
110 leur couleur, etc. 
111
112 Certains objets de rendu, comme les liaisons de phrasé, les soufflets 
113 de crescendo, les marques d'octaviation et beaucoup d'autres @emph{grobs}, 
114 ont pour particularité de ne pas se situer à un seul et unique endroit
115 -- ils ont un point de départ, un point d'arrivée, et éventuellement
116 d'autres propriétés relatives à leur forme.  Ces objets avec une forme
117 étendue sont appelés des bandeaux (@emph{Spanners} en anglais).
118
119 Il reste à expliquer ce que sont les @qq{interfaces}.  De nombreux objets, 
120 qui peuvent être très différents les uns des autres, ont pour point commun
121 de devoir être compilés simultanément.  Par exemple, tous les
122 @emph{grobs} ont une couleur, une taille, une position, etc., et toutes
123 ces propriétés sont compilées simultanément durant l'interprétation du
124 fichier d'entrée par LilyPond.  Pour alléger ces opérations internes,
125 ces actions et propriétés communes sont regroupées en un objet appelé
126 @code{grob-interface}.  Il existe beaucoup d'autres regroupements de
127 propriétés communes dans le genre de celui-ci, chacun portant un nom qui
128 se termine par @code{interface}.  En tout, on en compte plus d'une
129 centaine.  Nous verrons plus loin en quoi c'est intéressant et utile
130 pour l'utilisateur. 
131
132 Ainsi s'achève le tour des principaux termes relatifs aux objets et 
133 que nous serons amenés à utiliser dans ce chapitre. 
134
135 @node Conventions de nommage des objets et propriétés
136 @subsection Conventions de nommage des objets et propriétés
137 @translationof Naming conventions of objects and properties
138
139 @cindex conventions de nommage des objets
140 @cindex conventions de nommage des propriétés
141 @cindex objets, conventions de nommage des
142 @cindex propriétés, conventions de nommage des
143
144 Nous avons eu un aperçu, dans @ref{Contextes et graveurs}, de 
145 la façon de nommer les objets.  Voici maintenant une liste de 
146 référence des types d'objets et de propriétés les plus courants, 
147 avec leurs conventions de nommage et quelques exemples 
148 de cas concrets.  La lettre @var{A} représente n'importe quel 
149 caractère alphabétique majuscule, et les lettres @var{aaa} 
150 un nombre indéterminé de caractères alphabétiques minuscules.  
151 Les autres caractères sont à prendre tels qu'ils se présentent.
152
153 @multitable @columnfractions .33 .33 .33
154 @headitem Type d'objet/propriété           
155         @tab Convention de nommage
156         @tab Exemples
157 @item Contextes
158         @tab Aaaa ou AaaaAaaaAaaa
159         @tab Staff, GrandStaff
160 @item Objets de rendu
161         @tab Aaaa ou AaaaAaaaAaaa
162         @tab Slur, NoteHead
163 @item Graveurs
164         @tab Aaaa_aaa_engraver
165         @tab Clef_engraver, Note_heads_engraver
166 @item Interfaces
167         @tab aaa-aaa-interface
168         @tab grob-interface, break-aligned-interface 
169 @item Propriétés de contexte
170         @tab aaa ou aaaAaaaAaaa
171         @tab alignAboveContext, skipBars
172 @item Propriétés d'objet de rendu
173         @tab aaa ou aaa-aaa-aaa
174         @tab direction, beam-thickness
175 @end multitable
176
177 Comme nous le verrons bientôt, les propriétés des différents 
178 types d'objet sont modifiées par des commandes différentes, si bien 
179 qu'il est bon de savoir reconnaître le type d'un objet en fonction du nom
180 de ses propriétés. 
181
182 @node Méthodes de retouche
183 @subsection Méthodes de retouche
184 @translationof Tweaking methods
185
186 @cindex retouches, méthodologie
187 @cindex méthodes de retouche
188
189 @strong{La commande \override}
190
191 @cindex override, commande
192 @cindex override, syntaxe
193
194 @funindex \override
195 @funindex override
196
197 Dans @ref{Modification des propriétés d'un contexte} et dans 
198 @ref{Ajout et suppression de graveurs}, nous avons déjà rencontré les
199 commandes @code{\set} et @code{\with}, qui servent à changer les
200 propriétés des @strong{contextes} et à supprimer ou ajouter des
201 @strong{graveurs}.  Voici maintenant d'autres commandes plus
202 importantes. 
203
204 La commande pour changer les propriétés des @strong{objets de rendu} 
205 est @code{\override}.  Du fait que cette commande modifie en profondeur 
206 les propriétés internes de LilyPond, sa syntaxe n'est pas aussi simple que 
207 pour les commandes vues précédemment.  Elle a besoin de savoir avec 
208 précision quelle est la propriété à modifier, pour quel objet et dans
209 quel  contexte, et quelle doit être sa nouvelle valeur.  Voyons de quoi
210 il retourne.
211
212 La syntaxe générale de cette commande est : 
213
214 @example
215 \override @var{Contexte}.@var{ObjetDeRendu} #'@var{propriété-rendu} = #@var{valeur}
216 @end example
217
218 @noindent
219 Elle attribue à la propriété appelée @var{propriété-rendu}, associée à
220 l'objet @var{ObjetDeRendu}, appartenant lui-même au contexte 
221 @var{Contexte}, une valeur @var{valeur}.
222
223 Le contexte @var{Contexte} peut être omis (c'est généralement 
224 le cas) quand il n'y a pas d'ambiguïté et qu'il s'agit d'un contexte 
225 de très bas niveau, comme @code{Voice}, @code{ChordNames} 
226 ou @code{Lyrics}.  Dans les exemples qui suivent, le contexte sera 
227 très souvent omis.  Nous verrons plus tard dans quelles
228 circonstances il doit impérativement être indiqué.
229
230 Les sections ci-dessous traitent largement des propriétés et de leurs 
231 valeurs mais, pour illustrer la mise en forme et l'utilisation de ces 
232 commandes, nous nous limiterons à n'employer que quelques propriétés et
233 valeurs simples, facilement compréhensibles.
234
235 Nous ne parlerons dans l'immédiat ni du @code{#'}, qui précède 
236 toujours la propriété, ni du @code{#}, qui précède toujours la 
237 valeur.  Ces deux éléments doivent obligatoirement être 
238 présents sous cette forme.  Voici la commande la plus fréquente 
239 pour faire des retouches, et pratiquement tout le reste de ce 
240 chapitre aura pour but montrer, à travers des exemples, comment 
241 l'utiliser.  L'exemple ci-dessous change la couleur des têtes de 
242 notes :
243
244 @cindex couleur,exemple d'utilisation de la propriété
245 @cindex NoteHead, exemple de dérogation
246
247 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
248 c d
249 \override NoteHead #'color = #red
250 e f g
251 \override NoteHead #'color = #green
252 a b c
253 @end lilypond
254
255 @strong{La commande \revert}
256
257 @cindex revert, commande
258
259 @funindex \revert
260 @funindex revert
261
262 Une fois qu'elle a été modifiée, la propriété conserve sa nouvelle valeur 
263 jusqu'à ce qu'elle soit à nouveau modifiée ou qu'elle rencontre la 
264 commande @code{\revert}.  La commande @code{\revert} obéit à 
265 la syntaxe ci-dessous et ramène la valeur de la propriété à sa valeur 
266 d'origine.  Attention : dans le cas où plusieurs @code{\override} ont 
267 été employés, il ne s'agit pas de la valeur précédente mais bien de la 
268 valeur par défaut. 
269
270 @example
271 \revert @var{Contexte}.@var{ObjetDeRendu} #'@var{propriété-de-rendu}
272 @end example
273
274 Tout comme pour la commande @code{\override}, la mention du 
275 @var{Contexte} est souvent facultative.  Elle sera omise dans de 
276 nombreux exemples ci-dessous.  Voici un exemple qui ramène la 
277 couleur des deux dernières notes à leur valeur par défaut :
278
279 @cindex couleur,exemple d'utilisation de la propriété
280 @cindex NoteHead, exemple de dérogation
281
282 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
283 c d
284 \override NoteHead #'color = #red
285 e f g
286 \override NoteHead #'color = #green
287 a
288 \revert NoteHead #'color
289 b c
290 @end lilypond
291
292 @strong{Le préfixe \once}
293
294 @funindex \once
295 @funindex once
296
297 Les commandes @code{\override} et @code{\set} peuvent supporter  
298 toutes les deux le préfixe @code{\once}.  Celui-ci a pour fonction de 
299 n'appliquer la commande @code{\override} ou @code{\set} qu'à
300 l'instant musical en cours, avant que la propriété ne reprenne 
301 sa valeur par défaut.  Toujours à partir du même exemple, il est
302 possible de ne changer la couleur que d'une seule note :
303
304 @cindex couleur,exemple d'utilisation de la propriété
305 @cindex NoteHead, exemple de dérogation
306
307 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
308 c d
309 \once \override NoteHead #'color = #red
310 e f g
311 \once \override NoteHead #'color = #green
312 a b c
313 @end lilypond
314
315 @strong{La commande \overrideProperty}
316
317 @cindex overrideProperty, commande
318
319 @funindex \overrideProperty
320 @funindex overrideProperty
321
322 Il existe une autre forme de commande @code{\override}, 
323 @code{\overrideProperty}, qui est parfois utile.  Nous la mentionnons
324 ici par souci d'exhaustivité ; pour le détail, voir 
325 @ruser{Retouches complexes}. 
326
327 @c Maybe explain in a later iteration  -td
328
329 @strong{La commande \tweak}
330
331 @cindex tweak, commande
332
333 @funindex \tweak
334 @funindex tweak
335
336 La dernière commande disponible pour les retouches est 
337 @code{\tweak}.  Elle sert à changer les propriétés d'objets qui
338 surviennent simultanément dans la musique, comme par exemple les 
339 notes d'un accord.  La commande @code{\override} modifierait toutes
340 les notes de l'accord, tandis que @code{\tweak} permet de ne modifier
341 que l'élément suivant dans la chaîne de saisie.
342
343 Voici un exemple.  Supposons que nous voulions changer la taille de 
344 la tête de note du milieu (le mi) dans un accord de do majeur.  Voyons 
345 d'abord ce que donnerait @code{\once \override} :
346
347 @cindex font-size, exemple d'utilisation de la propriété
348 @cindex NoteHead, exemple de dérogation
349
350 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
351 <c e g>4
352 \once \override NoteHead #'font-size = #-3
353 <c e g>
354 <c e g>
355 @end lilypond
356
357 Nous voyons que @code{\override} modifie @emph{toutes} les têtes 
358 de notes de l'accord, car toutes les notes de l'accord surviennent au 
359 même @emph{instant musical} et que la fonction de @code{\once} 
360 est de faire porter la modification sur tous les objets du type spécifié 
361 qui surviennent au même instant musical, comme le fait la commande 
362 @code{\override} elle-même. 
363
364 La commande @code{\tweak} opère différemment.  Elle agit 
365 sur l'élément immédiatement suivant dans la chaîne de saisie.  Elle ne
366 fonctionne toutefois que sur des objets créés directement à partir de 
367 la chaîne de saisie, c'est-à-dire essentiellement des têtes de notes et
368 des articulations ; des objets comme les hampes ou les 
369 altérations accidentelles sont créés ultérieurement et ne peuvent 
370 être retouchés de cette manière.  En outre, quand la retouche porte 
371 sur une tête de note, celle-ci @emph{doit} appartenir à un accord, 
372 c'est-à-dire être comprise à l'intérieur de chevrons gauche/droite.  Pour 
373 retoucher une note isolée, il faut donc placer la commande 
374 @code{\tweak} avec la note à l'intérieur des chevrons gauche/droite.
375
376 Pour reprendre notre exemple, la taille de la note du milieu d'un 
377 accord peut être modifiée de cette manière : 
378
379 @cindex font-size, exemple d'utilisation de la propriété
380 @cindex @code{\tweak}, exemple
381
382 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
383 <c e g>4
384 <c \tweak #'font-size #-3 e g>4
385 @end lilypond
386
387 Vous noterez que la syntaxe de @code{\tweak} est différente de 
388 celle de la commande @code{\override}.  Ni le contexte, 
389 ni l'objet n'ont besoin d'être spécifiés ; au contraire, cela 
390 produirait une erreur si on le faisait.  Tous deux sont sous-entendus
391 par l'élément suivant dans la chaîne de saisie.  La syntaxe générale 
392 de la commande @code{\tweak} est donc, tout simplement :
393
394 @example
395 \tweak #'@var{propriété-de-rendu} = #@var{valeur}
396 @end example
397
398 La commande @code{\tweak} est aussi utilisée quand on veut, dans 
399 une série d'articulations, n'en modifier qu'une seule.  Ainsi :
400
401 @cindex couleur, exemple d'utilisation de la propriété
402 @cindex @code{\tweak}, exemple
403
404 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
405 a ^Black
406         -\tweak #'color #red ^Red
407         -\tweak #'color #green _Green
408 @end lilypond
409
410 @noindent
411 Attention : la commande @code{\tweak} doit être précédée d'une 
412 marque d'articulation, comme si elle-même était une articulation.
413
414 @cindex nolets imbriqués
415 @cindex triolets imbriqués
416 @cindex crochet de nolet
417 @cindex nolet, crochet
418 @cindex triolet, crochet
419
420 @funindex TupletBracket
421
422 Quand plusieurs nolets sont imbriqués et commencent au même instant 
423 musical, c'est encore la commande @code{\tweak} qui est utilisée pour 
424 changer l'apparence de l'un d'entre eux.  Dans l'exemple suivant, le
425 long crochet de nolet et le premier des trois crochets courts commencent
426 au même instant musical ; une commande @code{\override} s'appliquerait 
427 donc à la fois aux deux.  En revanche, @code{\tweak} permet  
428 de les dissocier.  La première commande @code{\tweak} indique que 
429 le long crochet doit être placé au-dessus des notes, et la seconde 
430 indique que le coefficient de nolet doit être imprimé en rouge sur le 
431 premier crochet de triolet court. 
432
433 @cindex @code{\tweak}, exemple
434 @cindex direction, exemple d'utilisation de la propriété
435 @cindex couleur, exemple d'utilisation de la propriété
436
437 @lilypond[quote,ragged-right,verbatim,fragment,relative=2]
438 \tweak #'direction #up
439 \times 4/3 {
440         \tweak #'color #red
441         \times 2/3 { c8[ c8 c8] }
442         \times 2/3 { c8[ c8 c8] }
443         \times 2/3 { c8[ c8 c8] }
444 }
445 @end lilypond
446
447 Si les nolets imbriqués ne commencent pas au même moment, 
448 leur apparence peut alors être modifiée de la façon habituelle, 
449 avec la commande @code{\override} :
450
451 @cindex texte, exemple d'utilisation de la propriété
452 @cindex tuplet-number, exemple de fonction
453 @cindex transparence, exemple d'utilisation de la propriété
454 @cindex TupletNumber, exemple de dérogation
455
456 @c NOTE Tuplet brackets collide if notes are high on staff
457 @c See issue 509
458 @lilypond[quote,ragged-right,verbatim,fragment,relative=1]
459 \times 2/3 { c8[ c c]}
460 \once \override TupletNumber
461         #'text = #tuplet-number::calc-fraction-text
462 \times 2/3 {
463         c[ c]
464         c[ c]
465         \once \override TupletNumber #'transparent = ##t
466         \times 2/3 { c8[ c c] }
467 \times 2/3 { c8[ c c]}
468 }
469 @end lilypond
470
471 @seealso
472 Manuel de notation :
473 @ruser{La commande d'affinage (@emph{tweak})}.
474
475
476 @node Le manuel des références internes
477 @section Le manuel des références internes
478 @translationof The Internals Reference manual
479
480 @cindex Références internes
481
482 @menu
483 * Propriétés des objets de rendu::  
484 * Propriétés listées par interface::  
485 * Types de propriétés::         
486 @end menu
487
488 @node Propriétés des objets de rendu
489 @subsection Propriétés des objets de rendu
490 @translationof Properties of layout objects
491
492 @cindex propriétés des objets de rendu
493 @cindex propriétés des objets graphiques (grobs)
494 @cindex grobs, propriétés
495 @cindex objets de rendu, propriétés
496 @cindex Manuel des références internes
497
498 Imaginons que votre partition contienne une liaison trop fine à votre 
499 goût et que vous vouliez la rendre plus épaisse.  Comment vous y 
500 prendre ?  Vous êtes convaincu, avec tout ce qui a été dit sur la 
501 souplesse de LilyPond, qu'une telle retouche est réalisable et 
502 vous vous dites qu'elle fera sans doute intervenir la commande 
503 @code{\override}.  Mais existe-t-il une propriété lourde qui s'applique 
504 à une liaison et, dans l'affirmative, comment faire pour la modifier ? 
505 C'est là qu'intervient la Référence des propriétés internes. 
506 Elle contient toutes les informations dont vous avez besoin pour 
507 construire n'importe quelle commande @code{\override}.
508
509 Avant de nous plonger dans la Référence des propriétés 
510 internes, un mot d'avertissement.  Il s'agit d'un document de 
511 @strong{références}, de sorte qu'il ne contient pas ou peu 
512 d'explications : son but est de présenter les informations de 
513 façon précise et concise.  Cela peut paraître décourageant 
514 à première vue.  Pas d'inquiétude !  Les conseils et les explications 
515 fournis ici vous permettent de retrouver par vous-même les 
516 informations dans la Référence des propriétés internes.  Il 
517 suffit d'un peu de pratique. 
518
519 @cindex override, exemple
520 @cindex dérogation, exemple
521 @cindex Références internes, exemple d'utilisation
522 @cindex @code{\addlyrics} -- exemple
523
524 Prenons un exemple concret tiré d'un morceau de musique connu :
525
526 @lilypond[quote,verbatim,relative=2]
527 {
528   \time 6/8
529   {
530     r4 b8 b[( g]) g |
531     g[( e]) e d[( f]) a |
532     a g
533   }
534   \addlyrics {
535     The man who feels love's sweet e -- mo -- tion
536   }
537 }
538 @end lilypond
539
540 Admettons que nous voulions rendre les traits de liaison plus épais. 
541 Est-ce possible ?  Une liaison est assurément un objet de rendu, si bien 
542 que la question est @qq{Existe-t-il une propriété attachée aux liaisons 
543 et qui en contrôle l'épaisseur ? } Pour y répondre, nous consultons la 
544 Référence des propriétés internes (ou RPI pour faire court).
545
546 Vous trouverez sur le site de LilyPond @uref{http://lilypond.org} la
547 RPI correspondant à votre version du programme.  Allez sur la page 
548 Documentation et cliquez sur Référence des propriétés internes. 
549 Pour l'apprentissage, mieux vaut utiliser la version HTML standard, 
550 et non la @qq{page unique en anglais} ou le PDF.  Durant la lecture 
551 des prochains paragraphes, il vous est conseillé de vous y reporter 
552 réellement afin que les explications prennent tout leur sens.
553
554 En dessous du bandeau d'en-tête figurent cinq liens.  Cliquez sur le lien 
555 vers le @emph{Backend}, où se trouvent les informations sur les 
556 objets de rendu.  En dessous du titre @strong{Backend}, choisissez 
557 alors le lien vers @emph{Tous les objets de rendu}.  La page qui s'ouvre 
558 énumère, dans l'ordre alphabétique, tous les objets utilisés dans votre 
559 version de LilyPond.  Cliquez sur Liaisons (@emph{Slurs} en anglais), 
560 et les propriétés des liaisons apparaîtront. 
561
562 Il existe un autre moyen de trouver cette page, à partir du Manuel de 
563 notation.  Une des pages qui traitent des liaisons contient un lien vers 
564 la Référence des propriétés internes, qui mène directement à cette 
565 page.  Mais lorsque vous connaissez le nom de l'objet à retoucher, le 
566 plus simple est de consulter la RPI. 
567
568 La page de la RPI sur les liaisons commence par préciser que les objets 
569 Liaison sont créés par le graveur Slur_engraver.  Vient ensuite la liste 
570 des réglages standard.  Attention : ceux-ci @strong{ne suivent pas} l'ordre 
571 alphabétique.  Il faut donc les parcourir en entier pour trouver la propriété 
572 susceptible de contrôler l'épaisseur des traits de liaison.
573
574 @example
575 @code{thickness} (number)
576      @code{1.2}
577      Épaisseur de ligne, généralement mesurée en @code{line-thickness}
578 @end example
579
580 Voilà qui semble approprié pour changer l'épaisseur (@emph{thickness} en
581 anglais).  On apprend que la valeur de @code{thickness} 
582 est un simple nombre (@emph{number}), qu'elle est par défaut définie 
583 à 1,2 et que l'unité de mesure est fixée par une autre propriété 
584 appelée @code{line-thickness}.
585
586 Comme il a été indiqué, on ne trouve que peu, voire pas du tout 
587 d'explication dans la RPI, mais nous en savons assez pour essayer 
588 de changer l'épaisseur de la liaison.  Comme nous l'avons vu, le 
589 nom de l'objet est @code{Slur}, le nom de la propriété à changer 
590 est @code{thickness} et la nouvelle valeur sera un nombre supérieur 
591 à @code{1.2} si l'on veut augmenter l'épaisseur du trait.
592
593 Pour construire la commande @code{\override}, il suffit donc de 
594 remplacer les valeurs que nous avons trouvées en guise de noms, en 
595 laissant de côté le contexte.  Commençons par une valeur très élevée
596 dans un premier temps, pour nous assurer que la commande fonctionne. 
597 Nous obtenons :
598
599 @example
600 \override Slur #'thickness = #5.0
601 @end example
602
603 N'oublions pas le @code{#'} qui doit précéder le nom de la propriété et 
604 le @code{#} qui doit précéder la nouvelle valeur.
605
606 La dernière question est : @qq{Où placer cette commande ?}  
607 Tant qu'on n'est pas sûr de soi, la meilleure réponse est @qq{À
608 l'intérieur de l'expression musicale, avant la première liaison et
609 proche d'elle.}  Essayons :
610
611 @cindex Slur, exemple de dérogation
612 @cindex thickness, exemple d'utilisation de la propriété
613
614 @lilypond[quote,verbatim,relative=2]
615 {
616   \time 6/8
617   {
618     % Increase thickness of all following slurs from 1.2 to 5.0
619     \override Slur #'thickness = #5.0
620     r4 b8 b[( g]) g |
621     g[( e]) e d[( f]) a |
622     a g
623   }
624   \addlyrics {
625     The man who feels love's sweet e -- mo -- tion
626   }
627 }
628 @end lilypond 
629
630 @noindent
631 et nous constatons que le trait de liaison est beaucoup plus épais.
632
633 Telle est la façon normale de construire les commandes 
634 @code{\override}.  Comme nous aurons l'occasion de le voir 
635 par la suite, le problème est parfois plus complexe.  Dans 
636 l'immédiat, nous en savons assez pour construire nos propres 
637 commandes -- mais il faut encore s'exercer.  Les exemples 
638 suivants sont là dans cette intention.
639
640 @subheading Détermination du contexte adéquat
641
642 @cindex contexte, détermination du
643 @cindex contexte, identification correcte du
644
645 Tout d'abord, de quoi avions-nous besoin pour préciser le 
646 contexte ?  À quoi devait-il ressembler ?  Gageons que les 
647 liaisons appartiennent au contexte Voix, dans la mesure où 
648 elles sont étroitement liées à une ligne mélodique, mais 
649 comment en être sûr ?  Pour répondre à cette question, 
650 revenons en haut de la page de la RPI consacrée aux liaisons ; 
651 il est écrit : @qq{Les objets Liaison sont créés par le graveur 
652 Slur_engraver}.  Ainsi les liaisons seront créées dans n'importe 
653 quel contexte où se trouve le @code{Slur_engraver}.  Suivons 
654 le lien vers la page @code{Slur_engraver}.  Tout en bas, on 
655 lit que le @code{Slur_engraver} est un élément appartenant 
656 à cinq contextes Voix, dont le contexte de voix 
657 standard, @code{Voice}.  Notre hypothèse était donc juste. 
658 Et parce que @code{Voice} est un contexte de très bas 
659 niveau, qu'il est activé sans ambiguïté par le fait que l'on est 
660 en train de saisir des notes, on peut ici ne pas le mentionner.
661
662 @subheading Redéfinition pour une seule occurence
663
664 @cindex dérogation pour une seule fois
665 @cindex usage unique, dérogation à
666
667 @funindex \once
668 @funindex once
669
670 Dans le dernier exemple ci-dessus, @emph{toutes} les liaisons étaient plus 
671 épaisses.  Et si on veut épaissir uniquement la première liaison ?  On
672 recourt alors à la commande @code{\once}.  Placée juste avant la commande 
673 @code{\override}, elle lui indique de ne changer que la liaison commençant 
674 avec la note @strong{juste après}.  Si la note juste après n'ouvre pas une 
675 liaison, la commande sera sans aucun effet -- elle ne reste pas en mémoire 
676 jusqu'à la prochaine liaison, elle est purement et simplement ignorée.
677 Il faut donc que la commande introduite par @code{\once} soit insérée
678 comme suit : 
679
680
681 @cindex Slur, exemple de dérogation
682 @cindex thickness, exemple d'utilisation de la propriété
683 @cindex Liaison, exemple de dérogation
684 @cindex Épaisseur, exemple d'utilisation de la propriété
685
686 @lilypond[quote,verbatim,relative=2]
687 {
688   \time 6/8
689   {
690     r4 b8
691     % Increase thickness of immediately following slur only
692     \once \override Slur #'thickness = #5.0
693     b[( g]) g |
694     g[( e]) e d[( f]) a |
695     a g
696   }
697   \addlyrics {
698     The man who feels love's sweet e -- mo -- tion
699   }
700 }
701 @end lilypond 
702
703 @noindent
704 Alors seule la première liaison est rendue plus épaisse.
705
706 La commande @code{\once} peut aussi être utilisée devant la commande 
707 @code{\set}.
708  
709
710 @subheading Rétablissement
711
712 @cindex revert
713 @cindex retour
714 @cindex défaut, retour aux propriétés par
715
716 @funindex \revert
717 @funindex revert
718
719 Et si l'on voulait que les deux premières liaisons soient plus épaisses ? 
720 On pourrait bien sûr utiliser deux commandes, chacune précédée de 
721 @code{\once}, et placées juste avant la note par laquelle débute la 
722 liaison :
723
724
725 @cindex Slur, exemple de dérogation
726 @cindex thickness, exemple d'utilisation de la propriété
727 @cindex Liaison, exemple de dérogation
728 @cindex Épaisseur, exemple d'utilisation de la propriété
729
730 @lilypond[quote,verbatim,relative=2]
731 {
732   \time 6/8
733   {
734     r4 b8
735     % Increase thickness of immediately following slur only
736     \once \override Slur #'thickness = #5.0
737     b[( g]) g |
738     % Increase thickness of immediately following slur only
739     \once \override Slur #'thickness = #5.0
740     g[( e]) e d[( f]) a |
741     a g
742   }
743   \addlyrics {
744     The man who feels love's sweet e -- mo -- tion
745   }
746 }
747 @end lilypond 
748
749 @noindent
750 mais on peut aussi, au lieu de la commande @code{\once}, utiliser après 
751 la seconde liaison la commande @code{\revert}, qui ramène la propriété 
752 @code{thickness} à sa valeur par défaut .
753
754 @cindex Slur, exemple de dérogation
755 @cindex thickness, exemple d'utilisation de la propriété
756 @cindex Liaison, exemple de dérogation
757 @cindex Épaisseur, exemple d'utilisation de la propriété
758
759 @lilypond[quote,verbatim,relative=2]
760 {
761   \time 6/8
762   {
763     r4 b8
764     % Increase thickness of all following slurs from 1.2 to 5.0
765     \override Slur #'thickness = #5.0
766     b[( g]) g |
767     g[( e])
768     % Revert thickness of all following slurs to default of 1.2
769     \revert Slur #'thickness
770     e d[( f]) a |
771     a g
772   }
773   \addlyrics {
774   The man who feels love's sweet e -- mo -- tion
775   }
776 }
777 @end lilypond
778
779 @noindent
780 N'importe quelle propriété modifiée par @code{\override} peut ainsi 
781 être ramenée, grâce à la commande @code{\revert}, à sa valeur par 
782 défaut. 
783
784 Ici s'achève notre introduction à la RPI et aux retouches 
785 simples.  Vous trouverez d'autres exemples dans les prochaines 
786 sections de ce chapitre ; ils vous permettront, d'une part, 
787 d'apprendre à connaître un peu mieux la RPI et, d'autre part, de 
788 vous entraîner un peu plus à y chercher les informations.  Ces 
789 exemples seront progressivement accompagnés d'explications et 
790 introduiront des termes nouveaux.
791  
792 @node Propriétés listées par interface
793 @subsection Propriétés listées par interface
794 @translationof Properties found in interfaces
795
796 @cindex interface
797 @cindex interfaces, propriétés des
798 @cindex propriétés des interfaces
799
800 Supposons maintenant que nous voulions imprimer des paroles en italique.  
801 Quelle formulation de la commande @code{\override} allons-nous utiliser ? 
802 Nous consultons en premier lieu, comme précédemment, la page de la RPI 
803 qui contient la liste @qq{Tous les objets de rendu}, et recherchons 
804 un objet qui contrôle les paroles.  Nous trouvons @code{LyricText}, qui 
805 semble approprié.  Nous cliquons dessus et nous voyons apparaître les 
806 différentes propriétés des paroles, parmi lesquelles @code{font-series} 
807 et @code{font-size}.  Mais aucune ne propose l'italique.  Car la mise 
808 en forme des caractères est une propriété commune à tous les objets 
809 d'écriture, si bien que, au lieu de figurer dans tous les objets de rendu, 
810 elle est regroupée avec d'autres propriétés semblables et placée dans une 
811 @strong{Interface}, la @code{font-interface}.
812
813 Il nous faut donc apprendre à trouver les propriétés des interfaces 
814 et découvrir les objets qui utilisent les propriétés de ces interfaces.
815
816 Retournons à la page de la RPI qui traite des paroles
817 (@emph{LyricText}).  En bas de la page est dressée sous forme de liens
818 la liste des interfaces qui concernent LyricText.  Cette liste comporte
819 plusieurs entrées, dont @code{font-interface}.  En cliquant dessus, nous
820 voyons apparaître les différentes propriétés associées à cette
821 interface, qui sont en même temps les propriétés de tous les objets qui
822 s'y rapportent, parmi lesquels  LyricText.
823
824 Nous avons alors sous les yeux tous les réglages des propriétés qui 
825 contrôlent les polices de caractères, et notamment 
826 @code{font-shape(symbole)}, où @code{symbole} peut prendre la valeur 
827 @code{upright}, @code{italics} ou @code{caps}.
828
829 Vous remarquerez que @code{font-series} et @code{font-size} figurent 
830 aussi dans la liste.  La question qui ne manque pas de se poser est : 
831 @qq{Comment se fait-il que les propriétés @code{font-series} et 
832 @code{font-size} se retrouvent à la fois dans @code{LyricText} et dans 
833 l'interface @code{font-interface} alors que ce n'est pas le cas pour 
834 @code{font-shape} ?}  La réponse est que lorsqu'un objet @code{LyricText} 
835 est créé, les valeurs globales par défaut de @code{font-series} et 
836 @code{font-size} sont modifiées, mais pas celles de @code{font-shape}. 
837 Les possibilités de modification dans @code{LyricText} ne concernent 
838 donc que les valeurs à appliquer à @code{LyricText}.  Les autres objets qui 
839 dépendent de @code{font-interface} fixeront leurs propriétés différemment 
840 lorsqu'ils seront créés.
841
842 Voyons maintenant si nous sommes en mesure de formuler la commande 
843 @code{\override} pour mettre les paroles en italique.  L'objet est 
844 @code{LyricText}, la propriété est @code{font-shape} et la valeur est 
845 @code{italic}.  Comme auparavant, nous laissons de côté le contexte. 
846
847 Signalons rapidement -- même si cette remarque est importante -- que,
848 puisque les valeurs de @code{font-shape} se présentent sous forme de
849 symboles, elles doivent être précédées d'une simple apostrophe,
850 @code{'}.  C'est pour cette raison qu'il fallait une apostrophe devant
851 @code{thickness} dans l'exemple précédent, et qu'il en faut une devant
852 @code{font-shape}. Ce sont à chaque fois des symboles, qui sont
853 interprétés comme tels par LilyPond.  Certains symboles peuvent être des
854 noms de propriété, comme @code{thickness} ou @code{font-shape},
855 d'autres sont des valeurs à attribuer aux propriétés, comme
856 @code{italic}. À ne pas confondre avec les chaînes de caractères libres,
857 qui se présentent comme @code{"un texte libre"} ; pour plus de détails
858 sur les symboles et les chaînes de caractères, voir @ref{Tutoriel Scheme}. 
859
860 Ainsi, la commande @code{\override} pour mettre les paroles en italique 
861 est : 
862
863 @example
864 \override LyricText #'font-shape = #'italic
865 @end example
866
867 @noindent
868 et doit être placée juste devant et tout près des paroles à modifier, 
869 comme ceci :
870
871 @cindex font-shape, exemple d'utilisation de la propriété
872 @cindex italic, exemple
873 @cindex LyricText, exemple de dérogation
874 @cindex @code{\addlyrics}, exemple
875
876 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
877 {
878   \time 6/8
879   {
880     r4 b8 b[( g]) g |
881     g[( e]) e d[( f]) a |
882     a g
883   }
884   \addlyrics {
885     \override LyricText #'font-shape = #'italic
886     The man who feels love's sweet e -- mo -- tion
887   }
888 }
889 @end lilypond
890
891 @noindent
892 et voilà les paroles en italiques.
893
894 @subheading Spécification du contexte en mode lyrique
895
896 @cindex contexte, spécification en mode lyrique
897 @cindex mode lyrique, spécification de contexte en
898
899 Lorsqu'il s'agit de paroles et qu'on cherche à préciser le contexte 
900 sur le modèle de ce qui a été fait précédemment, la commande échoue. 
901 Car une syllabe saisie en mode Paroles (lyricmode) se termine 
902 obligatoirement par une espace, un saut de ligne ou un nombre. Tout 
903 autre caractère compte comme un élément de la syllabe. C'est pourquoi 
904 il faut une espace ou un saut de ligne avant le @code{@}} final, pour 
905 éviter qu'il ne soit assimilé à la dernière syllabe. De même, il faut insérer 
906 des espaces avant et après le point, @qq{.}, qui sépare le nom de 
907 contexte du nom de l'objet, faute de quoi les deux noms seront joints et 
908 l'interpréteur ne pourra pas les reconnaître. La formulation correcte est 
909 donc : 
910
911 @example
912 \override Lyrics . LyricText #'font-shape = #'italic
913 @end example
914
915 @warning{Dans la saisie des paroles, pensez à toujours laisser une
916 espace entre la dernière syllabe et l'accolade fermante.}
917
918 @warning{Lorsqu'on retouche des paroles, toujours placer des espaces 
919 autour du point qui sépare le nom de contexte du nom d'objet.}
920
921 @seealso
922 Manuel d'initiation : @ref{Tutoriel Scheme}.
923
924
925 @node Types de propriétés
926 @subsection Types de propriétés
927 @translationof Types of properties
928
929
930 @cindex propriété, types de
931
932 Nous avons vu jusqu'à maintenant deux types de propriétés :
933 @code{nombre} et @code{symbole}.  Pour pouvoir fonctionner, la valeur
934 associée à une propriété doit correspondre au type attendu et suivre les
935 règles liées à ce type.  Le type de propriété est toujours donné entre
936 parenthèses après le nom de propriété dans la RPI.  Voici une liste des
937 différents types de propriétés, avec les règles qui les régissent et
938 quelques exemples d'utilisation.  Il faut, bien sûr, toujours ajouter un
939 symbole hash, @code{#}, devant ces valeurs lors de la saisie de la
940 commande @code{\override}. 
941
942 @multitable @columnfractions .2 .45 .35
943 @headitem Type de propriété 
944   @tab Règles
945   @tab Exemples
946 @item Booléenne (@emph{Boolean} en anglais)
947   @tab Vrai (@emph{true} en anglais) ou Faux (@emph{false} en anglais),
948        sous la forme #t  ou #f
949   @tab @code{#t}, @code{#f}
950 @item Dimension (en lignes de portée)
951   @tab Un nombre positif décimal (en unités de lignes de portée)
952   @tab @code{2.5}, @code{0.34}
953 @item Direction
954   @tab Une direction valide ou son équivalent numérique (valeur décimale
955        comprise entre -1 et 1 seulement)
956   @tab @code{LEFT}, @code{CENTER}, @code{UP}, @code{1}, @code{-1}
957 @item Entier (@emph{Integer} en anglais)
958   @tab Un nombre entier positif
959   @tab @code{3}, @code{1}
960 @item Liste
961   @tab Plusieurs valeurs séparées par une espace, encadrées par des
962 parenthèses et prédédées par une apostrophe 
963   @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'(1.0 0.25 0.5)}
964 @item Markup (ou étiquette)
965   @tab Toute commande @code{\markup} valide
966   @tab @code{\markup @{ \italic "cresc." @}}
967 @item Durée (@emph{Moment} en anglais)
968   @tab Une durée de note construite avec la fonction make-moment
969   @tab @code{(ly:make-moment 1 4)}, @code{(ly:make-moment 3 8)}
970 @item Nombre
971   @tab Une valeur décimale positive ou négative
972   @tab @code{3.5}, @code{-2.45}
973 @item Paire (de nombres)
974   @tab Deux nombres séparées par @qq{espace point espace}, encadrés 
975 par des parenthèses et précédés par une apostrophe
976   @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
977 @item Symbole
978   @tab L'un des symboles autorisés pour cette propriété, précédé par une
979 apostrophe
980   @tab @code{'italic}, @code{'inside}
981 @item Inconnu (@emph{Unknown} en anglais)
982   @tab Un processus, ou @code{#f} pour empêcher toute action 
983   @tab @code{bend::print}, @code{ly:text-interface::print}, @code{#f}
984 @item Vecteur
985   @tab Une liste de trois éléments encadrés par des parenthèses et
986 précédés par apostrophe-hash, @code{'#}
987   @tab @code{'#(#t #t #f)}
988 @end multitable
989
990
991 @seealso
992 Manuel d'initiation : @ref{Tutoriel Scheme}.
993
994
995 @node Apparence des objets
996 @section Apparence des objets
997 @translationof Appearance of objects
998
999 Il est temps de mettre en pratique les notions apprises précédemment
1000 pour modifier l'allure de la partition ; les exemples qui suivent
1001 montrent l'utilisation des différentes méthodes de retouche.  
1002
1003 @menu
1004 * Visibilité et couleur des objets::  
1005 * Taille des objets::             
1006 * Longueur et épaisseur des objets::  
1007 @end menu
1008
1009
1010 @node Visibilité et couleur des objets
1011 @subsection Visibilité et couleur des objets
1012 @translationof Visibility and color of objects
1013
1014 Dans un but pédagogique, on peut être amené à masquer certains éléments
1015 d'une partition, que les élèves doivent ensuite compléter.  Imaginons,
1016 par exemple, un exercice dans lequel il faudrait rétablir les barres de
1017 mesure dans un morceau de musique. En temps normal, les barres de mesure
1018 s'insèrent automatiquement.  Comment faire pour les effacer de la
1019 partition ?  
1020
1021 Avant de nous y attaquer, souvenons-nous que les propriétés d'objets
1022 sont parfois groupées dans ce qu'on appelle des @emph{interfaces} --
1023 voir @ref{Propriétés listées par interface}.  Cela permet de rapprocher
1024 toutes les propriétés susceptibles d'être utilisées ensemble pour
1025 modifier un objet graphique -- si l'une d'elles est choisie pour un
1026 objet, elle s'appliquera à tous les autres.  Certains objets tirent
1027 alors leurs propriétés de telle ou telle interface, d'autres objets de
1028 telle ou telle autre interface.  La liste des interfaces qui contiennent
1029 les propriétés liées à un objet graphique (@emph{grob}) figure dans la
1030 RPI, en bas de la page de description du @emph{grob} ; pour voir ces
1031 propriétés, il faut aller voir ces interfaces.  
1032
1033 Nous avons vu, dans @ref{Propriétés des objets de rendu}, comment trouver 
1034 les informations sur les @emph{grobs}.  Nous procédons de la même manière
1035 et consultons la RPI pour connaître l'objet chargé d'imprimer les barres
1036 de mesure.  En cliquant sur @emph{Backend} puis sur @emph{Tous les
1037 objets de rendu}, nous trouvons un objet appelé @code{BarLine}.  Parmi 
1038 ses propriétés, deux d'entre elles déterminent son aspect visuel : 
1039 @code{break-visibility} et @code{stencil}.  L'objet @code{BarLine} 
1040 est également lié à plusieurs interfaces, dont la @code{grob-interface} 
1041 où figurent les propriétés @code{transparent} et @code{color}.  Toutes
1042 peuvent modifier l'aspect visuel des barres de mesure -- et de beaucoup
1043 d'autres objets, bien sûr.  Examinons chacune d'elles tour à tour.
1044
1045 @subheading stencil
1046
1047 @cindex stencil, propriété
1048
1049 Cette propriété contrôle l'apparence des barres de mesure en précisant 
1050 le type de symbole (glyphe) à imprimer.  Comme pour de nombreuses 
1051 autres propriétés, on peut lui indiquer de ne rien imprimer en lui
1052 attribuant la valeur @code{#f}.  Essayons en laissant de côté, une fois
1053 encore, le contexte concerné (@code{Voice} en l'occurrence) : 
1054
1055 @cindex BarLine, exemple de dérogation
1056 @cindex stencil, exemple d'utilisation de la propriété
1057
1058 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1059 {
1060   \time 12/16
1061   \override BarLine #'stencil = ##f
1062   c4 b8 c d16 c d8 |
1063   g, a16 b8 c d4 e16 |
1064   e8
1065 }
1066 @end lilypond
1067
1068 Les barres de mesure sont encore là !  Pourquoi ?  Retournons à la RPI
1069 et regardons de nouveau la page qui traite des propriétés de BarLine.
1070 En haut de la page, il est précisé que @qq{Les objets BarLine sont créés
1071 par le graveur Bar_engraver}.  Allons à la page de @code{Bar_engraver}. 
1072 Tout en bas se trouve la liste des contextes dans lesquels fonctionne ce 
1073 graveur.  Tous sont du type @code{Staff}, de sorte que, si la commande 
1074 @code{\override} n'a pas fonctionné comme prévu, c'est parce que 
1075 @code{Barline} n'appartient pas au contexte par défaut, @code{Voice}. 
1076 Si le contexte spécifié est erroné, la commande ne fonctionne pas.  Cela 
1077 n'entraîne pas de message d'erreur, et rien n'apparaît dans le fichier log. 
1078 Essayons de corriger en mentionnant le bon contexte : 
1079
1080 @cindex BarLine, exemple de dérogation
1081 @cindex stencil, exemple d'utilisation de la propriété
1082
1083 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1084 {
1085   \time 12/16
1086   \override Staff.BarLine #'stencil = ##f
1087   c4 b8 c d16 c d8 |
1088   g, a16 b8 c d4 e16 |
1089   e8
1090 }
1091 @end lilypond
1092
1093 Cette fois, les barres de mesure ont disparu.
1094
1095 @subheading visibilité des barres (break-visibility)
1096
1097 @cindex break-visibility, propriété
1098
1099 La RPI mentionne, à la page sur @code{BarLine}, que la propriété
1100 @code{break-visibility} attend comme argument un vecteur de trois
1101 boléens.  Ceux-ci indiquent respectivement si les barres de mesure
1102 doivent être imprimées ou non à la fin de la ligne, à l'intérieur de la
1103 ligne et au début de la ligne.  Dans notre cas, nous voulons que toutes
1104 les barres soient supprimées, si bien que la valeur dont nous avons
1105 besoin est @code{'#(#f@tie{}#f@tie{}#f)}. Essayons, sans oublier
1106 d'ajouter le contexte @code{Staff}.  Vous remarquerez que, en plus de
1107 cette valeur, nous ajoutons @code{#'#} devant la parenthèse ouvrante.
1108 Le @code{'#} est nécessaire car il fait partie intégrante de la valeur
1109 contenant un vecteur, et le premier @code{#} est là, comme toujours avec
1110 la commande @code{\override}, pour introduire la valeur elle-même. 
1111
1112 @cindex BarLine, exemple de dérogation
1113 @cindex break-visibility exemple d'utilisation de la propriété
1114
1115 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1116 {
1117   \time 12/16
1118   \override Staff.BarLine #'break-visibility = #'#(#f #f #f)
1119   c4 b8 c d16 c d8 |
1120   g, a16 b8 c d4 e16 |
1121   e8
1122 }
1123 @end lilypond
1124
1125 Comme on peut le constater, cette solution-là aussi supprime les barres 
1126 de mesure.
1127
1128 @subheading transparence
1129
1130 @cindex transparent, propriété
1131 @cindex transparence
1132
1133 La RPI mentionne, à la page sur @code{grob-interface}, que la propriété
1134 @code{transparent} attend comme argument un boléen.  Il faudrait donc
1135 mettre @code{#t} pour rendre l'objet transparent.  Dans cet exemple,
1136 essayons de rendre transparente la métrique (@emph{time signature} en
1137 anglais) plutôt que les barres de mesure.  Pour cela, il nous faut
1138 trouver le nom du @emph{grob} chargé de l'indication de mesure.  De
1139 retour sur la page @qq{Tous les objets de rendu} de la RPI, nous
1140 cherchons les propriétés de l'objet @code{TimeSignature}.  Celui-ci est
1141 géré par le graveur @code{Time_signature_engraver} qui, comme vous
1142 pouvez le constater, appartient au contexte @code{Staff} et peut se
1143 rattacher à la @code{grob-interface}.  Dans ces conditions, la commande
1144 pour rendre la métrique transparente est : 
1145
1146 @cindex TimeSignature, exemple de dérogation
1147 @cindex transparent, exemple d'utilisation de la propriété
1148
1149 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1150 {
1151   \time 12/16
1152   \override Staff.TimeSignature #'transparent = ##t
1153   c4 b8 c d16 c d8 |
1154   g, a16 b8 c d4 e16 |
1155   e8
1156 }
1157 @end lilypond
1158
1159 @noindent
1160 La métrique a bien disparu mais la commande a laissé un blanc en lieu et
1161 place du chiffrage.  Ce peut être souhaitable dans le cadre d'un
1162 exercice, afin que les élèves aient la place pour compléter, mais dans
1163 d'autres circonstances, ce peut être gênant.  Pour y remédier,
1164 attribuons plutôt au stencil des métriques la valeur @code{#f} : 
1165
1166 @cindex TimeSignature, exemple de dérogation
1167 @cindex stencil, exemple d'utilisation de la propriété
1168
1169 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1170 {
1171   \time 12/16
1172   \override Staff.TimeSignature #'stencil = ##f
1173   c4 b8 c d16 c d8 |
1174   g, a16 b8 c d4 e16 |
1175   e8
1176 }
1177 @end lilypond
1178
1179 @noindent
1180 La différence est flagrante : le fait d'attribuer au stencil la valeur
1181 @code{#f} supprime totalement l'objet, tandis que le fait de le rendre
1182 @code{transparent} le laisse en place, mais de façon invisible. 
1183
1184 @subheading couleur
1185
1186 @cindex color, propriété
1187
1188 Essayons enfin de rendre les barres de mesure invisibles en les colorant
1189 en blanc.  La difficulté est de savoir si les barres blanches vont
1190 couper ou non les lignes de la portée aux endroits où elles se
1191 croisent.  Vous verrez dans les exemples ci-dessous que cela peut se
1192 produire, sans qu'on le sache à l'avance.  Les explications de ce
1193 phénomène et les solutions pour y remédier sont exposées dans
1194 @ruser{Blanchiment des objets}.  Pour le moment, acceptons cet
1195 inconvénient et concentrons-nous sur l'apprentissage de la gestion des
1196 couleurs. 
1197
1198 La @code{grob-interface} indique que la valeur de la propriété
1199 @code{color} est une liste, sans plus d'explication.  En fait, cette
1200 liste est une liste de valeurs en unités internes ; pour éviter d'avoir
1201 à chercher ce qu'il faut y mettre, il existe différents moyens
1202 d'indiquer la couleur.  Le premier moyen consiste à utiliser l'une des
1203 couleurs @emph{normales} de la première @ruser{Liste des couleurs}.  Pour
1204 mettre les barres de mesure en blanc, on écrit :  
1205
1206 @cindex BarLine, exemple de dérogation
1207 @cindex color, exemple d'utilisation de la propriété
1208
1209 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1210 {
1211   \time 12/16
1212   \override Staff.BarLine #'color = #white
1213   c4 b8 c d16 c d8 |
1214   g, a16 b8 c d4 e16 |
1215   e8
1216 }
1217 @end lilypond
1218
1219 @noindent
1220 et nous constatons que les barres de mesure sont une fois de plus
1221 invisibles.  Attention : aucune apostrophe ne précède @code{white} -- il
1222 ne s'agit pas d'un symbole mais d'une @strong{fonction}.  Quand on
1223 l'invoque, elle fournit une liste de valeurs internes requises pour
1224 changer la couleur en blanc.  Les autres couleurs aussi, dans la
1225 @qq{liste normale}, sont des fonctions.  Pour en être certain, vous
1226 pouvez faire l'essai en choisissant une autre fonction de la liste en
1227 guise de couleur. 
1228
1229 @cindex couleur X11
1230 @cindex X11, couleurs
1231
1232 @funindex x11-color
1233
1234 Le deuxième moyen de changer la couleur consiste à utiliser la deuxième
1235 @ruser{Liste des couleurs}, dite noms de couleurs X11.  Ceux-ci doivent
1236 obligatoirement être précédés d'une autre fonction, qui convertit les
1237 noms de couleurs X11 en une liste de valeurs internes, @code{x11-color},
1238 comme ceci : 
1239
1240 @cindex BarLine, exemple de dérogation
1241 @cindex color, exemple d'utilisation de la propriété
1242
1243 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1244 {
1245   \time 12/16
1246   \override Staff.BarLine #'color = #(x11-color 'white)
1247   c4 b8 c d16 c d8 |
1248   g, a16 b8 c d4 e16 |
1249   e8
1250 }
1251 @end lilypond
1252
1253 @noindent
1254 Vous noterez que, dans ce cas, la fonction @code{x11-color} admet un
1255 symbole comme argument ; il faut donc placer une apostrophe devant le
1256 symbole et insérer les deux à l'intérieur de parenthèses.  
1257
1258 @cindex rgb, couleur
1259 @cindex couleurs rgb
1260
1261 @funindex rgb-color
1262
1263 Il existe une troisième fonction, écrite pour convertir les valeurs RVB
1264 en couleurs internes -- la fonction @code{rgb-color}.  Elle comporte
1265 trois arguments, donnant respectivement l'intensité du rouge, du vert et
1266 du bleu.  Ces arguments prennent des valeurs comprises entre 0 et 1.
1267 Ainsi, pour choisir la couleur rouge, la valeur serait 
1268 @code{(rgb-color 1 0 0)} ; pour le blanc, ce serait 
1269 @code{(rgb-color 1 1 1)} : 
1270
1271 @cindex BarLine, exemple de dérogation
1272 @cindex color, exemple d'utilisation de la propriété
1273
1274 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1275 {
1276   \time 12/16
1277   \override Staff.BarLine #'color = #(rgb-color 1 1 1)
1278   c4 b8 c d16 c d8 |
1279   g, a16 b8 c d4 e16 |
1280   e8
1281 }
1282 @end lilypond
1283
1284 Enfin, il existe une échelle de gris parmi les possibilités de couleurs
1285 X11.  Elle va du noir, @code{'grey0}, au blanc, @code{'grey100}, avec
1286 un pas de 1.  Essayons de l'utiliser en attribuant à tous les objets de
1287 notre exemple différentes nuances de gris : 
1288
1289 @cindex StaffSymbol, exemple de dérogation
1290 @cindex TimeSignature, exemple de dérogation
1291 @cindex Clef, exemple de dérogation
1292 @cindex NoteHead, exemple de dérogation
1293 @cindex Stem, exemple de dérogation
1294 @cindex BarLine, exemple de dérogation
1295 @cindex color, exemple d'utilisation de la propriété
1296 @cindex x11-color, exemple d'utilisation
1297
1298 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1299 {
1300   \time 12/16
1301   \override Staff.StaffSymbol   #'color = #(x11-color 'grey30)
1302   \override Staff.TimeSignature #'color = #(x11-color 'grey60)
1303   \override Staff.Clef          #'color = #(x11-color 'grey60)
1304   \override Voice.NoteHead      #'color = #(x11-color 'grey85)
1305   \override Voice.Stem          #'color = #(x11-color 'grey85)
1306   \override Staff.BarLine       #'color = #(x11-color 'grey10)
1307   c4 b8 c d16 c d8 |
1308   g, a16 b8 c d4 e16 |
1309   e8
1310 }
1311 @end lilypond
1312
1313 @noindent
1314 Vous remarquerez le contexte associé à chacun des objets.  Une erreur
1315 sur ce point empêcherait la commande de fonctionner.  Souvenez-vous que
1316 le contexte est celui dans lequel est placé le graveur approprié.  Pour
1317 chaque graveur, on peut trouver son contexte par défaut en partant de
1318 l'objet lui-même, puis en cherchant le graveur qui le produit ; la page
1319 du graveur dans la RPI nous indique alors le contexte dans lequel le
1320 graveur se trouve normalement. 
1321
1322
1323 @node Taille des objets
1324 @subsection Taille des objets
1325 @translationof Size of objects
1326
1327 @cindex modification de la taille des objets
1328 @cindex taille d'objets
1329 @cindex objets, taille
1330 @cindex objets, modification de taille
1331
1332 Pour commencer, reprenons l'exemple qui se trouvait dans 
1333 @ref{Expressions musicales imbriquées}, qui montrait comment créer une
1334 nouvelle portée temporaire, du type @rglos{ossia}. 
1335
1336 @cindex alignAboveContext, exemple d'utilisation de la propriété
1337 @cindex @code{\with}, exemple
1338
1339 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1340 \new Staff ="main" {
1341        \relative g' {
1342          r4 g8 g c4 c8 d |
1343          e4 r8
1344          <<
1345            { f c c }
1346            \new Staff \with {
1347              alignAboveContext = #"main" }
1348            { f8 f c }
1349          >>
1350          r4 |
1351   }
1352 }
1353 @end lilypond
1354
1355 Normalement, les ossias ne comportent ni clef ni indication de mesure, et
1356 elles sont imprimées légèrement plus petit que la portée principale.
1357 Nous avons déjà appris à enlever la clef et la métrique -- il suffit de
1358 régler le stencil de chacun sur @code{#f}, comme ceci : 
1359
1360 @cindex alignAboveContext, exemple d'utilisation de la propriété
1361 @cindex @code{\with}, exemple
1362 @cindex stencil, exemple d'utilisation de la propriété
1363 @cindex Clef, exemple de dérogation
1364 @cindex TimeSignature, exemple de dérogation
1365
1366 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1367 \new Staff ="main" {
1368   \relative g' {
1369     r4 g8 g c4 c8 d |
1370     e4 r8
1371     <<
1372       { f c c }
1373       \new Staff \with {
1374         alignAboveContext = #"main"
1375       }
1376       {
1377         \override Staff.Clef #'stencil = ##f
1378         \override Staff.TimeSignature #'stencil = ##f
1379         { f8 f c }
1380       }
1381     >>
1382     r4 |
1383   }
1384 }
1385 @end lilypond
1386
1387 @noindent
1388 La paire d'accolades ajoutée après la clause @code{\with} est nécessaire
1389 pour être sûr que les retouches (@code{\override}) ainsi que la musique
1390 qui se trouvent à l'intérieur soient bien appliquées à la portée
1391 d'ossia. 
1392
1393 Mais alors, quelle différence y a-t-il à modifier le contexte de portée
1394 au moyen de @code{\with} ou à modifier les stencils de la clef et de la
1395 métrique  avec @code{\override} ?  La principale différence est que les
1396 changements opérés dans une clause @code{\with} sont réalisés au moment
1397 où le contexte est créé et restent par la suite les valeurs @strong{par
1398 défaut} aussi longtemps que ce contexte existe, tandis que les commandes
1399 @code{\set} ou @code{\override} insérées dans la musique sont dynamiques
1400 -- elles provoquent des changements synchronisés avec un point
1401 particulier de la musique.  Si les changements sont annulés ou
1402 désactivés par @code{\unset} ou @code{\revert}, les réglages reprennent
1403 leurs valeurs par défaut, c'est-à-dire celles qui ont été fixées dans la
1404 clause @code{\with}, ou, en l'absence de celle-ci, les valeurs par
1405 défaut normales. 
1406
1407 Certaines propriétés de contexte ne peuvent être modifiées que dans une
1408 clause @code{\with}.  Il s'agit des propriétés qu'on ne peut évidemment
1409 plus changer après que le contexte a été créé.  C'est le cas de 
1410 @code{alignAboveContext} et de son pendant, @code{alignBelowContext} 
1411 -- une fois que la portée a été créée, son alignement est décidé et cela
1412 n'aurait aucun sens de vouloir le modifier par la suite. 
1413
1414 Dans une clause @code{\with}, on peut aussi régler les valeurs par
1415 défaut des propriétés d'un objet.  Il suffit d'utiliser la commande 
1416 @code{\override} normale, sans s'occuper du nom de contexte 
1417 puisqu'il ne fait pas de doute qu'il s'agit du contexte en cours de 
1418 modification par la clause @code{\with}.  Il se produirait même une 
1419 erreur si le contexte était précisé.
1420
1421 Remplaçons donc l'exemple ci-dessus par celui-ci :
1422
1423 @cindex alignAboveContext, exemple d'utilisation de la propriété
1424 @cindex @code{\with}, exemple
1425 @cindex Clef, exemple de dérogation
1426 @cindex TimeSignature, exemple de dérogation
1427
1428 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1429 \new Staff ="main" {
1430   \relative g' {
1431     r4 g8 g c4 c8 d |
1432     e4 r8
1433     <<
1434       { f c c }
1435       \new Staff \with {
1436         alignAboveContext = #"main"
1437         % Don't print clefs in this staff
1438         \override Clef #'stencil = ##f
1439         % Don't print time signatures in this staff
1440         \override TimeSignature #'stencil = ##f
1441       }
1442         { f8 f c }
1443     >>
1444     r4 |
1445   }
1446 }
1447 @end lilypond
1448
1449 Venons-en finalement au changement de taille des objets.
1450
1451 Certains objets sont créés comme des glyphes choisis dans une police de
1452 caractères.  C'est le cas des têtes de notes, des altérations, des
1453 @emph{markup}, des clefs, des métriques, des nuances et des paroles.
1454 Pour changer leur taille, on modifie la propriété @code{font-size},
1455 comme nous le verrons rapidement.  D'autres objets, comme les liaisons
1456 de phrasé ou de prolongation -- en général les objets étendus -- sont
1457 dessinés à la demande, si bien qu'aucune @code{font-size} ne leur est
1458 associée.  Ces objets tirent généralement leur dimension des objets
1459 auxquels ils sont rattachés, de sorte qu'on ne doit pas avoir à les
1460 redimensionner à la main.  D'autres propriétés, comme la hauteur des
1461 hampes et des barres de mesure, l'épaisseur des ligatures et d'autres
1462 lignes, et l'écartement des lignes de portée, doivent encore être
1463 modifiées de façon particulière. 
1464
1465 Si l'on revient à l'exemple d'ossia, commençons par changer la taille de
1466 police.  Nous pouvons employer deux méthodes.  Soit nous changeons la
1467 taille de police de chaque type d'objet avec des commandes comme 
1468 celle-ci pour les têtes de notes (@code{NoteHead}) :
1469
1470 @example
1471 \override NoteHead #'font-size = #-2
1472 @end example
1473
1474 soit nous changeons la taille de toutes les polices à la fois grâce à la 
1475 propriété @code{fontSize}, en utilisant @code{\set} ou en l'insérant 
1476 dans une clause @code{\with} (mais alors sans le @code{\set}).
1477
1478 @example
1479 \set fontSize = #-2
1480 @end example
1481
1482 Chacune de ces méthodes réduira la taille de police de deux points par 
1483 rapport à sa valeur précédente, sachant que chaque point réduit ou 
1484 augmente la taille d'environ 12 %.
1485
1486 Essayons sur l'exemple d'ossia :
1487
1488 @cindex alignAboveContext, exemple d'utilisation de la propriété
1489 @cindex @code{\with}, exemple
1490 @cindex Clef, exemple de dérogation
1491 @cindex TimeSignature, exemple de dérogation
1492 @cindex fontSize, exemple d'utilisation de la propriété
1493
1494 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1495 \new Staff ="main" {
1496   \relative g' {
1497     r4 g8 g c4 c8 d |
1498     e4 r8
1499     <<
1500       { f c c }
1501       \new Staff \with {
1502         alignAboveContext = #"main"
1503         \override Clef #'stencil = ##f
1504         \override TimeSignature #'stencil = ##f
1505         % Reduce all font sizes by ~24%
1506         fontSize = #-2
1507       }
1508         { f8 f c }
1509     >>
1510     r4 |
1511   }
1512 }
1513 @end lilypond
1514
1515 Ce n'est pas encore parfait.  Les têtes de notes et les crochets sont
1516 plus petits mais, proportionnellement, les hampes sont trop longues et
1517 les lignes de la portée trop espacées.  Il faut donc les réduire dans les
1518 mêmes proportions que les polices de caractères.  La prochaine
1519 sous-section montrera comment faire. 
1520
1521 @node Longueur et épaisseur des objets
1522 @subsection Longueur et épaisseur des objets
1523 @translationof Length and thickness of objects
1524
1525 @cindex distance
1526 @cindex épaisseur
1527 @cindex longueur
1528 @cindex magstep
1529 @cindex taille, modification
1530 @cindex hampe, modification de longueur
1531 @cindex écartement des lignes, modification
1532
1533 Dans LilyPond, les écartements et longueurs sont généralement mesurés en
1534 @qq{intervalles de lignes} (@emph{staff-spaces} en anglais),
1535 c'est-à-dire l'écartement qui sépare deux lignes adjacentes dans la
1536 portée -- plus rarement, il est question de demi-intervalles de lignes.  
1537 Les propriétés d'épaisseur (@code{thickness}), quant à elles, sont
1538 généralement mesurées en unités d'une propriété interne appelée
1539 @qq{épaisseur de ligne} (@code{line-thickness}).  Par exemple, les
1540 lignes de crescendo/decrescendo présentent par défaut une épaisseur de 1
1541 unité de @code{line-thickness}, alors que l'épaisseur d'une hampe est de
1542 1,3.  Toutefois, certaines propriétés d'épaisseur sont différentes : par
1543 exemple, l'épaisseur des ligature se mesure en espaces de portée. 
1544
1545 Dans ces conditions, comment ajuster les longueurs à la taille des 
1546 polices de caractères ?  La solution consiste à utiliser une fonction 
1547 spéciale appelée @code{magstep} -- pseudo facteur de zoom --, créée
1548 précisément dans ce but.  Elle comporte un argument, le changement de
1549 taille de police (#-2 dans l'exemple précédent), à partir duquel elle
1550 applique un facteur de mise à l'échelle qui réduit, ou augmente, les
1551 objets en question.  Voici comment elle s'utilise : 
1552
1553 @cindex alignAboveContext, exemple d'utilisation de la propriété
1554 @cindex @code{\with}, exemple
1555 @cindex Clef, exemple de dérogation
1556 @cindex TimeSignature, exemple de dérogation
1557 @cindex fontSize , exemple d'utilisation de la propriété
1558 @cindex StaffSymbol, exemple de dérogation
1559 @cindex magstep, exemple d'utilisation de la fonction
1560 @cindex staff-space, exemple d'utilisation de la propriété
1561 @cindex stencil, exemple d'utilisation de la propriété
1562
1563 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1564 \new Staff ="main" {
1565   \relative g' {
1566     r4 g8 g c4 c8 d |
1567     e4 r8
1568     <<
1569       { f c c }
1570       \new Staff \with {
1571         alignAboveContext = #"main"
1572         \override Clef #'stencil = ##f
1573         \override TimeSignature #'stencil = ##f
1574         fontSize = #-2
1575         % Reduce stem length and line spacing to match
1576         \override StaffSymbol #'staff-space = #(magstep -2)
1577       }
1578         { f8 f c }
1579     >>
1580     r4 |
1581   }
1582 }
1583 @end lilypond
1584
1585 @noindent
1586 Puisque la longueur des hampes et plusieurs autres propriétés de
1587 longueur sont calculées par rapport à la valeur de la propriété
1588 @code{staff-space}, elles sont automatiquement mises à l'échelle.  Vous 
1589 remarquerez que cela n'affecte que la dimension verticale de l'ossia --
1590 la dimension horizontale étant déterminée par les objets de la portée
1591 principale de façon à rester synchronisée vis-à-vis d'elle, elle n'est
1592 pas affectée par tous ces changements de taille.  Bien sûr, si l'échelle
1593 de toute la portée principale était modifiée, tout le placement
1594 horizontal s'en trouverait affecté.  Il en sera question plus bas dans
1595 cette section. 
1596
1597 Voilà qui complète la création d'une ossia. Les tailles et longueurs de tous 
1598 les objets peuvent être modifiées de manière analogue.
1599
1600 Pour de petits changements d'échelle, comme dans l'exemple ci-dessus, il
1601 n'est généralement pas utile d'ajuster l'épaisseur des différentes
1602 lignes telles que les barres de mesure, les ligatures, les soufflets de
1603 crescendo/decrescendo, les liaisons, etc.  Si l'épaisseur d'un objet en
1604 particulier doit être ajustée, le mieux est de modifier sa propriété
1605 @code{thickness}.  Nous avons vu plus haut, dans 
1606 @ref{Propriétés des objets de rendu}, un exemple de modification de
1607 l'épaisseur des liaisons.  L'épaisseur de tous les objets tracés
1608 (c'est-à-dire ceux qui ne proviennent pas d'une police de caractère)
1609 peut être changée de la même manière. 
1610
1611 @node Positionnement des objets
1612 @section Positionnement des objets
1613 @translationof Placement of objects
1614
1615  @menu
1616 * Comportement automatique::          
1617 * Objets inclus dans la portée::        
1618 * Objets hors de la portée::       
1619 @end menu
1620
1621 @node Comportement automatique
1622 @subsection Comportement automatique
1623 @translationof Automatic behavior
1624
1625 @cindex objets de la portée
1626 @cindex objets extérieurs à la portée
1627 @cindex portée, objets de la
1628 @cindex portée, objets extérieurs à la
1629
1630 Dans la notation musicale, il y a des objets qui appartiennent à la 
1631 portée et d'autres qui sont placés à l'extérieur de la portée. On les 
1632 appelle respectivement les @qq{objets de la portée} (@emph{within-staff
1633 objects} en anglais) et les @qq{objets extérieurs à la portée}
1634 (@emph{outside-staff objects} en anglais). 
1635
1636 Les objets de la portée sont ceux qui sont placés sur la portée 
1637 -- les têtes de notes et les hampes, les altérations, etc.  Leur
1638 position est généralement déterminée par la musique elle-même -- ils
1639 sont placés verticalement sur des lignes spécifiques ou sont liés à
1640 d'autres objets placés de cette manière.  Normalement, les collisions
1641 entre les têtes et queues de notes et les altérations dans des accords
1642 proches sont évitées automatiquement.  Comme nous le verrons rapidement,
1643 il existe des commandes et des possibilités de retouche qui permettent
1644 de modifier ce comportement automatique. 
1645
1646 Parmi les objets extérieurs à la portée, on compte des éléments comme
1647 les marques de reprise, les indications de texte ou de nuances.  Dans
1648 LilyPond, la règle est de placer verticalement ces objets extérieurs à
1649 la portée le plus près possible de la portée, tout en évitant la
1650 collision avec d'autres objets.  LilyPond utilise la propriété
1651 @code{outside-staff-priority} pour déterminer l'ordre selon lequel
1652 placer ces objets, de la manière suivante : 
1653
1654 D'abord, LilyPond dresse la liste de tous les objets extérieurs à la
1655 portée.  Puis ceux-ci sont classés suivant leur
1656 @code{outside-staff-priority}.  Enfin, ils sont pris un par un, en 
1657 commençant par les objets avec la @code{outside-staff-priority} la plus
1658 basse, et placés de façon à ne pas entrer en collision avec d'autres
1659 objets déjà placés.  Cela signifie que, si deux @emph{grobs} extérieurs
1660 à la portée doivent occuper la même place, c'est celui qui a la
1661 @code{outside-staff-priority} la plus basse qui est placé le plus près
1662 de la portée.  Et si deux objets ont la même
1663 @code{outside-staff-priority}, le premier rencontré sera placé le plus
1664 près de la portée.  
1665
1666 Dans l'exemple suivant, tous les @emph{markup} ont la même priorité, 
1667 dans la mesure où rien n'est indiqué explicitement.  Vous remarquerez
1668 que @code{Text3} est également positionné près de la portée, juste
1669 en-dessous de @code{Text2}. 
1670
1671 @cindex markup, exemple
1672
1673 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1674 c2^"Text1"
1675 c^"Text2"
1676 c^"Text3"
1677 c^"Text4"
1678 @end lilypond
1679
1680 Les portées aussi sont positionnées, par défaut, le plus près possible 
1681 les unes des autres, en ménageant tout de même une certaine séparation.
1682 Si des notes se rapprochent nettement d'une portée adjacente, elles ne
1683 forceront les portées à s'écarter que s'il y a un risque de
1684 chevauchement.  
1685
1686 @lilypond[quote,ragged-right,verbatim]
1687 <<
1688   \new Staff {
1689     \relative c' { c a, }
1690   }
1691   \new Staff {
1692     \relative c'''' { c a, }
1693   }
1694 >>
1695 @end lilypond 
1696
1697
1698 @node Objets inclus dans la portée
1699 @subsection Objets inclus dans la portée
1700 @translationof Within-staff objects
1701
1702 Nous avons vu que les commandes @code{\voiceXXX} jouent sur la 
1703 direction des liaisons, des doigtés et sur toute autre chose liée à 
1704 l'orientation des hampes. Ces commandes sont essentielles dans 
1705 la musique polyphonique pour distinguer des lignes mélodiques 
1706 entremêlées.  Mais il arrive qu'on ait besoin de modifier ce comportement 
1707 automatique.  On peut le faire pour toutes les parties de la musique ou 
1708 juste pour une note.  La propriété qui contrôle ce comportement est la 
1709 propriété @code{direction} de chaque objet.  Expliquons d'abord ce 
1710 qu'elle fait, puis nous présenterons un certain nombre de commandes 
1711 déjà prêtes qui évitent, pour les modifications les plus courantes, 
1712 d'avoir à encoder les retouches. 
1713
1714 Certains objets comme les traits des liaisons se recourbent tantôt 
1715 vers le haut, tantôt vers le bas ; d'autres encore, comme les hampes 
1716 et les crochets, peuvent se décaler vers la gauche ou vers la droite 
1717 selon qu'ils pointent vers le haut ou vers le bas.  Ce comportement est 
1718 géré automatiquement dès lors que @code{direction} est activé. 
1719
1720 @cindex down
1721 @cindex up
1722 @cindex center
1723 @cindex neutral
1724
1725 L'exemple ci-dessous montre dans la première mesure le comportement par 
1726 défaut des hampes -- celles des notes les plus hautes pointant vers le
1727 bas et celles des notes les plus basses pointant vers le haut ; viennent
1728 ensuite quatre notes avec les hampes forcées vers le bas, puis quatre
1729 autres avec les hampes forcées vers le haut, et pour finir quatre notes
1730 de nouveau avec le comportement par défaut. 
1731
1732 @cindex Stem, exemple de dérogation
1733 @cindex direction, exemple d'utilisation de la propriété
1734
1735 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1736 a4 g c a
1737 \override Stem #'direction = #DOWN
1738 a g c a
1739 \override Stem #'direction = #UP
1740 a g c a
1741 \revert Stem #'direction
1742 a g c a
1743 @end lilypond
1744
1745 Nous utilisons ici les directions @code{DOWN} et @code{UP}.  Elles 
1746 correspondent respectivement aux valeurs @code{-1} et @code{+1}, 
1747 que l'on peut utiliser à la place.  La valeur @code{0} peut aussi être 
1748 utilisée dans certains cas.  Elle est interprétée comme un @code{UP} 
1749 pour les hampes, et comme un @qq{centré} pour d'autres objets.  Il
1750 existe une direction, @code{CENTER}, qui correspond à la valeur
1751 @code{0}. 
1752
1753 Quoi qu'il en soit, ces retouches manuelles sont rarement utilisées car
1754 il existe des équivalents sous forme de commandes prédéfinies.  Voici un
1755 tableau des plus courantes.  Lorsque ce n'est pas évident, leur
1756 signification est précisée. 
1757
1758 @multitable @columnfractions .2 .2 .25 .35
1759 @headitem Bas/Gauche
1760   @tab Haut/Droite
1761   @tab Annulation
1762   @tab Effet
1763 @item @code{\arpeggioArrowDown}
1764   @tab @code{\arpeggioArrowUp}
1765   @tab @code{\arpeggioNormal}
1766   @tab Flèche en bas, en haut, ou pas de flèche
1767 @item @code{\dotsDown}
1768   @tab @code{\dotsUp}
1769   @tab @code{\dotsNeutral}
1770   @tab Déplacement des points pour éviter les lignes de portée
1771 @item @code{\dynamicDown}
1772   @tab @code{\dynamicUp}
1773   @tab @code{\dynamicNeutral}
1774   @tab
1775 @item @code{\phrasingSlurDown}
1776   @tab @code{\phrasingSlurUp}
1777   @tab @code{\phrasingSlurNeutral}
1778   @tab Attention : à distinguer des commandes de liaison ci-dessous
1779 @item @code{\slurDown}
1780   @tab @code{\slurUp}
1781   @tab @code{\slurNeutral}
1782   @tab
1783 @item @code{\stemDown}
1784   @tab @code{\stemUp}
1785   @tab @code{\stemNeutral}
1786   @tab
1787 @item @code{\textSpannerDown}
1788   @tab @code{\textSpannerUp}
1789   @tab @code{\textSpannerNeutral}
1790   @tab Le texte saisi en tant qu'extension est au-dessous/au-dessus de la portée
1791 @item @code{\tieDown}
1792   @tab @code{\tieUp}
1793   @tab @code{\tieNeutral}
1794   @tab
1795 @item @code{\tupletDown}
1796   @tab @code{\tupletUp}
1797   @tab @code{\tupletNeutral}
1798   @tab Les nolets sont au-dessous/au-dessus des notes
1799 @end multitable
1800
1801 Attention : ces commandes prédéfinies @strong{ne doivent pas} être
1802 précédées de @code{\once}.  Pour limiter l'effet à une seule note, il
1803 faut soit utiliser la commande équivalente @code{\once \override}, soit
1804 utiliser la commande prédéfinie, suivie, après la note à modifier, de la
1805 commande @code{\xxxNeutral} correspondante. 
1806
1807 @subheading Doigtés
1808
1809 @cindex doigtés, positionnement
1810 @cindex doigtés, accords
1811
1812 Le placement des doigtés sur des notes simples peut aussi être contrôlé
1813 par la propriété @code{direction}, mais le changement de
1814 @code{direction} n'a pas d'effet sur les accords.  Comme nous le
1815 verrons, il existe des commandes qui permettent de contrôler le doigté
1816 sur chaque note d'un accord, en plaçant l'indication de doigté
1817 au-dessus, en dessous, à gauche ou à droite de chaque note. 
1818
1819 Tout d'abord, voici l'effet de @code{direction} sur le doigté lié à une
1820 note simple.  La première mesure montre le comportement par défaut, et
1821 les deux suivantes montrent l'effet lorsqu'on indique @code{DOWN} et
1822 @code{UP} : 
1823
1824 @cindex doigtés, exemple de dérogation
1825 @cindex direction, exemple d'utilisation de la propriété
1826
1827 @lilypond[quote,verbatim,relative=2]
1828 c-5 a-3 f-1 c'-5
1829 \override Fingering #'direction = #DOWN
1830 c-5 a-3 f-1 c'-5
1831 \override Fingering #'direction = #UP
1832 c-5 a-3 f-1 c'-5
1833 @end lilypond
1834
1835 Le fait d'intervenir sur la propriété @code{direction} n'est sûrement
1836 pas la façon la plus simple de placer manuellement les doigtés au-dessus
1837 ou en dessous des notes ; mieux vaut utiliser @code{_} ou @code{^}
1838 devant le chiffre de doigté plutôt que @code{-}.  Voici ce que donne
1839 l'exemple précédent avec cette méthode : 
1840
1841 @cindex doigtés, exemple
1842
1843 @lilypond[quote,verbatim,relative=2]
1844 c-5 a-3 f-1 c'-5
1845 c_5 a_3 f_1 c'_5
1846 c^5 a^3 f^1 c'^5
1847 @end lilypond
1848
1849 La propriété @code{direction} ne fonctionne pas pour les accords alors
1850 que les préfixes de direction, @code{_} et @code{^}, fonctionnent.  Par
1851 défaut, le doigté est placé automatiquement à la fois au-dessus et
1852 au-dessous des notes d'un accord, comme ceci : 
1853
1854 @cindex doigtés, exemple
1855
1856 @lilypond[quote,verbatim,relative=2]
1857 <c-5 g-3>
1858 <c-5 g-3 e-2>
1859 <c-5 g-3 e-2 c-1>
1860 @end lilypond
1861
1862 @noindent
1863 mais il est possible de forcer manuellement vers le haut ou vers le bas le 
1864 placement de tous ou certains chiffres de doigté, comme ceci :
1865
1866 @cindex doigtés, exemple
1867
1868 @lilypond[quote,verbatim,relative=2]
1869 <c-5 g-3 e-2 c-1>
1870 <c^5 g_3 e_2 c_1>
1871 <c^5 g^3 e^2 c_1>
1872 @end lilypond
1873
1874 On peut aller encore plus loin dans le positionnement des doigtés pour
1875 chacune des notes d'un accord grâce à la commande
1876 @code{\set@tie{}fingeringOrientations}.  La syntaxe de cette commande
1877 est : 
1878
1879 @example
1880 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
1881 @end example
1882
1883 @noindent
1884 On utilise @code{\set} car @code{fingeringOrientations} est une propriété 
1885 du contexte @code{Voice}, créée et utilisée par le graveur 
1886 @code{New_fingering_engraver}.
1887
1888 On peut attribuer à cette propriété une liste composée de une à trois 
1889 valeurs.  Celles-ci déterminent si l'indication de doigté doit être
1890 placée au-dessus (lorsque @code{up} apparaît dans la liste), au-dessous
1891 (lorsque @code{down} apparaît), à gauche (lorsque @code{left} apparaît)
1892 ou à droite (lorsque @code{right} apparaît).  En revanche, si une valeur
1893 n'est pas dans la liste, aucun doigté n'ira à cet emplacement.  LilyPond
1894 garde ces contraintes en mémoire et recherche le meilleur emplacement
1895 pour le doigté des notes des accords suivants.  Vous remarquerez que
1896 @code{left} et @code{right} s'excluent l'un l'autre -- l'indication de
1897 doigté ne peut être placée que d'un côté ou de l'autre, pas des deux. 
1898
1899 @warning{Pour contrôler à l'aide de cette commande le placement du
1900 doigté sur une note simple, il faut la saisir comme un accord composé
1901 d'une note unique, en l'encadrant de chevrons.}
1902
1903 Voici quelques exemples : 
1904
1905 @cindex doigtés, exemple
1906 @cindex @code{\set}, exemple d'utilisation
1907 @cindex fingeringOrientations, exemple d'utilisation de la propriété
1908
1909 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1910 \set fingeringOrientations = #'(left)
1911 <f-2>
1912 < c-1  e-2 g-3 b-5 > 4
1913 \set fingeringOrientations = #'(left)
1914 <f-2>
1915 < c-1  e-2 g-3 b-5 > 4
1916 \set fingeringOrientations = #'(up left down)
1917 <f-2>
1918 < c-1  e-2 g-3 b-5 > 4
1919 \set fingeringOrientations = #'(up left)
1920 <f-2>
1921 < c-1  e-2 g-3 b-5 > 4
1922 \set fingeringOrientations = #'(right)
1923 <f-2>
1924 < c-1  e-2 g-3 b-5 > 4
1925 @end lilypond
1926
1927 @noindent
1928 Si les indications de doigtés paraissent un peu serrées, on peut 
1929 toujours réduire la taille de police (@code{font-size}).  La valeur 
1930 par défaut donnée dans la RPI à la page de l'objet 
1931 @code{Fingering} étant @code{-5}, essayons @code{-7} :
1932
1933 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1934 \override Fingering #'font-size = #-7
1935 \set fingeringOrientations = #'(left)
1936 <f-2>
1937 < c-1  e-2 g-3 b-5 > 4
1938 \set fingeringOrientations = #'(left)
1939 <f-2>
1940 < c-1  e-2 g-3 b-5 > 4
1941 \set fingeringOrientations = #'(up left down)
1942 <f-2>
1943 < c-1  e-2 g-3 b-5 > 4
1944 \set fingeringOrientations = #'(up left)
1945 <f-2>
1946 < c-1  e-2 g-3 b-5 > 4
1947 \set fingeringOrientations = #'(right)
1948 <f-2>
1949 < c-1  e-2 g-3 b-5 > 4
1950 @end lilypond
1951
1952
1953 @node Objets hors de la portée
1954 @subsection Objets hors de la portée
1955 @translationof Outside staff objects
1956
1957 Les objets extérieurs à la portée sont placés automatiquement de façon à
1958 éviter les collisions.  Les objets avec la plus petite valeur de la
1959 propriété @code{outside-staff-priority} sont placés au plus près de la
1960 portée, tandis que les autres sont écartés autant qu'il faut pour éviter
1961 les collisions.  La @code{outside-staff-priority} est définie dans la
1962 @code{grob-interface} ; elle est donc une propriété commune à tous les
1963 objets de rendu.  Par défaut, elle est réglée sur @code{#f} pour tous
1964 les objets de la portée, et porte une valeur numérique appropriée à
1965 chacun des objets extérieurs à la portée, à mesure qu'ils sont créés.
1966 Le tableau suivant montre la valeur numérique par défaut pour
1967 quelques-uns des objets extérieurs à la portée les plus courants qui
1968 sont placés, par défaut, dans les contextes @code{Staff} ou
1969 @code{Voice}. 
1970
1971 @multitable @columnfractions .3 .3 .3
1972 @headitem Objet de rendu
1973   @tab Priorité 
1974   @tab Contrôle la position de :
1975 @item @code{MultiMeasureRestText}
1976   @tab @code{450}
1977   @tab Texte sur les silences qui couvrent des mesures entières 
1978 @item @code{TextScript}
1979   @tab @code{450}
1980   @tab Texte des @emph{markup} (ou étiquettes)
1981 @item @code{OttavaBracket}
1982   @tab @code{400}
1983   @tab Indication d'octaviation
1984 @item @code{TextSpanner}
1985   @tab @code{350}
1986   @tab Bandeau ou extension de texte
1987 @item @code{DynamicLineSpanner}
1988   @tab @code{250}
1989   @tab Toutes les marques de nuances
1990 @item @code{VoltaBracketSpanner}
1991   @tab @code{100}
1992   @tab Bandeau de répétition
1993 @item @code{TrillSpanner}
1994   @tab @code{50}
1995   @tab Bandeau de trille
1996 @end multitable
1997
1998 Voici un exemple qui montre le placement par défaut de certains 
1999 d'entre eux.
2000
2001 @cindex extension de texte
2002 @cindex indication d'octaviation
2003
2004 @funindex \startTextSpan
2005 @funindex startTextSpan
2006 @funindex \stopTextSpan
2007 @funindex stopTextSpan
2008
2009 @cindex TextSpanner, exemple de dérogation
2010 @cindex bound-details, exemple d'utilisation de la propriété
2011
2012 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2013 % Set details for later Text Spanner
2014 \override TextSpanner #'bound-details #'left #'text
2015     = \markup { \small \bold Slower }
2016 % Place dynamics above staff
2017 \dynamicUp
2018 % Start Ottava Bracket
2019 \ottava #1
2020 c' \startTextSpan
2021 % Add Dynamic Text
2022 c\pp
2023 % Add Dynamic Line Spanner
2024 c\<
2025 % Add Text Script
2026 c^Text
2027 c c
2028 % Add Dynamic Text
2029 c\ff c \stopTextSpan
2030 % Stop Ottava Bracket
2031 \ottava #0
2032 c, c c c
2033 @end lilypond
2034
2035 Cet exemple montre comment créer des extensions de texte (@emph{Text
2036 Spanners} en anglais ) -- texte avec des longues lignes au-dessus d'un
2037 passage musical.  L'extension s'étend depuis la commande
2038 @code{\startTextSpan} jusqu'à la commande @code{\stopTextSpan} et le
2039 format de texte est défini par la commande @code{\override TextSpanner}.
2040 Pour de plus amples détails, voir @ruser{Extensions de texte}.
2041
2042 Il montre aussi comment créer des marques d'octaviation.
2043
2044 @cindex modification du positionnement des numéros de mesure
2045 @cindex numéros de mesure, modification du positionnement
2046 @cindex modification du positionnement des indications métronomiques
2047 @cindex indications métronomiques, modification du positionnement
2048 @cindex modification du positionnement des marques de repère
2049 @cindex marques de repère, modification du positionnement
2050
2051 Vous aurez remarqué que les numéros de mesure, l'indication métronomique
2052 et les marques de répétition n'apparaissent pas.  Par défaut, ils sont
2053 créés dans le contexte @code{Score} et leur
2054 @code{outside-staff-priority} est ignorée face aux objets qui sont créés
2055 dans le contexte @code{Staff}.  Si vous voulez faire apparaître les
2056 numéros de mesure, l'indication métronomique ou les marques de
2057 répétition conformément à la valeur de leur
2058 @code{outside-staff-priority}, il vous faudra retirer respectivement le
2059 @code{Bar_number_engraver}, le @code{Metronome_mark_engraver} ou le
2060 @code{Mark_engraver} du contexte @code{Score} et les placer en tête du
2061 contexte @code{Staff}.  Après quoi ces marques porteront les valeurs de 
2062 @code{outside-staff-priority} par défaut suivantes : 
2063
2064 @multitable @columnfractions .3 .3
2065 @headitem Objet de rendu          @tab Priorité
2066 @item @code{RehearsalMark}        @tab @code{1500}
2067 @item @code{MetronomeMark}        @tab @code{1000}
2068 @item @code{BarNumber}            @tab @code{ 100}
2069 @end multitable
2070
2071 Si les valeurs de @code{outside-staff-priority} par défaut ne donnent
2072 pas les résultats que vous attendez, il suffit de modifier la priorité
2073 de l'un de ces objets.  Supposons que vous vouliez placer l'indication
2074 d'octaviation sous le bandeau de texte, dans l'exemple précédent.  Tout
2075 ce que nous devons faire, c'est regarder la priorité de
2076 @code{OttavaBracket} dans la RPI ou dans le tableau plus haut, et la
2077 ramener à une valeur plus basse que celle de @code{TextSpanner}, en
2078 gardant à l'esprit que @code{OttavaBracket} est créé dans le contexte
2079 @code{Staff} : 
2080
2081 @cindex TextSpanner, exemple de dérogation
2082 @cindex bound-details, exemple d'utilisation de la propriété
2083
2084 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2085 % Set details for later Text Spanner
2086 \override TextSpanner #'bound-details #'left #'text
2087     = \markup { \small \bold Slower }
2088 % Place dynamics above staff
2089 \dynamicUp
2090 %Place following Ottava Bracket below Text Spanners
2091 \once \override Staff.OttavaBracket #'outside-staff-priority = #340
2092 % Start Ottava Bracket
2093 \ottava #1
2094 c' \startTextSpan
2095 % Add Dynamic Text
2096 c\pp
2097 % Add Dynamic Line Spanner
2098 c\<
2099 % Add Text Script
2100 c^Text
2101 c c
2102 % Add Dynamic Text
2103 c\ff c \stopTextSpan
2104 % Stop Ottava Bracket
2105 \ottava #0
2106 c, c c c
2107 @end lilypond
2108
2109 @cindex liaisons et outside-staff-priority
2110 @cindex liaisons et articulations
2111 @cindex articulations et liaisons
2112
2113 Les liaisons sont intrinsèquement des objets membres de la portée
2114 (@emph{within-staff objects}) bien qu'elles la surplombent lorsque les
2115 notes auxquelles elles se rattachent sont relativement hautes.  Ceci
2116 peut avoir pour conséquence de remonter d'autant les objets externes
2117 (@emph{outside-staff objects}) tels les articulations.  La propriété
2118 @code{avoid-slur} de l'articulation en question peut se voir déterminée
2119 à @code{'inside} dans le but de @qq{ramener} cette articulation à
2120 l'intérieur de la liaison.  Cette propriété @code{avoid-slur} ne sera
2121 toutefois effective que dans la mesure où la
2122 @code{outside-staff-priority} est désactivée (valeur @code{#f}).  Dans
2123 le même esprit, il est possible d'affecter une valeur numérique
2124 particulière à la propriété @code{outside-staff-priority} d'une
2125 liaison dans le but de regrouper la liaison avec les objets externes.
2126 L'exemple suivant illustre ces deux différentes méthodes.
2127
2128 @lilypond[quote,verbatim,relative=2]
2129 c4( c^\markup\tiny\sharp d4.) c8
2130 c4(
2131 \once \override TextScript #'avoid-slur = #'inside
2132 \once \override TextScript #'outside-staff-priority = ##f
2133 c^\markup\tiny\sharp d4.) c8
2134 \once \override Slur #'outside-staff-priority = #500
2135 c4( c^\markup\tiny\sharp d4.) c8
2136 @end lilypond
2137
2138 Le fait de changer la @code{outside-staff-priority} peut aussi servir à
2139 contrôler le positionnement vertical des objets individuels, quoique le
2140 résultat ne soit pas toujours formidable.  Imaginons que nous voulions
2141 placer @qq{Text3} au-dessus de @qq{Text4} dans l'exemple de la section
2142 @ref{Comportement automatique}, plus haut.  Il nous suffit pour cela de
2143 regarder dans la RPI ou dans le tableau plus haut la priorité de
2144 @code{TextScript}, et d'augmenter la priorité de @qq{Text3} jusqu'à une
2145 valeur très haute :  
2146
2147 @cindex TextScript, exemple de dérogation
2148 @cindex outside-staff-priority, exemple d'utilisation de la propriété
2149
2150 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2151 c2^"Text1"
2152 c^"Text2"
2153 \once \override TextScript #'outside-staff-priority = #500
2154 c^"Text3"
2155 c^"Text4"
2156 @end lilypond
2157
2158 S'il est vrai que cela place @qq{Text3} au-dessus de @qq{Text4}, ça le
2159 place aussi plus haut que @qq{Text2} tandis que @qq{Text4} dégringole.
2160 Ce n'est peut-être pas si bien que ça.  En fait, ce que nous aimerions
2161 faire, c'est placer toutes les annotations à égale distance de la
2162 portée.  Pour cela, nous avons besoin d'espacer horizontalement les
2163 notes pour laisser plus de place au texte.  C'est possible grâce à la
2164 commande @code{textLengthOn}. 
2165
2166 @subheading \textLengthOn
2167
2168 @cindex notes, répartition selon le texte
2169
2170 @funindex \textLengthOn
2171 @funindex textLengthOn
2172 @funindex \textLengthOff
2173 @funindex textLengthOff
2174
2175 Par défaut, l'espacement horizontal d'un texte produit sous forme de
2176 @emph{markup} (ou d'étiquette) n'est pas pris en compte, dans la mesure
2177 où ce qui est concerné n'entre pas dans la musique.  La commande
2178 @code{\textLengthOn} inverse ce comportement, faisant en sorte que les
2179 notes soient espacées autant qu'il le faut pour s'adapter au texte :  
2180
2181 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2182 \textLengthOn  % Cause notes to space out to accommodate text
2183 c2^"Text1"
2184 c^"Text2"
2185 c^"Text3"
2186 c^"Text4"
2187 @end lilypond  
2188
2189 La commande qui permet de revenir au comportement par défaut est 
2190 @code{\textLengthOff}.  Rappelez-vous que @code{\once} ne 
2191 fonctionne qu'avec @code{\override}, @code{\set}, @code{\revert} ou 
2192 @code{\unset}, et donc ne peut pas être utilisé avec 
2193 @code{\textLengthOn}.
2194
2195 @cindex étiquette de texte et collision
2196
2197 Les textes des @emph{markup} éviteront également les notes qui
2198 s'échappent au-dessus de la portée.  Si ce n'est pas notre souhait, il
2199 est possible de supprimer ce déplacement automatique vers le haut en
2200 attribuant à la priorité la valeur @code{#f}.  Voici un exemple qui
2201 montre comment les textes des @emph{markup} interagissent avec ces types
2202 de note. 
2203
2204 @cindex TextScript, exemple de dérogation
2205 @cindex outside-staff-priority, exemple d'utilisation de la propriété
2206
2207 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2208 % This markup is short enough to fit without collision
2209 c2^"Tex"
2210 c''2
2211 R1
2212 % This is too long to fit, so it is displaced upwards
2213 c,,2^"Text"
2214 c''2
2215 R1
2216 % Turn off collision avoidance
2217 \once \override TextScript #'outside-staff-priority = ##f
2218 c,,2^"Long Text   "
2219 c''2
2220 R1
2221 % Turn off collision avoidance
2222 \once \override TextScript #'outside-staff-priority = ##f
2223 \textLengthOn  % and turn on textLengthOn
2224 c,,2^"Long Text   "  % Spaces at end are honored
2225 c''2
2226 @end lilypond
2227
2228
2229 @subheading Nuances
2230
2231 @cindex modifier le positionnement des nuances
2232 @cindex nuances, modifier le positionnement
2233
2234 Les indications de nuance se placent normalement sous la portée mais on
2235 peut les placer au-dessus avec la commande @code{dynamicUp}.  Elles se
2236 positionnent verticalement par rapport à la note à laquelle elles sont
2237 liées et se décalent vers le bas (ou le haut) en fonction des objets de
2238 la portée comme les liaisons de phrasé ou les numéros de mesure.  Cela
2239 peut donner d'assez bons résultats, comme le montre cet exemple : 
2240
2241 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2242 \clef "bass"
2243 \key aes \major
2244 \time 9/8
2245 \dynamicUp
2246 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2247 ees,2.~\)\mf ees4 r8 |
2248 @end lilypond
2249
2250 De toute façon, si les notes et les nuances qui leur sont liées sont 
2251 trop proches, le positionnement automatique évitera les collisions en  
2252 déplaçant davantage les nuances suivantes, mais le résultat peut ne 
2253 pas être très satisfaisant, comme le montre cet exemple artificiel : 
2254
2255 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2256 \dynamicUp
2257 a4\f b\mf c\mp b\p
2258 @end lilypond
2259
2260 @noindent
2261 Si une telle situation devait survenir dans de la musique @qq{réelle},
2262 il serait préférable d'espacer un peu plus les notes, de façon que les
2263 indications de nuance puissent toutes se situer à la même distance de la
2264 portée.  Il était possible de faire cela pour les textes de
2265 @emph{markup} grâce à la commande @code{\textLengthOn} mais il n'existe
2266 pas d'équivalent pour les indications de nuance.  Il nous faut donc
2267 chercher à faire cela avec la commande @code{\override}. 
2268
2269 @subheading Dimensionnement des objets graphiques
2270
2271 @cindex grob, dimensionnement
2272 @cindex dimensionnement des grobs
2273
2274 Tout d'abord, nous devons apprendre ce qui détermine la dimension des 
2275 @emph{grobs}. Tous les @emph{grobs} portent en eux un point de référence
2276 qui est utilisé pour les positionner par rapport à leur objet parent. Ce
2277 point du @emph{grob} est placé à une distance horizontale,
2278 @code{X-offset}, et à une distance verticale, @code{Y-offset}, de son
2279 parent.  L'étendue horizontale de l'objet est fixée par une paire de 
2280 nombres, @code{X-extent}, qui donnent la position du coin 
2281 gauche et du coin droit par rapport au point de référence.  De 
2282 même, l'étendue verticale est fixée par une paire de nombre, 
2283 @code{Y-extent}.  Ce sont des propriétés communes à tous les 
2284 @emph{grobs} et que gère la @code{grob-interface}.
2285
2286 @cindex @code{extra-spacing-width}
2287
2288 Par défaut, la largeur des objets extérieurs à la portée est donnée 
2289 comme étant nulle, si bien qu'ils peuvent se chevaucher 
2290 horizontalement. Pour reméfier à cela, on a ajouté l'infini à 
2291 l'extension gauche et moins l'infini à l'extension droite, en 
2292 attribuant à @code{extra-spacing-width} la valeur
2293 @w{@code{'(+inf.0 . -inf.0)}}. Pour être sûr que les objets ne se 
2294 chevaucheront pas horizontalement, nous devons donc corriger 
2295 cette valeur de @code{extra-spacing-width} en @w{@code{'(0 . 0)}}, 
2296 afin que leur vraie largeur se manifeste. La commande pour y 
2297 parvenir avec des indications de nuances est : 
2298
2299 @example
2300 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2301 @end example
2302
2303 @noindent
2304 Voyons si ça marche sur notre exemple précédent :
2305
2306 @cindex DynamicText, exemple de dérogation
2307 @cindex extra-spacing-width, exemple d'utilisation de la propriété
2308
2309 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2310 \dynamicUp
2311 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2312 a4\f b\mf c\mp b\p
2313 @end lilypond
2314
2315 @noindent
2316 Bon, cela a mis un terme aux déplacements verticaux des 
2317 nuances mais il reste deux problèmes. Il faudrait que les 
2318 nuances soient un peu plus écartées et ce serait mieux si 
2319 elles étaient toutes à la même distance de la portée. Le 
2320 premier problème est simple à résoudre. Au lieu d'attribuer 
2321 à @code{extra-spacing-width} la valeur zéro, nous pourrions 
2322 mettre un peu plus. L'unité est la distance entre deux lignes 
2323 de portée, donc en écartant le bord gauche d'une demi-unité 
2324 et le bord droit d'une demi-unité, on obtient : 
2325
2326 @cindex DynamicText, exemple de dérogation
2327 @cindex extra-spacing-width, exemple d'utilisation de la propriété
2328
2329 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2330 \dynamicUp
2331 % Extend width by 1 staff space
2332 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2333 a4\f b\mf c\mp b\p
2334 @end lilypond
2335
2336 @noindent
2337 C'est mieux mais nous voulons peut-être aligner les indications de 
2338 nuance sur une même ligne plutôt que de les voir monter et 
2339 descendre avec les notes. La propriété qui gère cela est 
2340 @code{staff-padding} ; la section suivante lui est consacrée.
2341
2342
2343 @node Collisions d'objets
2344 @section Collisions d'objets
2345 @translationof Collisions of objects
2346
2347 @menu
2348 * Déplacement d'objets::              
2349 * Correction des collisions d'objets::  
2350 * Exemple concret::          
2351 @end menu
2352
2353 @node Déplacement d'objets
2354 @subsection Déplacement d'objets
2355 @translationof Moving objects
2356
2357 @cindex déplacement d'objets se chevauchant
2358 @cindex déplacement d'objets en collision
2359 @cindex déplacement de grobs en collision
2360 @cindex objets, évitement des collisions
2361 @cindex grobs, évitement des collisions
2362
2363 Aussi surprenant que cela puisse paraître, LilyPond n'est pas parfait.
2364 Certains éléments sur la partition peuvent se chevaucher, ce qui est 
2365 regrettable mais, le plus souvent, facile à corriger. En général, quand 
2366 on déplace des objets, c'est pour des raisons de lisibilité ou 
2367 d'esthétique -- ils rendraient mieux avec un peu plus ou un peu moins 
2368 d'espace autour d'eux. 
2369
2370 Il y a trois façons de résoudre les problèmes de chevauchement.  Il est 
2371 préférable de les aborder dans l'ordre suivant :
2372
2373 @enumerate
2374 @item
2375 L'@strong{orientation} d'un objet qui en chevauche un autre peut être 
2376 changée grâce aux commandes prédéfinies dont la liste a été donnée 
2377 plus haut à propos des objets de portée (voir 
2378 @ref{Objets inclus dans la portée}). 
2379 Les queues de note, les liaisons de phrasé et de prolongation, les 
2380 crochets, les nuances et les nolets peuvent facilement être repositionnés 
2381 de cette manière. En contrepartie, vous n'avez le choix qu'entre deux 
2382 positions, sans personnalisation possible.
2383
2384 @item
2385 Les @strong{propriétés d'objet}, auxquelles LilyPond a recours pour 
2386 positionner les objets, sont modifiables avec @code{\override}.  Il y a deux 
2387 avantages à changer ces propriétés : (a) d'autres objets pourront être 
2388 déplacés automatiquement si nécessaire pour faire de la place, et (b) 
2389 la même retouche peut s'appliquer à toutes les occurrences du même 
2390 type d'objet.  Ces propriétés sont :
2391
2392 @itemize
2393
2394 @item
2395 @code{direction}
2396
2397 Ce point a déjà été traité en détails -- voir 
2398 @ref{Objets inclus dans la portée}. 
2399
2400 @item
2401 @code{padding}, @code{left-padding},
2402 @code{right-padding}, @code{staff-padding}
2403
2404 @cindex décalage (padding)
2405 @cindex left-padding, propriété
2406 @cindex padding, propriété
2407 @cindex right-padding, propriété
2408 @cindex staff-padding, propriété
2409
2410 Au moment de positionner un objet, la valeur de sa propriété 
2411 @code{padding} détermine l'espace à laisser libre entre celui-ci et le 
2412 coin le plus proche de l'objet à côté duquel il est placé. Vous remarquerez 
2413 que c'est la valeur @code{padding} de l'objet @strong{à placer} qui 
2414 compte ; la valeur @code{padding} de l'objet déjà placé est ignorée. 
2415 Les espaces libres déterminés par @code{padding} s'appliquent à tous 
2416 les objets associés à la @code{side-position-interface}.
2417
2418 Le positionnement de groupes d'altérations est contrôlé par 
2419 @code{left-padding} et @code{right-padding}, et non plus @code{padding}.
2420 Ces propriétés appartiennent à l'objet @code{AccidentalPlacement}, qui, 
2421 vous le remarquerez, prend place dans le contexte @strong{Staff}. Dans le 
2422 processus de composition, les têtes de notes sont composées en premier, 
2423 puis les altérations, s'il y en a, sont ajoutées à gauche des têtes de notes 
2424 suivant la propriété @code{right-padding} qui détermine l'espacement par 
2425 rapport aux têtes de note. C'est pourquoi seule la propriété 
2426 @code{right-padding} de l'objet @code{AccidentalPlacement} joue sur le 
2427 positionnement des altérations. 
2428
2429 La propriété @code{staff-padding} est très proche de la propriété 
2430 @code{padding} : @code{padding} contrôle l'espace minimum entre un 
2431 objet qui accepte la @code{side-position-interface} et l'objet le plus 
2432 proche (généralement une note ou une ligne de portée) ; @code{staff-padding} 
2433 ne s'applique qu'aux objets qui sont toujours placés en-dehors de la portée -- 
2434 il contrôle l'espace minimum à insérer entre l'objet et la portée. Attention : 
2435 par défaut, @code{staff-padding} concerne les objets positionnés par rapport 
2436 à la portée et n'a aucun effet sur les objets qui sont positionnés par
2437 rapport à une note ; il est toutefois possible de le régler pour
2438 fonctionner avec ces derniers. 
2439
2440 Pour trouver quelle propriété @code{padding} employer pour l'objet que vous 
2441 cherchez à repositionner, il vous faut consulter les propriétés de l'objet dans 
2442 la RPI. Prenez garde que les propriétés @code{padding} ne sont pas forcément 
2443 traitées dans l'objet en question ; il faut alors regarder les objets
2444 qui semblent s'en rapprocher. 
2445
2446 Toutes les valeurs @code{padding} sont exprimées en espaces de portée. 
2447 Pour la plupart des objets, la valeur par défaut est aux alentours de
2448 1,0 et parfois moins (cela dépend de chaque objet).  Il est possible de
2449 la modifier lorsqu'on a besoin d'un espace vide plus grand (ou plus petit).
2450
2451
2452 @item
2453 @code{self-alignment-X}
2454
2455 @cindex self-alignment-X,  propriété
2456
2457 Cette propriété sert à aligner les objets sur la gauche, sur la droite ou 
2458 à les centrer par rapport au point de référence des objets parents. 
2459 Elle peut être utilisée avec tous les objets qui acceptent la 
2460 @code{self-alignment-interface}. Il s'agit, en général, des objets qui 
2461 contiennent du texte. Les valeurs admises sont @code{LEFT}, 
2462 @code{RIGHT} et @code{CENTER}. On peut aussi attribuer à 
2463 la place une valeur numérique entre @code{-1} et @code{+1}, 
2464 où @code{-1} signifie alignement sur la gauche, @code{+1} 
2465 alignement sur la droite, et les nombres intermédiaires déplacent 
2466 progressivement le texte de la gauche vers la droite. Des valeurs 
2467 numériques supérieures à @code{1} sont également admises 
2468 pour déplacer le texte encore plus loin vers la gauche, ou des 
2469 valeurs inférieures à @code{-1} pour déplacer le texte encore 
2470 plus loin vers la droite. Un écart de @code{1} en valeur 
2471 correspond à un déplacement de la moitié de la longueur du 
2472 texte.
2473
2474 @item
2475 @code{extra-spacing-width}
2476
2477 @cindex extra-spacing-width, propriété
2478
2479 Cette propriété est utilisée pour tous les objets qui acceptent la 
2480 @code{item-interface}. Elle reçoit deux nombres, le premier étant 
2481 ajouté au bord gauche et le second au bord droit.  Des nombres 
2482 négatifs déplacent le coin vers la gauche, des nombres positifs 
2483 vers la droite, si bien que pour élargir un objet, le premier nombre 
2484 doit être négatif et le second positif.  Attention : tous les objets 
2485 n'acceptent pas forcément les deux nombres.  Par exemple, l'objet 
2486 @code{Accidental} ne retient que le premier nombre (coin gauche).
2487
2488
2489 @item
2490 @code{staff-position}
2491
2492 @cindex staff-position, propriété
2493
2494 @code{staff-position} est une propriété de la 
2495 @code{staff-symbol-referencer-interface}, qui s'applique aux objets 
2496 positionnés par rapport à la portée. Elle indique, en demi-espaces de 
2497 portée, la position verticale des objets par rapport à la ligne médiane 
2498 de la portée. C'est bien pratique pour résoudre des problèmes de 
2499 collision entre des objets comme les silences valant mesure entière, 
2500 les liaisons et les notes de différentes voix.
2501
2502 @item
2503 @code{force-hshift}
2504
2505 @cindex force-hshift, propriété
2506
2507 Des notes très proches dans un accord, ou des notes simultanées dans 
2508 différentes voix, peuvent être disposées sur deux colonnes, rarement 
2509 plus, pour éviter que les têtes de notes ne se chevauchent. On parle 
2510 alors de colonnes (ou empilement) de notes et un objet appelé
2511 @code{NoteColumn} est créé pour placer les notes sur la colonne.
2512
2513 La propriété @code{force-hshift} appartient à @code{NoteColumn} (en 
2514 réalité à la @code{note-column-interface}). Le fait de la modifier permet 
2515 de déplacer un empilement selon l'unité appropriée aux colonnes 
2516 de notes, à savoir la largeur des têtes de note de la première voix.
2517 Son utilisation est réservée à des situations complexes dans lesquelles
2518 les commandes habituelles @code{\shiftOn} 
2519 (voir @ref{Instanciation explicite des voix}) ne suffisent plus à
2520 résoudre les conflits.  Elle est alors préférable à l'utilisation de la
2521 propriété @code{extra-offset}, dans la mesure où on n'a pas besoin
2522 d'exprimer la distance en espaces de portée et où le fait de déplacer
2523 les notes à l'intérieur ou à l'extérieur d'une @code{NoteColumn} affecte
2524 d'autres actions comme les fusionnements de notes.
2525
2526 @end itemize
2527
2528 @item
2529 Pour terminer, quand toutes les autres méthodes ont échoué, il est 
2530 possible de repositionner verticalement les objets à la main par rapport 
2531 à la ligne médiane de la portée, ou en les déplaçant à une distance 
2532 donnée vers une nouvelle position.  Les inconvénients sont qu'il faut
2533 individuellement, pour chaque objet, trouver les valeurs correctes de 
2534 repositionnement souvent par tâtonnement, et que, puisque le 
2535 mouvement est opéré après que LilyPond a placé tous les autres 
2536 objets, c'est à l'utilisateur de résoudre tous les problèmes de
2537 collision qui pourraient survenir.  Et le pire avec cette méthode est
2538 que, le jour où la musique est modifiée, il faut de nouveau rechercher
2539 les valeurs de repositionnement.  Les propriétés à utiliser pour ce type
2540 de repositionnement manuel sont :
2541
2542
2543 @table @code
2544 @item extra-offset
2545
2546 @cindex extra-offset, propriété
2547
2548 Cette propriété s'applique à tout objet acceptant la
2549 @code{grob-interface}.  Elle reçoit une paire de nombre qui indiquent le
2550 déplacement supplémentaire dans le sens horizontal et vertical.  Des
2551 nombres négatifs déplacent l'objet vers la gauche ou vers la droite.
2552 L'unité utilisée est l'espace de portée.  Le déplacement supplémentaire
2553 intervient une fois que la composition des objets est achevée, si bien
2554 qu'un objet peut être repositionné à n'importe quel endroit sans
2555 perturber quoi que ce soit.  
2556
2557 @item positions
2558
2559 @cindex positions, propriété
2560
2561 Cette propriété est très utile pour ajuster manuellement l'inclinaison et 
2562 la hauteur des barres de ligature, des liaisons et des nolets. Elle est  
2563 suivie de deux nombres qui donnent la position des bords gauche et 
2564 droit des barres, liaisons, etc. par rapport à la ligne médiane de la 
2565 portée.  L'unité de référence est l'intervalle de lignes de portée.
2566 Attention toutefois au fait que les liaisons et phrasés ne peuvent pas
2567 être repositionnés n'importe où.  LilyPond commence par dresser la liste
2568 des emplacements possibles pour les liaisons et choisit par défaut la
2569 liaison qui @qq{semble la meilleure}.  Si la propriété @code{positions}
2570 a été retouchée, la liaison la plus proche de la position demandée sera
2571 retenue dans la liste.
2572 @end table
2573
2574 @end enumerate
2575
2576 Il est possible qu'un objet ne dispose pas de toutes ces propriétés.  Il 
2577 est donc nécessaire de consulter la RPI pour vérifier quelles sont les 
2578 propriétés disponibles pour l'objet en question. 
2579
2580 Voici une liste d'objets les plus couramment impliqués dans les 
2581 collisions, avec le nom de l'objet à consulter dans la RPI afin de
2582 trouver les propriétés à retoucher pour obtenir un déplacement.
2583
2584
2585 @multitable @columnfractions .5 .5
2586 @headitem Type d'objet              @tab Nom d'objet
2587 @item Articulations                 @tab @code{Script}
2588 @item Barres de ligature            @tab @code{Beam}
2589 @item Doigté                        @tab @code{Fingering}
2590 @item Liaisons de phrasé            @tab @code{Slur}   
2591 @item Liaisons de prolongation      @tab @code{Tie}
2592 @item Nolets                        @tab @code{TupletBracket}
2593 @item Nuances (verticalement)       @tab @code{DynamicLineSpanner}
2594 @item Nuances (horizontalement)     @tab @code{DynamicText}
2595 @item Reprises / marques de texte   @tab @code{RehearsalMark}
2596 @item Texte, p.ex. @code{^"texte"}  @tab @code{TextScript}
2597 @end multitable
2598
2599
2600 @node Correction des collisions d'objets
2601 @subsection Correction des collisions d'objets
2602 @translationof Fixing overlapping notation
2603
2604 Voyons maintenant comment les propriétés décrites dans la section 
2605 précédente peuvent nous aider à résoudre les collisions. 
2606
2607 @subheading la propriété padding
2608
2609 @cindex décalage (padding)
2610 @cindex résolution des chevauchements de notation
2611 @cindex chevauchement de notation
2612
2613 En jouant sur la propriété @code{padding} (littéralement 
2614 @qq{rembourrage}), on augmente (ou on diminue) la distance entre 
2615 des symboles qui sont imprimés au-dessus ou en dessous des notes. 
2616
2617 @cindex Script, exemple de dérogation
2618 @cindex padding, exemple d'utilisation de la propriété
2619
2620 @lilypond[quote,fragment,relative=1,verbatim]
2621 c2\fermata
2622 \override Script #'padding = #3
2623 b2\fermata
2624 @end lilypond
2625
2626 @cindex MetronomeMark, exemple de dérogation
2627 @cindex padding, exemple d'utilisation de la propriété
2628
2629 @lilypond[quote,fragment,relative=1,verbatim]
2630 % This will not work, see below:
2631 \override MetronomeMark #'padding = #3
2632 \tempo 4=120
2633 c1
2634 % This works:
2635 \override Score.MetronomeMark #'padding = #3
2636 \tempo 4=80
2637 d1
2638 @end lilypond
2639
2640 Vous remarquerez dans le second exemple à quel point il est important de 
2641 préciser le nom du contexte qui contient l'objet.  Puisque l'objet 
2642 @code{MetronomeMark} appartient au contexte @code{Score}, le fait de 
2643 modifier la propriété dans le contexte @code{Voice} passera inaperçu. 
2644 Pour plus de détails, voir @ruser{Modification de propriétés}.
2645
2646 Si on augmente la propriété @code{padding} d'un objet alors que celui-ci 
2647 fait partie d'un ensemble d'objets positionnés en fonction de leur 
2648 @code{outside-staff-priority}, cet objet sera déplacé, ainsi que tous
2649 les autres objets du groupe. 
2650
2651 @subheading left-padding et right-padding
2652
2653 @cindex left-padding, propriété
2654 @cindex right-padding, propriété
2655
2656 La propriété @code{right-padding} joue sur l'espacement entre une 
2657 altération et la note sur laquelle elle porte.  On ne l'utilise pas
2658 souvent, mais l'exemple ci-dessous montre une situation où elle est
2659 nécessaire.  Imaginons que nous voulions faire apparaître un accord qui
2660 contienne à la fois un si bécarre et un si bémol.  Pour qu'il n'y ait
2661 pas de doute, nous chercherions à faire précéder la note d'un signe
2662 bécarre et d'un signe bémol.  Voici différentes tentatives pour y
2663 parvenir : 
2664
2665 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2666 <b bes>
2667 <b! bes>
2668 <b? bes>
2669 @end lilypond
2670
2671 Aucune n'est satifaisante, et la seconde se solde même par une
2672 collision  entre les deux signes. 
2673
2674 Une solution pour arriver à nos fins consiste à retoucher le stencil des 
2675 altérations grâce à un markup qui contient les symboles bécarre et 
2676 bémol, dans l'ordre que nous souhaitons, comme ceci :
2677
2678 @cindex Accidental, exemple de dérogation
2679 @cindex text, exemple d'utilisation de la propriété
2680 @cindex stencil, exemple d'utilisation de la propriété
2681 @cindex AccidentalPlacement, exemple de dérogation
2682 @cindex right-padding, exemple d'utilisation de la propriété
2683
2684 @lilypond[quote,ragged-right,verbatim]
2685 naturalplusflat = \markup { \natural \flat }
2686 \relative c'' {
2687   \once \override Accidental
2688     #'stencil = #ly:text-interface::print
2689   \once \override Accidental #'text = #naturalplusflat
2690   \once \override Score.AccidentalPlacement #'right-padding = #1.5
2691   <b bes>
2692 }
2693 @end lilypond
2694
2695 @noindent
2696 Cette méthode utilise, pour le stencil des altérations, une retouche 
2697 qui ne sera pas reprise par la suite.  Le type de stencil est
2698 obligatoirement une procédure, qui consiste ici à imprimer le contenu de
2699 la propriété @code{text} de @code{Accidental}, déclaré comme étant un
2700 signe bécarre suivi d'un signe bémol.  Celui-ci est ensuite repoussé
2701 devant la tête de note par la retouche de @code{right-padding}.
2702
2703 @noindent
2704
2705 @subheading la propriété staff-padding
2706
2707 @cindex alignement d'objets sur une ligne de base
2708 @cindex objets, alignement sur une ligne de base
2709
2710 @code{staff-padding} sert à aligner des objets tels que des nuances 
2711 sur une ligne fictive à une hauteur donnée par rapport à la portée,
2712 plutôt qu'à une hauteur qui varie en fonction de la position de la note
2713 sur laquelle porte l'objet.  Ce n'est pas une propriété de
2714 @code{DynamicText} mais de @code{DynamicLineSpanner}, car la ligne
2715 fictive est destinée à s'appliquer autant à @strong{toutes} les nuances,
2716 notamment celles qui sont créées comme des bandeaux en longueur (en
2717 anglais @emph{Spanners}).  Tel est donc le moyen d'aligner les
2718 indications de nuance, comme dans cet exemple repris de la section
2719 précédente : 
2720
2721 @cindex DynamicText, exemple de dérogation
2722 @cindex extra-spacing-width, exemple d'utilisation de la propriété
2723 @cindex DynamicLineSpanner, exemple de dérogation
2724 @cindex staff-padding, exemple d'utilisation de la propriété
2725
2726 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2727 \dynamicUp
2728 % Extend width by 1 unit
2729 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2730 % Align dynamics to a base line 2 units above staff
2731 \override DynamicLineSpanner #'staff-padding = #2
2732 a4\f b\mf c\mp b\p
2733 @end lilypond
2734
2735
2736 @subheading la propriété self-alignment-X
2737
2738 L'exemple suivant montre comment résoudre une collision entre une
2739 indication de corde et une hampe, en alignant le coin droit sur le point
2740 de référence de la note parente :
2741
2742 @cindex StringNumber, exemple de dérogation
2743 @cindex self-alignment-X, exemple d'utilisation de la propriété
2744
2745 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
2746 \voiceOne
2747 < a \2 >
2748 \once \override StringNumber #'self-alignment-X = #RIGHT
2749 < a \2 >
2750 @end lilypond
2751
2752 @subheading la propriété staff-position
2753
2754 @cindex collision d'objets à l'intérieur d'une portée
2755
2756 Dans une voix, un silence valant une mesure entière peut chevaucher les  
2757 notes d'une autre voix.  Vu que ces silences sont centrés entre les deux  
2758 barres de mesure, il serait très compliqué de programmer LilyPond pour 
2759 repérer ces risques de collision, dans la mesure où, normalement, toutes 
2760 les collisions entre notes ou entre notes et silences se produisent sur 
2761 des notes et silences simultanés. Voici un exemple de collision de ce
2762 type : 
2763
2764 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2765 << {c c c c} \\ {R1} >>
2766 @end lilypond
2767
2768 Ici, la meilleure solution consiste à déplacer le symbole de pause vers
2769 le bas -- puisque cette pause appartient à la voix deux.  Par défaut,
2770 dans la @code{\voiceTwo} (c'est-à-dire dans la seconde voix d'une
2771 construction  @w{@code{<<@{...@} \\ @{...@}>>}}), la propriété
2772 @code{staff-position} est réglée sur @code{-4} pour les
2773 @code{MultiMeasureRest} ; nous avons donc besoin de la déplacer, disons,
2774 de quatre demi-intervalles vers le bas, ce qui donne @code{-8}.
2775
2776
2777 @cindex MultiMeasureRest, exemple de dérogation
2778 @cindex staff-position, exemple d'utilisation de la propriété
2779
2780 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2781 <<
2782   {c c c c}
2783 \\
2784   \override MultiMeasureRest #'staff-position = #-8
2785   {R1}
2786 >>
2787 @end lilypond
2788
2789 C'est mieux que d'utiliser, par exemple, @code{extra-offset}, 
2790 car la ligne supplémentaire au-dessus du silence est insérée 
2791 automatiquement. 
2792
2793 @subheading la propriété extra-offset
2794
2795 @cindex positionnement des objets
2796 @cindex positionnement des grobs
2797 @cindex objets, positionnement
2798 @cindex grobs, positionnement
2799
2800 La propriété @code{extra-offset} offre la possibilité de contrôler 
2801 entièrement le placement d'un objet, aussi bien horizontalement que 
2802 verticalement. 
2803
2804 Dans l'exemple suivant, la seconde indication de doigté est déplacée 
2805 légèrement vers la gauche et de 1,8 intervalle de lignes vers le bas :
2806
2807 @cindex Fingering, exemple de dérogation
2808 @cindex extra-offset, exemple d'utilisation de la propriété
2809
2810 @lilypond[quote,fragment,relative=1,verbatim]
2811 \stemUp
2812 f-5
2813 \once \override Fingering
2814     #'extra-offset = #'(-0.3 . -1.8)
2815 f-5
2816 @end lilypond
2817
2818
2819 @subheading la propriété positions
2820
2821 @cindex contrôle des nolets, liaisons, phrasés et ligatures
2822 @cindex gestion manuelle des nolets, liaisons, phrasés et ligatures
2823 @cindex ligatures de nolet, gestion manuelle
2824 @cindex liaisons, gestion manuelle
2825 @cindex phrasés, gestion manuelle
2826 @cindex ligatures, gestion manuelle
2827
2828 La propriété @code{positions} permet de contrôler manuellement la 
2829 position et l'inclinaison des nolets, coulés, liaisons de phrasé et
2830 barres de ligature.  Voici un exemple avec une horrible liaison de
2831 phrasé -- horrible pour avoir tenté de contourner la liaison de
2832 l'acciaccature. 
2833
2834 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2835 r4  \acciaccatura e8\( d8 c ~c d c d\)
2836 @end lilypond
2837
2838 @noindent
2839 Nous pourrions tout simplement déplacer la liaison de phrasé au-dessus des
2840 notes, et ce serait la meilleure solution :
2841
2842 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2843 r4
2844 \phrasingSlurUp
2845 \acciaccatura e8\( d8 c ~c d c d\)
2846 @end lilypond
2847
2848 @noindent
2849 Mais si, pour une quelconque raison, cette solution n'était pas 
2850 envisageable, l'autre solution consiste à déplacer légèrement vers le 
2851 bas l'extrémité gauche de la liaison de phrasé, grâce à la propriété 
2852 @code{positions}.  Cela corrige en même temps la forme plutôt 
2853 disgracieuse de la liaison.
2854
2855 @cindex PhrasingSlur, exemple de dérogation
2856 @cindex positions, exemple d'utilisation de la propriété
2857
2858 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2859 r4
2860 \once \override PhrasingSlur #'positions = #'(-4 . -3)
2861 \acciaccatura
2862 e8\( d8 c ~c d c d\)
2863 @end lilypond
2864
2865 Voici un autre exemple, tiré du début de la partie de main gauche 
2866 du Prélude de Chopin, Op. 28, No 2. Comme nous pouvons le 
2867 constater, les barres de ligature chevauchent les notes les plus hautes :
2868
2869 @lilypond[quote,verbatim,fragment,ragged-right]
2870 {
2871 \clef "bass"
2872 << {b,8 ais, b, g,} \\ {e, g e, g} >>
2873 << {b,8 ais, b, g,} \\ {e, g e, g} >>
2874 }
2875 @end lilypond
2876
2877 @noindent
2878 On peut y remédier en déplaçant manuellement vers le haut les deux 
2879 extrémités des ligatures de croches, non plus à 2 intervalles au-dessus 
2880 de la ligne médiane mais, disons, à 3 :
2881
2882 @cindex Beam, exemple de dérogation
2883 @cindex positions, exemple d'utilisation de la propriété
2884
2885 @lilypond[quote,verbatim,fragment,ragged-right]
2886 {
2887   \clef "bass"
2888   <<
2889     \override Beam #'positions = #'(3 . 3)
2890     {b,8 ais, b, g,}
2891   \\
2892     {e, g e, g}
2893   >>
2894   << {b,8 ais, b, g,} \\ {e, g e, g} >>
2895 }
2896 @end lilypond
2897
2898 @noindent
2899 Vous remarquerez que la retouche continue à s'appliquer au 
2900 second bloc de croches de la première voix mais qu'il ne s'applique 
2901 à aucune barre de la deuxième voix.
2902
2903 @subheading la propriété force-hshift
2904
2905 @c FIXME: formatting stuff  (ie not important right now IMO)
2906 @c @a nchor Chopin finally corrected TODOgp
2907
2908 Maintenant, nous sommes prêts à appliquer les dernières corrections  à
2909 l'exemple de Chopin présenté à la fin de @ref{J'entends des Voix}, que 
2910 nous avions laissé dans cet état :
2911
2912 @lilypond[quote,verbatim,fragment,ragged-right]
2913 \new Staff \relative c'' {
2914   \key aes \major
2915   <<
2916     { c2 aes4. bes8 } \\
2917     { aes2 f4 fes   } \\
2918     { \voiceFour
2919       <ees c>2
2920       des2
2921     }
2922   >> |
2923   <c ees aes c>1 |
2924 }
2925 @end lilypond
2926
2927 @noindent
2928 Les deux plus basses notes du premier accord (c'est-à-dire celles de la 
2929 troisième voix) ne devraient pas être décalées de l'empilement des deux 
2930 plus hautes notes.  Pour y remédier, nous réglons le @code{force-hshift}  
2931 -- qui est une propriété de @code{NoteColumn} -- de ces notes sur zéro. 
2932 Ensuite, la note la plus basse du second accord serait mieux à droite des 
2933 notes plus hautes.  Pour cela, nous réglons le @code{force-hshift} de
2934 cette note sur 0,5 -- c'est-à-dire la moitié de la largeur d'une tête de
2935 note vers la droite de la colonne des notes plus hautes.
2936
2937 Et voici le résultat final :
2938
2939 @cindex NoteColumn, exemple de dérogation
2940 @cindex force-hshift, exemple d'utilisation de la propriété
2941
2942 @lilypond[quote,verbatim,fragment,ragged-right]
2943 \new Staff \relative c'' {
2944   \key aes \major
2945   <<
2946     { c2 aes4. bes8 } \\
2947     { aes2 f4 fes   } \\
2948     { \voiceFour
2949       \once \override NoteColumn #'force-hshift = #0 <ees c>2
2950       \once \override NoteColumn #'force-hshift = #0.5 des2
2951     }
2952   >> |
2953   <c ees aes c>1 |
2954 }
2955 @end lilypond
2956
2957
2958 @node Exemple concret
2959 @subsection Exemple concret
2960 @translationof Real music example
2961
2962 Pour terminer ce chapitre consacré aux retouches, voici, étape par 
2963 étape, la mise en forme d'un exemple concret nécessitant un certain 
2964 nombre de retouches jusqu'à l'obtention du résultat attendu.  Cet
2965 exemple a été choisi en raison des problèmes inhabituels de notation
2966 qu'il soulevait et pour vous apprendre à les résoudre grâce au Manuel de
2967 notation.  Il n'est pas représentatif d'une opération normale de gravure ;
2968 que ces difficultés ne vous découragent donc pas ! Des difficultés comme
2969 celles-ci ne sont, heureusement, pas courantes ! 
2970
2971 Cet exemple est tiré de la Première Ballade de Chopin, Op. 23, mesures 
2972 6 à 9 ; cela correspond à la transition entre le Lento d'ouverture et le 
2973 Moderato.  Voici, pour commencer, ce à quoi nous voulons que la 
2974 partition ressemble ; pour limiter les complications, nous n'avons pas 
2975 fait apparaître les indications de nuance, de doigté ni de pédale.
2976
2977
2978 @c The following should appear as music without code
2979 @c This example should not be indexed
2980 @lilypond[quote,ragged-right]
2981 rhMusic = \relative c'' {
2982   r2
2983   c4.\( g8 |
2984   \once \override Tie #'staff-position = #3.5
2985   bes1~ |
2986   \bar "||"
2987   \time 6/4
2988   \mergeDifferentlyHeadedOn
2989   \mergeDifferentlyDottedOn
2990   bes2.^\markup {\bold "Moderato"} r8
2991   <<
2992     {c,8[ d fis bes a] | }
2993   \\
2994     % Reposition the c2 to the right of the merged note
2995     {c,8~ \once \override NoteColumn #'force-hshift = #1.0
2996     % Move the c2 out of the main note column so the merge will work
2997     \shiftOnn c2}
2998   \\
2999     % Stem on the d2 must be down to permit merging
3000     {s8 \stemDown \once \override Stem #'transparent = ##t d2}
3001   \\
3002     {s4 fis4.}
3003   >>
3004   \mergeDifferentlyHeadedOff
3005   \mergeDifferentlyDottedOff
3006   g2.\)
3007 }
3008
3009 lhMusic = \relative c' {
3010   r2 <c g ees>2( |
3011   <d g, d>1)\arpeggio |
3012   r2. d,,4 r4 r |
3013   r4
3014 }
3015
3016 \score {
3017   \new PianoStaff <<
3018     \new Staff = "RH"  <<
3019       \key g \minor
3020       \rhMusic
3021     >>
3022     \new Staff = "LH" <<
3023       \key g \minor
3024       \clef "bass"
3025       \lhMusic
3026     >>
3027   >>
3028 }
3029 @end lilypond
3030
3031 Nous constatons tout d'abord que, dans la troisième mesure, la main 
3032 droite compte quatre voix. Ce sont les cinq croches avec une barre, 
3033 le do avec liaison, le ré blanche qui se fond avec le ré croche, et le 
3034 fa dièse noire pointée qui se fond lui aussi avec la croche de même 
3035 hauteur.  Tout le reste se réduit à une seule voix.  Le plus simple est 
3036 donc de créer temporairement ces quatre voix au moment opportun. 
3037 Si vous avez oublié comment faire, reportez-vous à 
3038 @ref{J'entends des Voix}.  Commençons par saisir les notes comme 
3039 appartenant à deux variables, mettons en place l'ossature des 
3040 portées dans un bloc score et voyons ce que LilyPond propose par 
3041 défaut : 
3042
3043 @lilypond[quote,verbatim,ragged-right]
3044 rhMusic = \relative c'' {
3045   r2 c4. g8 |
3046   bes1~ |
3047   \time 6/4
3048   bes2. r8
3049   % Start polyphonic section of four voices
3050   <<
3051     {c,8 d fis bes a | }
3052   \\
3053     {c,8~ c2 | }
3054   \\
3055     {s8 d2 | }
3056   \\
3057     {s4 fis4. | }
3058   >>
3059   g2.
3060 }
3061
3062 lhMusic = \relative c' {
3063   r2 <c g ees>2 |
3064   <d g, d>1 |
3065   r2. d,,4 r4 r |
3066   r4
3067 }
3068
3069 \score {
3070   \new PianoStaff <<
3071     \new Staff = "RH"  <<
3072       \key g \minor
3073       \rhMusic
3074     >>
3075     \new Staff = "LH" <<
3076       \key g \minor
3077       \clef "bass"
3078       \lhMusic
3079     >>
3080   >>
3081 }
3082 @end lilypond
3083
3084 Toutes les notes sont correctes mais l'allure générale est loin d'être 
3085 satisfaisante.  La liaison se heurte à l'indication de mesure lors du 
3086 changement de métrique, la ligature des croches n'est pas bonne dans la 
3087 troisième mesure, les notes ne sont pas fusionnées et il manque plusieurs 
3088 éléments de notation.  Commençons par le plus simple.  Nous pouvons 
3089 corriger la ligature des croches en la créant manuellement et nous pouvons 
3090 facilement ajouter les limites droite et gauche de la liaison de phrasé, 
3091 puisque tout cela a déjà été traité dans le tutoriel.  Voici le résultat :
3092
3093 @lilypond[quote,verbatim,ragged-right]
3094 rhMusic = \relative c'' {
3095   r2 c4.\( g8 |
3096   bes1~ |
3097   \time 6/4
3098   bes2. r8
3099   % Start polyphonic section of four voices
3100   <<
3101     {c,8[ d fis bes a] | }
3102   \\
3103     {c,8~ c2 | }
3104   \\
3105     {s8 d2 | }
3106   \\
3107     {s4 fis4. | }
3108   >>
3109   g2.\)
3110 }
3111
3112 lhMusic = \relative c' {
3113   r2 <c g ees>2( |
3114   <d g, d>1) |
3115   r2. d,,4 r4 r |
3116   r4
3117 }
3118
3119 \score {
3120   \new PianoStaff <<
3121     \new Staff = "RH"  <<
3122       \key g \minor
3123       \rhMusic
3124     >>
3125     \new Staff = "LH" <<
3126       \key g \minor
3127       \clef "bass"
3128       \lhMusic
3129     >>
3130   >>
3131 }
3132 @end lilypond
3133
3134 La première mesure est maintenant correcte.  La seconde contient un
3135 arpège et doit se terminer par une double barre.  Comment faire, puisque
3136 cela n'a pas été traité dans le Manuel d'initiation ?  C'est alors qu'il
3137 faut nous reporter au Manuel de notation.  Quand on cherche @qq{arpège}
3138 et @qq{barre de mesure} dans l'index, on voit aisément qu'il faut ajouter
3139 @code{\arpeggio} à un accord pour produire un arpège et qu'une double
3140 barre est le résultat de la commande @code{\bar "||"}.  Rien de plus
3141 facile !  Nous devons ensuite corriger la collision entre la liaison et 
3142 l'indication de mesure.  Le mieux est de déplacer la liaison vers le
3143 haut.  La méthode pour déplacer les objets a déjà été présentée dans
3144 @ref{Déplacement d'objets}, et l'on sait que, pour des objets
3145 positionnés par rapport à la portée, il nous faut modifier leur
3146 propriété @code{staff-position}, exprimée en demi-intervalles de lignes
3147 par rapport à la ligne médiane de la portée.  Voici donc la retouche à
3148 insérer juste devant la première note liée ; elle est censée déplacer la
3149 liaison vers le haut de 3,5 demi-intervalles de lignes au-dessus de la
3150 ligne médiane : 
3151
3152 @code{\once \override Tie #'staff-position = #3.5}
3153
3154 Cela s'adjoint à la deuxième mesure, pour donner :
3155
3156 @lilypond[quote,verbatim,ragged-right]
3157 rhMusic = \relative c'' {
3158   r2 c4.\( g8 |
3159   \once \override Tie #'staff-position = #3.5
3160   bes1~ |
3161   \bar "||"
3162   \time 6/4
3163   bes2. r8
3164   % Start polyphonic section of four voices
3165   <<
3166     {c,8[ d fis bes a] | }
3167   \\
3168     {c,8~ c2 | }
3169   \\
3170     {s8 d2 | }
3171   \\
3172     {s4 fis4. | }
3173   >>
3174   g2.\)
3175 }
3176
3177 lhMusic = \relative c' {
3178   r2 <c g ees>2( |
3179   <d g, d>1)\arpeggio |
3180   r2. d,,4 r4 r |
3181   r4
3182 }
3183
3184 \score {
3185   \new PianoStaff <<
3186     \new Staff = "RH"  <<
3187       \key g \minor
3188       \rhMusic
3189     >>
3190     \new Staff = "LH" <<
3191       \key g \minor
3192       \clef "bass"
3193       \lhMusic
3194     >>
3195   >>
3196 }
3197 @end lilypond
3198
3199 Venons-en à la troisième mesure et au début de la section Moderato.  Dans 
3200 le Tutoriel, il est indiqué comment insérer du texte en gras à l'aide de
3201 la commande @code{\markup} ; pas de problème, du coup, pour ajouter 
3202 @qq{Moderato} en gras.  Mais comment faire pour fusionner les notes de 
3203 différentes voix ?  C'est là que le Manuel de notation peut nous venir
3204 en aide.  Une recherche sur @qq{fusionnement de notes} dans l'index nous 
3205 renvoie au chapitre @ruser{Résolution des collisions}, et plus
3206 précisément aux commandes permettant de fusionner des notes en fonction
3207 de leur type et selon qu'elles sont pointées ou non.  Dans notre
3208 exemple, pour la durée de la polyphonie de la troisième mesure, nous
3209 avons besoin de fusionner deux types de notes ; grâce aux informations
3210 trouvées dans le Manuel de notation, nous ajoutons  
3211
3212 @example
3213 \mergeDifferentlyHeadedOn
3214 \mergeDifferentlyDottedOn
3215 @end example
3216
3217 @noindent
3218 au début de cette section et
3219
3220 @example
3221 \mergeDifferentlyHeadedOff
3222 \mergeDifferentlyDottedOff
3223 @end example
3224
3225 @noindent
3226 à la fin, ce qui donne : 
3227
3228 @lilypond[quote,verbatim,ragged-right]
3229 rhMusic = \relative c'' {
3230   r2 c4.\( g8 |
3231   \once \override Tie #'staff-position = #3.5
3232   bes1~ |
3233   \bar "||"
3234   \time 6/4
3235   bes2.^\markup {\bold "Moderato"} r8
3236   \mergeDifferentlyHeadedOn
3237   \mergeDifferentlyDottedOn
3238   % Start polyphonic section of four voices
3239   <<
3240     {c,8[ d fis bes a] | }
3241   \\
3242     {c,8~ c2 | }
3243   \\
3244     {s8 d2 | }
3245   \\
3246     {s4 fis4. | }
3247   >>
3248   \mergeDifferentlyHeadedOff
3249   \mergeDifferentlyDottedOff
3250   g2.\)
3251 }
3252
3253 lhMusic = \relative c' {
3254   r2 <c g ees>2( |
3255   <d g, d>1)\arpeggio |
3256   r2. d,,4 r4 r |
3257   r4
3258 }
3259
3260 \score {
3261   \new PianoStaff <<
3262     \new Staff = "RH"  <<
3263       \key g \minor
3264       \rhMusic
3265     >>
3266     \new Staff = "LH" <<
3267       \key g \minor
3268       \clef "bass"
3269       \lhMusic
3270     >>
3271   >>
3272 }
3273 @end lilypond
3274
3275 Ces retouches ont permis de fusionner les deux fa dièse mais pas les 
3276 deux ré.  Pourquoi ?  La réponse se trouve dans la même section du 
3277 Manuel de notation : les notes à fusionner doivent avoir des hampes dans 
3278 des directions opposées et deux notes ne peuvent pas être fusionnées
3279 s'il y a une troisième note dans la même colonne.  Ici, les deux ré ont 
3280 leur hampe orientée vers le haut et il y a une troisième note, do.  Nous 
3281 savons changer l'orientation de la hampe avec @code{\stemDown} et 
3282 le Manuel de notation nous indique également comment déplacer le do 
3283 -- en produisant un décalage grâce à l'une des commandes @code{\shift}.
3284 Mais laquelle ?  Le do appartient à la deuxième voix et n'est pas décalé ; 
3285 les deux ré appartiennent respectivement à la première et à la troisième 
3286 voix, et l'un n'est pas décalé tandis que l'autre l'est.  Il nous faut
3287 donc décaler largement le do avec la commande @code{\shiftOnn} pour 
3288 éviter une interférence avec les deux ré.  Voici ce que donnent ces 
3289 modifications : 
3290
3291 @cindex Tie, exemple de dérogation
3292 @cindex staff-position, exemple d'utilisation de la propriété
3293
3294 @lilypond[quote,verbatim,ragged-right]
3295 rhMusic = \relative c'' {
3296   r2 c4.\( g8 |
3297   \once \override Tie #'staff-position = #3.5
3298   bes1~ |
3299   \bar "||"
3300   \time 6/4
3301   bes2.^\markup {\bold "Moderato"} r8
3302   \mergeDifferentlyHeadedOn
3303   \mergeDifferentlyDottedOn
3304   % Start polyphonic section of four voices
3305   <<
3306     {c,8[ d fis bes a] | }
3307   \\
3308     % Move the c2 out of the main note column so the merge will work
3309     {c,8~ \shiftOnn c2 | }
3310   \\
3311     % Stem on the d2 must be down to permit merging
3312     {s8 \stemDown d2 | }
3313   \\
3314     {s4 fis4. | }
3315   >>
3316   \mergeDifferentlyHeadedOff
3317   \mergeDifferentlyDottedOff
3318   g2.\)
3319 }
3320
3321 lhMusic = \relative c' {
3322   r2 <c g ees>2( |
3323   <d g, d>1)\arpeggio |
3324   r2. d,,4 r4 r |
3325   r4
3326 }
3327
3328 \score {
3329   \new PianoStaff <<
3330     \new Staff = "RH"  <<
3331       \key g \minor
3332       \rhMusic
3333     >>
3334     \new Staff = "LH" <<
3335       \key g \minor
3336       \clef "bass"
3337       \lhMusic
3338     >>
3339   >>
3340 }
3341 @end lilypond
3342
3343 Pas loin.  Il ne reste plus que deux problèmes : les ré une fois
3344 fusionnés ne devraient plus avoir de hampe vers le bas, et le do serait
3345 mieux à la droite des ré.  Nous savons remédier à ces deux problèmes
3346 grâce aux retouches précédentes : nous allons rendre la hampe
3347 transparente et déplacer le do avec la propriété @code{force-hshift}.
3348 Et voici le résultat final : 
3349
3350 @cindex NoteColumn, exemple de dérogation
3351 @cindex force-hshift, exemple d'utilisation de la propriété
3352 @cindex Stem, exemple de dérogation
3353 @cindex transparent, exemple d'utilisation de la propriété
3354
3355 @lilypond[quote,verbatim,ragged-right]
3356 rhMusic = \relative c'' {
3357   r2
3358   c4.\( g8 |
3359   \once \override Tie #'staff-position = #3.5
3360   bes1~ |
3361   \bar "||"
3362   \time 6/4
3363   bes2.^\markup {\bold "Moderato"} r8
3364   \mergeDifferentlyHeadedOn
3365   \mergeDifferentlyDottedOn
3366   <<
3367     {c,8[ d fis bes a] | }
3368   \\
3369     % Reposition the c2 to the right of the merged note
3370     {c,8~ \once \override NoteColumn #'force-hshift = #1.0
3371     % Move the c2 out of the main note column so the merge will work
3372     \shiftOnn c2}
3373   \\
3374     % Stem on the d2 must be down to permit merging
3375     {s8 \stemDown \once \override Stem #'transparent = ##t d2}
3376   \\
3377     {s4 fis4.}
3378   >>
3379   \mergeDifferentlyHeadedOff
3380   \mergeDifferentlyDottedOff
3381   g2.\)
3382 }
3383
3384 lhMusic = \relative c' {
3385   r2 <c g ees>2( |
3386   <d g, d>1)\arpeggio |
3387   r2. d,,4 r4 r |
3388   r4
3389 }
3390
3391 \score {
3392   \new PianoStaff <<
3393     \new Staff = "RH"  <<
3394       \key g \minor
3395       \rhMusic
3396     >>
3397     \new Staff = "LH" <<
3398       \key g \minor
3399       \clef "bass"
3400       \lhMusic
3401     >>
3402   >>
3403 }
3404
3405 @end lilypond
3406
3407
3408 @node Autres retouches
3409 @section Autres retouches
3410 @translationof Further tweaking
3411
3412 @menu
3413 * Autres utilisations des retouches::       
3414 * Utilisation de variables dans les retouches::  
3415 * Autres sources de documentation::  
3416 * Options ralentissant le traitement::  
3417 * Retouches avancées avec Scheme::  
3418 @end menu
3419
3420 @node Autres utilisations des retouches
3421 @subsection Autres utilisations des retouches
3422 @translationof Other uses for tweaks
3423
3424 @cindex transparent, utilisation de la propriété
3425 @cindex création d'objet invisible
3426 @cindex suppression d'objets
3427 @cindex objets, suppression d'
3428 @cindex masquage d'objets
3429 @cindex objets, masquage d'
3430 @cindex invisibles, objets
3431 @cindex objets, invisibles
3432 @cindex liaison de tenue avec changement de voix
3433
3434 @subheading Liaison entre plusieurs voix
3435
3436 Voici un exemple qui montre comment créer une liaison de 
3437 prolongation entre des notes appartenant à des voix différentes.  En 
3438 temps normal, seules deux notes appartenant à une même voix 
3439 peuvent être ainsi liées.  La solution consiste à utiliser deux voix, 
3440 dont l'une avec les notes liées
3441
3442 @lilypond[quote,fragment,relative=2]
3443 << { b8~ b8\noBeam }
3444 \\ { b[ g8] }
3445 >>
3446 @end lilypond
3447
3448 @noindent
3449 et à rendre transparente la première hampe de cette voix ; 
3450 on a alors l'impression que la liaison couvre les deux voix.
3451
3452 @cindex Stem, exemple de dérogation
3453 @cindex transparent, exemple d'utilisation de la propriété
3454
3455 @lilypond[quote,fragment,relative=2,verbatim]
3456 <<
3457   {
3458     \once \override Stem #'transparent = ##t
3459     b8~ b8\noBeam
3460   }
3461 \\
3462   { b[ g8] }
3463 >>
3464 @end lilypond
3465
3466 Pour être sûr que la hampe que nous avons rendue transparente 
3467 n'empiète pas trop sur le trait de liaison, nous pouvons l'allonger en 
3468 réglant la longueur (@code{length}) sur @code{8},
3469
3470 @lilypond[quote,fragment,relative=2,verbatim]
3471 <<
3472   {
3473     \once \override Stem #'transparent = ##t
3474     \once \override Stem #'length = #8
3475     b8~ b8\noBeam
3476   }
3477 \\
3478   { b[ g8] }
3479 >>
3480 @end lilypond
3481
3482 @subheading Rendu MIDI d'un point d'orgue
3483
3484 @cindex stencil, utilisation de la propriété
3485 @cindex point d'orgue, rendu en MIDI
3486
3487 En ce qui concerne les objets extérieurs à la portée, quand on veut les 
3488 faire disparaître de la partition imprimée , il est généralement
3489 préférable de modifier leur propriété @code{stencil} plutôt que leur
3490 propriété @code{transparent}.  Le fait d'attribuer à la propriété
3491 @code{stencil} d'un objet la valeur @code{#f} supprimera entièrement
3492 celui-ci de la partition.  Il ne risquera donc pas de gêner le placement
3493 d'autres objets. 
3494
3495 Par exemple, si nous voulons changer le réglage de métronome pour 
3496 simuler un point d'orgue dans le fichier MIDI, nous ne voulons surtout 
3497 pas que cette indication métronomique apparaisse sur la partition ni 
3498 qu'elle influence l'espacement entre les deux systèmes ou la position 
3499 des annotations voisines sur la portée.  Le fait d'attribuer à la propriété 
3500 @code{stencil} la valeur @code{#f} est donc la bonne solution.  Nous 
3501 montrons ci-dessous le résultat des deux méthodes : 
3502
3503 @cindex MetronomeMark, exemple de dérogation
3504 @cindex transparent, exemple d'utilisation de la propriété
3505
3506 @lilypond[quote,verbatim,ragged-right]
3507 \score {
3508   \relative c'' {
3509     % Visible tempo marking
3510     \tempo 4=120
3511     a4 a a
3512     \once \override Score.MetronomeMark #'transparent = ##t
3513     % Invisible tempo marking to lengthen fermata in MIDI
3514     \tempo 4=80
3515     a\fermata
3516     % New tempo for next section
3517     \tempo 4=100
3518     a a a a
3519   }
3520   \layout { }
3521   \midi { }
3522 }
3523 @end lilypond
3524
3525 @cindex MetronomeMark, exemple de dérogation
3526 @cindex stencil, exemple d'utilisation de la propriété
3527
3528 @lilypond[quote,verbatim,ragged-right]
3529 \score {
3530   \relative c'' {
3531     % Visible tempo marking
3532     \tempo 4=120
3533     a4 a a
3534     \once \override Score.MetronomeMark #'stencil = ##f
3535     % Invisible tempo marking to lengthen fermata in MIDI
3536     \tempo 4=80
3537     a\fermata
3538     % New tempo for next section
3539     \tempo 4=100
3540     a a a a
3541   }
3542   \layout { }
3543   \midi { }
3544 }
3545 @end lilypond
3546
3547 @noindent
3548 Les deux méthodes permettent d'enlever l'indication métronomique qui
3549 allonge le point d'orgue de la partition, et toutes deux modifient le
3550 rythme MIDI comme souhaité  mais, dans la première, l'indication
3551 métronomique transparente repousse vers le haut l'indication de tempo,
3552 contrairement à la seconde (avec le stencil désactivé) qui la laisse à
3553 sa place. 
3554
3555
3556 @node Utilisation de variables dans les retouches
3557 @subsection Utilisation de variables dans les retouches
3558 @translationof Using variables for tweaks
3559
3560 @cindex variables, utilisation dans les retouches
3561 @cindex utilisation de variables dans les retouches
3562 @cindex retouches et utilisation de variables
3563
3564 Les commandes de retouche sont souvent longues et pénibles à 
3565 taper, et ne tolèrent pas la moindre erreur.  Lorsqu'on a besoin de 
3566 faire plusieurs fois les mêmes retouches, il est préférable de 
3567 définir des variables qui les contiennent. 
3568
3569 Imaginons que nous voulions accentuer certains mots dans des paroles en 
3570 les mettant en italique.  Au lieu des commandes @code{\italic} et
3571 @code{\bold}, qui ne fonctionnent dans les paroles que si elles sont
3572 enchâssées dans un @code{\markup}, ce qui les rend pénibles à saisir,
3573 pouvons-nous employer les commandes @code{\override} et @code{\revert} ?
3574
3575 @example
3576 @code{\override Lyrics . LyricText #'font-shape = #'italic}
3577 @code{\override Lyrics . LyricText #'font-series = #'bold}
3578
3579 @code{\revert Lyrics . LyricText #'font-shape}
3580 @code{\revert Lyrics . LyricText #'font-series}
3581 @end example
3582
3583 Là encore, ce serait extrêmement pénible à saisir, surtout s'il y avait 
3584 beaucoup de mots à retoucher de cette façon.  Plutôt que cette 
3585 solution, nous déclarons ces commandes comme étant deux variables 
3586 et les utilisons comme suit -- quoique on choisirait sans doute pour
3587 les variables des noms plus courts pour simplifier la frappe : 
3588
3589 @cindex LyricText, exemple de dérogation
3590 @cindex font-shape, exemple d'utilisation de la propriété
3591 @cindex font-series, exemple d'utilisation de la propriété
3592
3593 @lilypond[quote,verbatim]
3594 emphasize = {
3595   \override Lyrics . LyricText #'font-shape = #'italic
3596   \override Lyrics . LyricText #'font-series = #'bold
3597 }
3598 normal = {
3599   \revert Lyrics . LyricText #'font-shape
3600   \revert Lyrics . LyricText #'font-series
3601 }
3602
3603 global = { \time 4/4 \partial 4 \key c \major}
3604 SopranoMusic   = \relative c' { c4 | e4. e8 g4  g  | a a g }
3605 AltoMusic  = \relative c' { c4 | c4. c8 e4  e  | f f e }
3606 TenorMusic = \relative c  { e4 | g4. g8 c4. b8 | a8 b c d e4 }
3607 BassMusic  = \relative c  { c4 | c4. c8 c4  c  | f8 g a b c4 }
3608 VerseOne   = \lyrics { E -- | ter -- nal \emphasize Fa -- ther, \normal | strong to save, }
3609 VerseTwo   = \lyricmode { O | \emphasize Christ, \normal whose voice the | wa -- ters heard, }
3610 VerseThree = \lyricmode { O | \emphasize Ho -- ly Spi -- rit, \normal | who didst brood }
3611 VerseFour  = \lyricmode { O | \emphasize Tri -- ni -- ty \normal of | love and pow'r }
3612
3613 \score {
3614   \new ChoirStaff <<
3615     \new Staff <<
3616       \clef "treble"
3617       \new Voice = "Soprano"  { \voiceOne \global \SopranoMusic }
3618       \new Voice = "Alto" { \voiceTwo \AltoMusic }
3619       \new Lyrics \lyricsto "Soprano" { \VerseOne   }
3620       \new Lyrics \lyricsto "Soprano" { \VerseTwo   }
3621       \new Lyrics \lyricsto "Soprano" { \VerseThree }
3622       \new Lyrics \lyricsto "Soprano" { \VerseFour  }
3623     >>
3624     \new Staff <<
3625       \clef "bass"
3626       \new Voice = "Tenor" { \voiceOne \TenorMusic }
3627       \new Voice = "Bass"  { \voiceTwo \BassMusic  }
3628     >>
3629   >>
3630 }
3631 @end lilypond
3632
3633
3634 @node Autres sources de documentation
3635 @subsection Autres sources de documentation
3636 @translationof Other sources of information
3637
3638 Le Manuel d'utilisation des programmes contient beaucoup d'informations
3639 sur LilyPond.  Cependant vous pouvez en découvrir encore plus en
3640 consultant les fichiers internes de LilyPond.  Pour cela, il vous faut
3641 d'abord connaître le répertoire @emph{ad hoc} sur votre système.
3642 L'emplacement du répertoire dépend (a) du fait que, pour vous procurer
3643 LilyPond, vous avez téléchargé un paquet précompilé sur lilypond.org, ou
3644 vous l'avez installé grâce à votre gestionnaire de paquetages
3645 (c'est-à-dire distribué avec Linux ou installé avec fink ou cygwin), ou
3646 encore vous l'avez compilé directement à partir des sources ; et (b) du
3647 système d'exploitation sur lequel il tourne. 
3648
3649 @strong{Téléchargé depuis lilypond.org}
3650
3651 @itemize @bullet
3652 @item Linux
3653
3654 @file{@var{INSTALLDIR}/lilypond/usr/share/lilypond/current/}
3655
3656 @item MacOS X
3657
3658 @code{@var{INSTALLDIR}/LilyPond.app/Contents/Resources/share/lilypond/current/}
3659 Pour accéder à ce dossier, deux possibilités : soit, dans un Terminal,
3660 taper @code{cd} suivi du chemin complet ci-dessus ; soit
3661 Control-cliquer (ou clic droit) sur l'application LilyPond
3662 et sélectionner @qq{Afficher le contenu du paquet}.
3663
3664 @item Windows
3665
3666 Dans l'Explorateur Windows, voir
3667 @code{@var{INSTALLDIR}/LilyPond/usr/share/lilypond/current/}
3668
3669 @end itemize
3670
3671 @strong{Installé par un gestionnaire de paquetages ou compilé d'après
3672 les sources} 
3673
3674 @code{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, où
3675 @var{PREFIX} est déterminé par votre gestionnaire de paquetages ou par
3676 le script @code{configure}, et @var{X.Y.Z} est le numéro de version de
3677 LilyPond. 
3678
3679 @smallspace
3680
3681 Dans ce répertoire, deux sous-répertoires sont particulièrement
3682 intéressants : 
3683
3684 @itemize
3685 @item @code{ly/} --- contient les fichiers en format LilyPond
3686 @item @code{scm/} --- contient les fichiers en format Scheme
3687 @end itemize
3688
3689 Commençons par examiner quelques fichiers contenus dans @code{ly/}.
3690 Nous ouvrons @code{ly/property-init.ly} dans un éditeur de texte --
3691 celui que vous avez l'habitude d'utiliser pour les fichiers @code{.ly} 
3692 fera très bien l'affaire.  Ce fichier contient les définitions de toutes 
3693 les commandes standard prédéfinies de LilyPond, comme @code{\stemUp} et  
3694 @code{\slurDotted}.  Vous pouvez constater que ce n'est rien d'autre 
3695 que des définitions de variables composées d'un ou plusieurs groupes 
3696 de commandes @code{\override}.  Par exemple, @code{\tieDotted} 
3697 est défini comme :
3698
3699 @example
3700 tieDotted = @{
3701   \override Tie #'dash-period = #0.75
3702   \override Tie #'dash-fraction = #0.1
3703 @}
3704 @end example
3705
3706 Si vous n'aimez pas les valeurs par défaut, les commandes prédéfinies 
3707 peuvent être facilement redéfinies, comme n'importe quelle autre
3708 variable, en tête de votre fichier d'entrée.
3709
3710 Voici les fichiers les plus utiles dans le répertoire @code{ly/} :
3711
3712 @multitable @columnfractions .4 .6
3713 @headitem Nom de fichier
3714   @tab Contenu
3715 @item @code{ly/engraver-init.ly}
3716   @tab Définitions des Contextes de graveurs
3717 @item @code{ly/paper-defaults-init.ly}
3718   @tab Réglages papier par défaut
3719 @item @code{ly/performer-init.ly}
3720   @tab Définitions des Contextes d'interprétation
3721 @item @code{ly/property-init.ly}
3722   @tab Définitions de toutes les commandes prédéfinies courantes
3723 @item @code{ly/spanner-init.ly}
3724   @tab Définitions des commandes prédéfinies pour les bandeaux 
3725 @end multitable
3726
3727 Les autres réglages (comme les définitions de commandes @emph{markup})
3728 sont conservés comme fichiers @code{.scm} (Scheme).  Le langage de 
3729 programmation Scheme offre une interface programmable dans le 
3730 processus interne de LilyPond.  De plus amples explications sur ces 
3731 fichiers dépasseraient le cadre de ce manuel, dans la mesure où elles 
3732 requièrent la connaissance du langage Scheme.  Les utilisateurs qui 
3733 souhaiteraient comprendre le fonctionnement de ces fichiers de 
3734 configuration doivent être avertis que des connaissances techniques 
3735 substantielles et beaucoup de temps sont nécessaires (voir le 
3736 @ref{Tutoriel Scheme}).
3737
3738 Si c'est votre cas, les fichiers Scheme les plus utiles à connaître sont :
3739
3740 @multitable @columnfractions .4 .6
3741 @headitem Nom de fichier
3742   @tab Contenu
3743 @item @code{scm/auto-beam.scm}
3744   @tab Régles par défaut des ligatures subalternes
3745 @item @code{scm/define-grobs.scm}
3746   @tab Réglages par défaut des propriétés de @emph{grobs}
3747 @item @code{scm/define-markup-commands.scm}
3748   @tab Spécification de toutes les commandes de @emph{markup}
3749 @item @code{scm/midi.scm}
3750   @tab Réglages par défaut pour les sorties MIDI
3751 @item @code{scm/output-lib.scm}
3752   @tab Réglages affectant l'apparence des frets, couleurs, altérations,
3753        barres de mesure, etc.
3754 @item @code{scm/parser-clef.scm}
3755         @tab Définition des clefs prises en charge
3756 @item @code{scm/script.scm}
3757         @tab Réglages par défaut des articulations
3758 @end multitable
3759
3760
3761
3762 @node Options ralentissant le traitement
3763 @subsection Options ralentissant le traitement
3764 @translationof Avoiding tweaks with slower processing
3765
3766 LilyPond peut effectuer des vérifications supplémentaires lors du 
3767 traitement des fichiers ; cependant, le rendu nécessitera alors plus de  
3768 temps.  En contrepartie, il y aura moins d'ajustements manuels à
3769 réaliser.  Si une indication textuelle ou des paroles  débordent dans la 
3770 marge, ces vérifications auront pour effet de serrer la ligne
3771 suffisamment pour faire tenir le texte entre les marges.  
3772
3773 Pour pouvoir fonctionner en toutes circonstances, ces vérifications
3774 doivent être activées ; il faut pour cela placer les retouches dans un
3775 bloc @code{Score \with}, plutôt qu'à l'intérieur du fragment musical,
3776 comme ceci : 
3777
3778 @example
3779 \new Score \with @{
3780   % Pour s'assurer que les indications textuelles et paroles 
3781   % seront à l'intérieur des marges de la page.
3782   \override PaperColumn #'keep-inside-line = ##t
3783   \override NonMusicalPaperColumn #'keep-inside-line = ##t
3784 @} @{
3785    ..
3786 @}
3787 @end example
3788
3789
3790 @node Retouches avancées avec Scheme
3791 @subsection Retouches avancées avec Scheme
3792 @translationof Advanced tweaks with Scheme
3793
3794 Nous avons vu à quel point le résultat obtenu avec LilyPond peut 
3795 être largement personnalisé à l'aide de commandes comme 
3796 @code{\override} et @code{\tweak}.  Et pourtant l'utilisation de 
3797 Scheme ouvre des possibilités encore plus grandes.
3798 Le code écrit dans le langage de programmation Scheme peut être 
3799 intégré directement dans le processus interne de LilyPond.  Bien sûr, 
3800 il faut pour cela connaître un minimum de programmation en langage 
3801 Scheme.  Pour des explications complètes là-dessus, consultez le 
3802 @ref{Tutoriel Scheme}.
3803
3804 En guise d'illustration -- et ce n'est qu'une possibilité parmi tant 
3805 d'autres -- nous allons attribuer à une propriété non pas une valeur 
3806 préétablie mais une procédure Scheme qui sera lancée à chaque 
3807 utilisation de la propriété par LilyPond.  De cette façon, nous obtenons  
3808 un réglage dynamique de la propriété par le simple fait d'invoquer la 
3809 procédure.  Dans cet exemple, nous colorons les têtes de notes en
3810 fonction de leur position sur la portée. 
3811
3812
3813 @cindex x11-color, exemple d'utilisaation de la fonction
3814 @cindex NoteHead, exemple de dérogation
3815 @cindex color, détermination de la propriété par une procédure Scheme
3816
3817 @lilypond[quote,verbatim,ragged-right]
3818 #(define (color-notehead grob)
3819   "Color the notehead according to its position on the staff."
3820   (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7)))
3821     (case mod-position
3822       ;;   Return rainbow colors
3823       ((1) (x11-color 'red    ))  ; for C
3824       ((2) (x11-color 'orange ))  ; for D
3825       ((3) (x11-color 'yellow ))  ; for E
3826       ((4) (x11-color 'green  ))  ; for F
3827       ((5) (x11-color 'blue   ))  ; for G
3828       ((6) (x11-color 'purple ))  ; for A
3829       ((0) (x11-color 'violet ))  ; for B
3830     )
3831   )
3832 )
3833
3834 \relative c' {
3835   % Arrange to obtain color from color-notehead procedure
3836   \override NoteHead #'color = #color-notehead
3837   c2 c' |
3838   b4 g8 a b4 c |
3839   c,2 a' |
3840   g1 |
3841 }
3842 \addlyrics {
3843   Some -- where o -- ver the Rain -- bow, way up high,
3844 }
3845 @end lilypond
3846
3847 Vous trouverez dans @ref{Scheme et les retouches} d'autres exemples
3848 d'utilisation de ces interfaces programmables. 
3849