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