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