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