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