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