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