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