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