1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
3 Translation of GIT committish: 2a87f1e1f98b76751482cae4474d41aa5e38e37b
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..
12 @c Translators: Valentin Villenave, Nicolas Klutchnikoff, Damien Heurtebise
13 @c Translation checkers: Jean-Charles Malahieude, John Mandereau
14 @c Translation status: post-GDP
16 @node Retouche de partition
17 @chapter Retouche de partition
18 @translationof Tweaking output
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.
25 * Retouches élémentaires::
26 * Le manuel de référence des propriétés internes::
27 * Apparence des objets::
28 * Positionnement des objets::
29 * Collisions d'objets::
34 @node Retouches élémentaires
35 @section Retouches élémentaires
36 @translationof Tweaking basics
39 * Introduction aux retouches::
40 * Objets et interfaces::
41 * Conventions de nommage des objets et propriétés::
42 * Méthodes de retouche::
46 @node Introduction aux retouches
47 @subsection Introduction aux retouches
48 @translationof Introduction to tweaks
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 ; d'autres sont plus complexes. Mais
55 à elles toutes, elles permettent d'obtenir tout ce qu'on veut en matière
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 ; 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.
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.
72 @node Objets et interfaces
73 @subsection Objets et interfaces
74 @translationof Objects and interfaces
81 @cindex propriétés des objets
82 @cindex objet, propriétés
83 @cindex objet de rendu
84 @cindex rendu, objets de
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.
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} ; 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.
106 Certains types d'objet portent des noms spécifiques. Les objets qui se
107 rapportent à des éléments de notation sur le fichier de sortie, comme
108 les notes, les hampes, les liaisons de phrasé ou de prolongation, les
109 doigtés, les clefs, etc. sont appelés @qq{Objets de rendu} ; ils
110 sont aussi connus sous le nom d'@qq{Objets graphiques} (en
111 anglais : @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.
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
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.
137 Ainsi s'achève le tour des principaux termes relatifs aux objets
138 que nous serons amenés à utiliser dans ce chapitre.
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
145 @cindex conventions de nommage des objets
146 @cindex conventions de nommage des propriétés
147 @cindex objets, conventions de nommage
148 @cindex propriétés, conventions de nommage
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.
159 @multitable @columnfractions .33 .33 .33
160 @headitem Type d'objet/propriété
161 @tab Convention de nommage
164 @tab Aaaa ou AaaaAaaaAaaa
165 @tab Staff, GrandStaff
166 @item Objets de rendu
167 @tab Aaaa ou AaaaAaaaAaaa
170 @tab Aaaa_aaa_engraver
171 @tab Clef_engraver, Note_heads_engraver
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
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.
189 @node Méthodes de retouche
190 @subsection Méthodes de retouche
191 @translationof Tweaking methods
193 @cindex retouches, méthodologie
194 @cindex méthodes de retouche
196 @strong{La commande \override}
198 @cindex override, commande
199 @cindex override, syntaxe
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
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
219 La syntaxe générale de cette commande est :
222 \override @var{Contexte}.@var{ObjetDeRendu} #'@var{propriété-rendu} = #@var{valeur}
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}.
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é.
237 Les sections ci-dessous traitent largement des propriétés et de leurs
238 valeurs -- voir @ref{Types de propriétés} -- mais, pour illustrer la
239 mise en forme et l'utilisation de ces commandes, nous nous limiterons à
240 n'employer que quelques propriétés et valeurs simples, facilement
243 Nous ne parlerons dans l'immédiat ni du @code{#'}, qui précède
244 toujours la propriété, ni du @code{#}, qui précède toujours la
245 valeur. Ces deux éléments doivent obligatoirement être
246 présents sous cette forme. Voici la commande la plus fréquente
247 pour faire des retouches, et pratiquement tout le reste de ce
248 chapitre aura pour but montrer, à travers des exemples, comment
249 l'utiliser. L'exemple ci-dessous change la couleur des têtes de
252 @cindex couleur,exemple d'utilisation de la propriété
253 @cindex NoteHead, exemple de dérogation
255 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
257 \override NoteHead #'color = #red
259 \override NoteHead #'color = #green
263 @strong{La commande \revert}
265 @cindex revert, commande
270 Une fois qu'elle a été modifiée, la propriété conserve sa nouvelle
271 valeur jusqu'à ce qu'elle soit à nouveau modifiée ou qu'elle rencontre
272 la commande @code{\revert}. La commande @code{\revert} obéit à
273 la syntaxe ci-dessous et ramène la valeur de la propriété à sa valeur
274 d'origine. Attention : dans le cas où plusieurs @code{\override}
275 ont été employés, il ne s'agit pas de la valeur précédente mais bien de
276 la valeur par défaut.
279 \revert @var{Contexte}.@var{ObjetDeRendu} #'@var{propriété-de-rendu}
282 Tout comme pour la commande @code{\override}, la mention du
283 @var{Contexte} est souvent facultative. Elle sera omise dans de
284 nombreux exemples ci-dessous. Voici un exemple qui ramène la
285 couleur des deux dernières notes à leur valeur par défaut :
287 @cindex couleur,exemple d'utilisation de la propriété
288 @cindex NoteHead, exemple de dérogation
290 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
292 \override NoteHead #'color = #red
294 \override NoteHead #'color = #green
296 \revert NoteHead #'color
300 @strong{Le préfixe \once}
305 Les commandes @code{\override} et @code{\set} peuvent supporter
306 toutes les deux le préfixe @code{\once}. Celui-ci a pour fonction de
307 n'appliquer la commande @code{\override} ou @code{\set} qu'à
308 l'instant musical en cours, avant que la propriété ne reprenne
309 sa valeur antérieure -- qui n'est pas forcément la valeur par défaut
310 lorsqu'un autre @code{\override} est toujours effectif. Toujours à
311 partir du même exemple, il est possible de ne changer la couleur que
314 @cindex couleur,exemple d'utilisation de la propriété
315 @cindex NoteHead, exemple de dérogation
317 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
319 \override NoteHead #'color = #red
321 \once \override NoteHead #'color = #green
323 \revert NoteHead #'color
327 @strong{La commande \overrideProperty}
329 @cindex overrideProperty, commande
331 @funindex \overrideProperty
332 @funindex overrideProperty
334 Il existe une autre forme de commande @code{\override},
335 @code{\overrideProperty}, qui est parfois utile. Nous la mentionnons
336 ici par souci d'exhaustivité ; pour le détail, voir
337 @rextend{Retouches complexes}.
339 @c Maybe explain in a later iteration -td
341 @strong{La commande \tweak}
343 @cindex tweak, commande
348 La dernière commande disponible pour les retouches est
349 @code{\tweak}. Elle sert à changer les propriétés d'objets qui
350 surviennent simultanément dans la musique, comme par exemple les
351 notes d'un accord. La commande @code{\override} modifierait toutes
352 les notes de l'accord, tandis que @code{\tweak} permet de ne modifier
353 que l'élément immédiatement suivant dans la chaîne de saisie.
355 Voici un exemple. Supposons que nous voulions changer la taille de
356 la tête de note du milieu (le mi) dans un accord de do majeur. Voyons
357 d'abord ce que donnerait @code{\once \override} :
359 @cindex font-size, exemple d'utilisation de la propriété
360 @cindex NoteHead, exemple de dérogation
362 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
364 \once \override NoteHead #'font-size = #-3
369 Nous voyons que @code{\override} modifie @strong{toutes} les têtes
370 de notes de l'accord, car toutes les notes de l'accord surviennent au
371 même @strong{instant musical} et que la fonction de @code{\once}
372 est de faire porter la modification sur tous les objets du type spécifié
373 qui surviennent au même instant musical, comme le fait la commande
374 @code{\override} elle-même.
376 La commande @code{\tweak} opère différemment. Elle agit
377 sur l'élément immédiatement suivant dans la chaîne de saisie. Dans sa
378 forme la plus simple, elle ne fonctionne que sur les objets créés
379 directement à partir de l'élément suivant dans la chaîne de saisie,
380 c'est-à-dire essentiellement des têtes de notes et des articulations.
382 Pour reprendre notre exemple, la taille de la note du milieu d'un
383 accord peut être modifiée de cette manière :
385 @cindex font-size, exemple d'utilisation de la propriété
386 @cindex @code{\tweak}, exemple
388 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
390 <c \tweak #'font-size #-3 e g>4
393 Vous noterez que la syntaxe de @code{\tweak} est différente de
394 celle de la commande @code{\override}. Ni le contexte,
395 ni l'objet n'ont besoin d'être spécifiés ; au contraire, cela
396 produirait une erreur si on le faisait. Tous deux sont sous-entendus
397 par l'élément suivant dans la chaîne de saisie. Il n'est pareillement
398 pas nécessaire d'insérer un signe égal. La syntaxe générale
399 de la commande @code{\tweak} est donc, tout simplement :
402 \tweak #'@var{propriété-de-rendu} #@var{valeur}
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 :
408 @cindex couleur, exemple d'utilisation de la propriété
409 @cindex @code{\tweak}, exemple
411 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
413 -\tweak #'color #red ^"Red"
414 -\tweak #'color #green _"Green"
418 Attention : la commande @code{\tweak} doit être précédée d'une
419 marque d'articulation, comme si elle-même était une articulation. Dans
420 la cas de multiples positionnements forcés (@code{^} ou @code{_}), celui
421 le plus à gauche aura préséance puisqu'il sera appliqué en dernier.
423 @cindex @code{\tweak} et altération
424 @cindex @code{\tweak} et objet de rendu spécifique
426 Les objets tels que hampes et altérations seront créés postérieurement à
427 l'événement qui survient. L'utilisation de la commande @code{\tweak}
428 sur de tels objets indirectement créés peut se faire en nommant
429 explicitement l'objet de rendu, si tant est que LilyPond puisse remonter
430 jusqu'à l'événement originel :
432 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
433 <\tweak Accidental #'color #red cis4
434 \tweak Accidental #'color #green es
438 Cette forme développée de la commande @code{\tweak} correspond à :
440 \tweak @var{objet-de-rendu} #'@var{propriété-de-rendu} @var{valeur}
443 @cindex nolets imbriqués
444 @cindex triolets imbriqués
445 @cindex crochet de nolet
446 @cindex nolet, crochet
447 @cindex triolet, crochet
449 @funindex TupletBracket
451 Quand plusieurs nolets sont imbriqués et commencent au même instant
452 musical, c'est encore la commande @code{\tweak} qui est utilisée pour
453 changer l'apparence de l'un d'entre eux. Dans l'exemple suivant, le
454 long crochet de nolet et le premier des trois crochets courts commencent
455 au même instant musical ; une commande @code{\override}
456 s'appliquerait donc à la fois aux deux. En revanche, @code{\tweak}
457 permet de les dissocier. La première commande @code{\tweak} indique que
458 le long crochet doit être placé au-dessus des notes, et la seconde
459 indique que le coefficient de nolet doit être imprimé en rouge sur le
460 premier crochet de triolet court.
462 @cindex @code{\tweak}, exemple
463 @cindex direction, exemple d'utilisation de la propriété
464 @cindex couleur, exemple d'utilisation de la propriété
466 @lilypond[quote,ragged-right,verbatim,fragment,relative=2]
467 \tweak #'direction #up
470 \times 2/3 { c8[ c c] }
471 \times 2/3 { c8[ c c] }
472 \times 2/3 { c8[ c c] }
476 Si les nolets imbriqués ne commencent pas au même moment,
477 leur apparence peut alors être modifiée de la façon habituelle,
478 avec la commande @code{\override} :
480 @cindex texte, exemple d'utilisation de la propriété
481 @cindex tuplet-number, exemple de fonction
482 @cindex transparence, exemple d'utilisation de la propriété
483 @cindex TupletNumber, exemple de dérogation
485 @c NOTE Tuplet brackets collide if notes are high on staff
487 @lilypond[quote,ragged-right,verbatim,fragment,relative=1]
488 \times 2/3 { c8[ c c] }
489 \once \override TupletNumber
490 #'text = #tuplet-number::calc-fraction-text
494 \once \override TupletNumber #'transparent = ##t
495 \times 2/3 { c8[ c c] }
496 \times 2/3 { c8[ c c] }
502 @ruser{La commande d'affinage (@emph{tweak})}.
505 @node Le manuel de référence des propriétés internes
506 @section Le manuel de référence des propriétés internes
507 @translationof The Internals Reference manual
509 @cindex Références internes
512 * Propriétés des objets de rendu::
513 * Propriétés listées par interface::
514 * Types de propriétés::
518 @node Propriétés des objets de rendu
519 @subsection Propriétés des objets de rendu
520 @translationof Properties of layout objects
522 @cindex propriétés des objets de rendu
523 @cindex propriétés des objets graphiques (grobs)
524 @cindex grobs, propriétés
525 @cindex objets de rendu, propriétés
526 @cindex Manuel des références internes
528 Imaginons que votre partition contienne une liaison trop fine à votre
529 goût et que vous vouliez la rendre plus épaisse. Comment vous y
530 prendre ? Vous êtes convaincu, avec tout ce qui a été dit sur la
531 souplesse de LilyPond, qu'une telle retouche est réalisable et
532 vous vous dites qu'elle fera sans doute intervenir la commande
533 @code{\override}. Mais existe-t-il une propriété épaisseur qui
534 s'applique à une liaison et, dans l'affirmative, comment faire pour la
535 modifier ? C'est là qu'intervient la Référence des propriétés
536 internes. Elle contient toutes les informations dont vous avez besoin
537 pour construire n'importe quelle commande @code{\override}.
539 Avant de nous plonger dans la Référence des propriétés
540 internes, un mot d'avertissement. Il s'agit d'un document de
541 @strong{références}, de sorte qu'il ne contient pas ou peu
542 d'explications : son but est de présenter les informations de
543 façon précise et concise. Cela peut paraître décourageant
544 à première vue. Pas d'inquiétude ! Les conseils et les
545 explications fournis ici vous permettent de retrouver par vous-même les
546 informations dans la Référence des propriétés internes. Il
547 suffit d'un peu de pratique.
549 @cindex override, exemple
550 @cindex dérogation, exemple
551 @cindex Références internes, exemple d'utilisation
552 @cindex @code{\addlyrics} -- exemple
554 Prenons un exemple concret tiré d'un morceau de musique connu :
556 @c Mozart, Die Zauberflöte Nr.7 Duett
558 @lilypond[quote,verbatim,relative=2]
563 r4 bes8 bes[( g]) g |
564 g8[( es]) es d[( f]) as |
568 The man who | feels love's sweet e -- | mo -- tion
573 Admettons que nous voulions rendre les traits de liaison plus épais.
574 Est-ce possible ? Une liaison est assurément un objet de rendu, si
575 bien que la question est @qq{Existe-t-il une propriété attachée aux
576 liaisons et qui en contrôle l'épaisseur ?} Pour y répondre, nous
577 consultons la Référence des propriétés internes (ou RPI pour faire
580 Vous trouverez sur le site de LilyPond @uref{http://lilypond.org} la
581 RPI correspondant à votre version du programme. Allez sur la page
582 Documentation et cliquez sur Référence des propriétés internes.
583 Pour l'apprentissage, mieux vaut utiliser la version HTML standard,
584 et non la @qq{page unique en anglais} ou le PDF. Durant la lecture
585 des prochains paragraphes, il vous est conseillé de vous y reporter
586 réellement afin que les explications prennent tout leur sens.
588 En dessous du bandeau d'en-tête figurent cinq liens. Cliquez sur le
589 lien vers le @emph{Backend}, où se trouvent les informations sur les
590 objets de rendu. En dessous du titre @strong{Backend}, choisissez
591 alors le lien vers @emph{Tous les objets de rendu}. La page qui s'ouvre
592 énumère, dans l'ordre alphabétique, tous les objets utilisés dans votre
593 version de LilyPond. Cliquez sur Liaisons (@emph{Slurs} en anglais),
594 et les propriétés des liaisons apparaîtront.
596 Il existe un autre moyen de trouver cette page, à partir du Manuel de
597 notation. Une des pages qui traitent des liaisons contient un lien vers
598 la Référence des propriétés internes, qui mène directement à cette
599 page. Mais lorsque vous connaissez le nom de l'objet à retoucher, le
600 plus simple est de consulter la RPI.
602 La page de la RPI sur les liaisons commence par préciser que les objets
603 Liaison sont créés par le graveur Slur_engraver. Vient ensuite la liste
604 des réglages standard. Attention : ceux-ci @strong{ne suivent pas}
605 l'ordre alphabétique. Il faut donc les parcourir en entier pour trouver
606 la propriété susceptible de contrôler l'épaisseur des traits de liaison.
609 @code{thickness} (nombre)
611 Épaisseur de ligne, généralement mesurée en @code{line-thickness}
614 Voilà qui semble approprié pour changer l'épaisseur (@emph{thickness} en
615 anglais). On apprend que la valeur de @code{thickness}
616 est un simple nombre (@emph{number}), qu'elle est par défaut définie
617 à 1,2 et que l'unité de mesure est fixée par une autre propriété
618 appelée @code{line-thickness}.
620 Comme il a été indiqué, on ne trouve que peu, voire pas du tout
621 d'explication dans la RPI, mais nous en savons assez pour essayer
622 de changer l'épaisseur de la liaison. Comme nous l'avons vu, le
623 nom de l'objet est @code{Slur}, le nom de la propriété à changer
624 est @code{thickness} et la nouvelle valeur sera un nombre supérieur
625 à @code{1.2} si l'on veut augmenter l'épaisseur du trait.
627 Pour construire la commande @code{\override}, il suffit donc de
628 remplacer les valeurs que nous avons trouvées en guise de noms, en
629 laissant de côté le contexte. Commençons par une valeur très élevée
630 dans un premier temps, pour nous assurer que la commande fonctionne.
634 \override Slur #'thickness = #5.0
637 N'oublions pas le @code{#'} qui doit précéder le nom de la propriété et
638 le @code{#} qui doit précéder la nouvelle valeur.
640 La dernière question est : @qq{Où placer cette commande ?}
641 Tant qu'on n'est pas sûr de soi, la meilleure réponse est @qq{À
642 l'intérieur de l'expression musicale, avant la première liaison et
643 proche d'elle.} Essayons :
645 @cindex Slur, exemple de dérogation
646 @cindex thickness, exemple d'utilisation de la propriété
648 @lilypond[quote,verbatim,relative=2]
653 % Increase thickness of all following slurs from 1.2 to 5.0
654 \override Slur #'thickness = #5.0
655 r4 bes8 bes[( g]) g |
656 g8[( es]) es d[( f]) as |
660 The man who | feels love's sweet e -- | mo -- tion
666 et nous constatons que le trait de liaison est beaucoup plus épais.
668 Telle est la façon normale de construire les commandes
669 @code{\override}. Comme nous aurons l'occasion de le voir
670 par la suite, le problème est parfois plus complexe. Dans
671 l'immédiat, nous en savons assez pour construire nos propres
672 commandes -- mais il faut encore s'exercer. Les exemples
673 suivants sont là dans cette intention.
676 @subheading Détermination du contexte adéquat
677 @c VO Finding the context
679 @cindex contexte, détermination du
680 @cindex contexte, identification correcte du
682 Tout d'abord, de quoi avions-nous besoin pour préciser le
683 contexte ? À quoi devait-il ressembler ? Gageons que les
684 liaisons appartiennent au contexte Voix, dans la mesure où
685 elles sont étroitement liées à une ligne mélodique, mais
686 comment en être sûr ? Pour répondre à cette question,
687 revenons en haut de la page de la RPI consacrée aux liaisons ;
688 il est écrit : @qq{Les objets Liaison sont créés par le graveur
689 Slur_engraver}. Ainsi les liaisons seront créées dans n'importe
690 quel contexte où se trouve le @code{Slur_engraver}. Suivons
691 le lien vers la page @code{Slur_engraver}. Tout en bas, on
692 lit que le @code{Slur_engraver} est un élément appartenant
693 à cinq contextes Voix, dont le contexte de voix
694 standard, @code{Voice}. Notre hypothèse était donc juste.
695 Et parce que @code{Voice} est un contexte de très bas
696 niveau, qu'il est activé sans ambiguïté par le fait que l'on est
697 en train de saisir des notes, on peut ici ne pas le mentionner.
700 @subheading Redéfinition pour une seule occurrence
701 @c VO Overriding once only
703 @cindex dérogation pour une seule fois
704 @cindex usage unique, dérogation à
709 Dans le dernier exemple ci-dessus, @emph{toutes} les liaisons étaient
710 plus épaisses. Et si on veut épaissir uniquement la première
711 liaison ? On recourt alors à la commande @code{\once}. Placée
712 juste avant la commande @code{\override}, elle lui indique de ne changer
713 que la liaison commençant avec la note @strong{juste après}. Si la note
714 juste après n'ouvre pas une liaison, la commande sera sans aucun effet
715 -- elle ne reste pas en mémoire jusqu'à la prochaine liaison, elle est
716 purement et simplement ignorée. Il faut donc que la commande introduite
717 par @code{\once} soit insérée comme suit :
719 @cindex Slur, exemple de dérogation
720 @cindex thickness, exemple d'utilisation de la propriété
721 @cindex Liaison, exemple de dérogation
722 @cindex Épaisseur, exemple d'utilisation de la propriété
724 @lilypond[quote,verbatim,relative=2]
730 % Increase thickness of immediately following slur only
731 \once \override Slur #'thickness = #5.0
733 g8[( es]) es d[( f]) as |
737 The man who | feels love's sweet e -- | mo -- tion
743 Alors seule la première liaison est rendue plus épaisse.
745 La commande @code{\once} peut aussi être utilisée devant la commande
749 @subheading Rétablissement
753 @cindex rétablissement
755 @cindex défaut, retour aux propriétés par
760 Et si l'on voulait que les deux premières liaisons soient plus
761 épaisses ? On pourrait bien sûr utiliser deux commandes, chacune
762 précédée de @code{\once}, et placées juste avant la note par laquelle
766 @cindex liaison, exemple de dérogation
767 @cindex thickness, exemple d'utilisation de la propriété
768 @cindex épaisseur, exemple d'utilisation
770 @lilypond[quote,verbatim,relative=2]
776 % Increase thickness of immediately following slur only
777 \once \override Slur #'thickness = #5.0
779 % Increase thickness of immediately following slur only
780 \once \override Slur #'thickness = #5.0
781 g8[( es]) es d[( f]) as |
785 The man who | feels love's sweet e -- | mo -- tion
791 mais on peut aussi, au lieu de la commande @code{\once}, utiliser après
792 la seconde liaison la commande @code{\revert}, qui ramène la propriété
793 @code{thickness} à sa valeur par défaut :
795 @cindex Slur, exemple de dérogation
796 @cindex thickness, exemple d'utilisation de la propriété
797 @cindex liaison, exemple de dérogation
798 @cindex épaisseur, exemple d'utilisation
800 @lilypond[quote,verbatim,relative=2]
806 % Increase thickness of all following slurs from 1.2 to 5.0
807 \override Slur #'thickness = #5.0
810 % Revert thickness of all following slurs to default of 1.2
811 \revert Slur #'thickness
816 The man who | feels love's sweet e -- | mo -- tion
822 N'importe quelle propriété modifiée par @code{\override} peut ainsi
823 être ramenée, grâce à la commande @code{\revert}, à sa valeur par
826 Ici s'achève notre introduction à la RPI et aux retouches
827 simples. Vous trouverez d'autres exemples dans les prochaines
828 sections de ce chapitre ; ils vous permettront, d'une part,
829 d'apprendre à connaître un peu mieux la RPI et, d'autre part, de
830 vous entraîner un peu plus à y chercher les informations. Ces
831 exemples seront progressivement accompagnés d'explications et
832 introduiront des termes nouveaux.
835 @node Propriétés listées par interface
836 @subsection Propriétés listées par interface
837 @translationof Properties found in interfaces
840 @cindex interfaces, propriétés des
841 @cindex propriétés des interfaces
843 Supposons maintenant que nous voulions imprimer des paroles en italique.
844 Quelle formulation de la commande @code{\override} allons-nous
845 utiliser ? Nous consultons en premier lieu, comme précédemment, la
846 page de la RPI qui contient la liste @qq{Tous les objets de rendu}, et
847 recherchons un objet qui contrôle les paroles. Nous trouvons
848 @code{LyricText}, qui semble approprié. Nous cliquons dessus et nous
849 voyons apparaître les différentes propriétés des paroles, parmi
850 lesquelles @code{font-series} et @code{font-size}. Mais aucune ne
851 propose l'italique. Car la mise en forme des caractères est une
852 propriété commune à tous les objets d'écriture, si bien que, au lieu de
853 figurer dans tous les objets de rendu, elle est regroupée avec d'autres
854 propriétés semblables et placée dans une @strong{Interface}, la
855 @code{font-interface}.
857 Il nous faut donc apprendre à trouver les propriétés des interfaces
858 et découvrir les objets qui utilisent les propriétés de ces interfaces.
860 Retournons à la page de la RPI qui traite des paroles
861 (@emph{LyricText}). En bas de la page est dressée sous forme de liens
862 la liste des interfaces qui concernent LyricText. Cette liste comporte
863 plusieurs entrées, dont @code{font-interface}. En cliquant dessus, nous
864 voyons apparaître les différentes propriétés associées à cette
865 interface, qui sont en même temps les propriétés de tous les objets qui
866 s'y rapportent, parmi lesquels LyricText.
868 Nous avons alors sous les yeux tous les réglages des propriétés qui
869 contrôlent les polices de caractères, et notamment
870 @code{font-shape(symbole)}, où @code{symbole} peut prendre la valeur
871 @code{upright}, @code{italics} ou @code{caps}.
873 Vous remarquerez que @code{font-series} et @code{font-size} figurent
874 aussi dans la liste. La question qui ne manque pas de se poser
875 est : @qq{Comment se fait-il que les propriétés @code{font-series}
876 et @code{font-size} se retrouvent à la fois dans @code{LyricText} et
877 dans l'interface @code{font-interface} alors que ce n'est pas le cas
878 pour @code{font-shape} ?} La réponse est que lorsqu'un objet
879 @code{LyricText} est créé, les valeurs globales par défaut de
880 @code{font-series} et @code{font-size} sont modifiées, mais pas celles
881 de @code{font-shape}. Les possibilités de modification dans
882 @code{LyricText} ne concernent donc que les valeurs à appliquer à
883 @code{LyricText}. Les autres objets qui dépendent de
884 @code{font-interface} fixeront leurs propriétés différemment lorsqu'ils
887 Voyons maintenant si nous sommes en mesure de formuler la commande
888 @code{\override} pour mettre les paroles en italique. L'objet est
889 @code{LyricText}, la propriété est @code{font-shape} et la valeur est
890 @code{italic}. Comme auparavant, nous laissons de côté le contexte.
892 Signalons rapidement -- même si cette remarque est importante -- que,
893 puisque les valeurs de @code{font-shape} se présentent sous forme de
894 symboles, elles doivent être précédées d'une simple apostrophe,
895 @code{'}. C'est pour cette raison qu'il fallait une apostrophe devant
896 @code{thickness} dans l'exemple précédent, et qu'il en faut une devant
897 @code{font-shape}. Ce sont à chaque fois des symboles, qui sont
898 interprétés comme tels par LilyPond. Certains symboles peuvent être des
899 noms de propriété, comme @code{thickness} ou @code{font-shape},
900 d'autres sont des valeurs à attribuer aux propriétés, comme
901 @code{italic}. À ne pas confondre avec les chaînes de caractères
902 libres, qui se présentent comme @code{"un texte libre"} ; pour plus
903 de détails sur les symboles et les chaînes de caractères, voir le
904 @rextend{Tutoriel Scheme}.
906 Ainsi, la commande @code{\override} pour mettre les paroles en italique
910 \override LyricText #'font-shape = #'italic
914 et doit être placée juste devant et tout près des paroles à modifier,
917 @cindex font-shape, exemple d'utilisation de la propriété
918 @cindex italic, exemple
919 @cindex LyricText, exemple de dérogation
920 @cindex @code{\addlyrics}, exemple
922 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
927 r4 bes8 bes[( g]) g |
928 g8[( es]) es d[( f]) as |
932 \override LyricText #'font-shape = #'italic
933 The man who | feels love's sweet e -- | mo -- tion
939 et voilà les paroles en italiques.
942 @subheading Spécification du contexte en mode lyrique
943 @c VO Specifying the context in lyric mode
945 @cindex contexte, spécification en mode lyrique
946 @cindex mode lyrique, spécification de contexte en
948 Lorsqu'il s'agit de paroles et qu'on cherche à préciser le contexte
949 sur le modèle de ce qui a été fait précédemment, la commande échoue.
950 Car une syllabe saisie en mode Paroles (lyricmode) se termine
951 obligatoirement par une espace, un saut de ligne ou un nombre. Tout
952 autre caractère compte comme un élément de la syllabe. C'est pourquoi
953 il faut une espace ou un saut de ligne avant le @code{@}} final, pour
954 éviter qu'il ne soit assimilé à la dernière syllabe. De même, il faut
955 insérer des espaces de part et d'autre du point, @qq{.}, qui sépare le
956 nom de contexte du nom de l'objet, faute de quoi les deux noms seront
957 joints et l'interpréteur ne pourra pas les reconnaître. La formulation
961 \override Lyrics . LyricText #'font-shape = #'italic
964 @warning{Dans la saisie des paroles, pensez à toujours laisser une
965 espace entre la dernière syllabe et l'accolade fermante.}
967 @warning{Lorsqu'on retouche des paroles, toujours placer des espaces
968 autour du point qui sépare le nom de contexte du nom d'objet.}
972 @rextend{Tutoriel Scheme}.
975 @node Types de propriétés
976 @subsection Types de propriétés
977 @translationof Types of properties
979 @cindex propriété, types de
981 Nous avons vu jusqu'à maintenant deux types de propriétés :
982 @code{nombre} et @code{symbole}. Pour pouvoir fonctionner, la valeur
983 associée à une propriété doit correspondre au type attendu et suivre les
984 règles liées à ce type. Le type de propriété est toujours donné entre
985 parenthèses après le nom de propriété dans la RPI. Voici une liste des
986 différents types de propriétés, avec les règles qui les régissent et
987 quelques exemples d'utilisation. Il faut, bien sûr, toujours ajouter un
988 symbole @emph{hash}, @code{#}, devant ces valeurs lors de la saisie de
989 la commande @code{\override}.
991 @multitable @columnfractions .2 .45 .35
992 @headitem Type de propriété
995 @item Booléenne (@emph{Boolean} en anglais)
996 @tab Vrai (@emph{true} en anglais) ou Faux (@emph{false} en anglais),
997 sous la forme @code{#t} ou @code{#f}
998 @tab @code{#t}, @code{#f}
999 @item Dimension (en espaces de portée)
1000 @tab Un nombre positif décimal (en unités de lignes de portée)
1001 @tab @code{2.5}, @code{0.34}
1003 @tab Une direction valide ou son équivalent numérique (valeur décimale
1004 comprise entre -1 et 1 seulement)
1005 @tab @code{LEFT}, @code{CENTER}, @code{UP}, @code{1}, @code{-1}
1006 @item Entier (@emph{Integer} en anglais)
1007 @tab Un nombre entier positif
1008 @tab @code{3}, @code{1}
1010 @tab Plusieurs valeurs séparées par une espace, encadrées par des
1011 parenthèses et précédées par une apostrophe
1012 @tab @code{'(left-edge staff-bar)}, @code{'(1)},
1013 @code{'(1.0 0.25 0.5)}
1014 @item Markup (ou étiquette)
1015 @tab Toute commande @code{\markup} valide
1016 @tab @code{\markup @{ \italic "cresc." @}}
1017 @item Durée (@emph{Moment} en anglais)
1018 @tab Une durée de note construite avec la fonction make-moment
1019 @tab @code{(ly:make-moment 1 4)}, @code{(ly:make-moment 3 8)}
1021 @tab Une valeur décimale positive ou négative
1022 @tab @code{3.5}, @code{-2.45}
1023 @item Paire (de nombres)
1024 @tab Deux nombres séparées par @qq{espace point espace}, encadrés
1025 par des parenthèses et précédés par une apostrophe
1026 @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
1028 @tab L'un des symboles autorisés pour cette propriété, précédé par une
1030 @tab @code{'italic}, @code{'inside}
1031 @item Inconnu (@emph{Unknown} en anglais)
1032 @tab Un processus, ou @code{#f} pour empêcher toute action
1033 @tab @code{bend::print}, @code{ly:text-interface::print}, @code{#f}
1035 @tab Une liste de trois éléments encadrés par des parenthèses et
1036 précédés par apostrophe-hash, @code{'#}
1037 @tab @code{'#(#t #t #f)}
1041 Manuel d'extension :
1042 @rextend{Tutoriel Scheme}.
1045 @node Apparence des objets
1046 @section Apparence des objets
1047 @translationof Appearance of objects
1049 Il est temps de mettre en pratique les notions apprises précédemment
1050 pour modifier l'allure de la partition ; les exemples qui suivent
1051 montrent l'utilisation des différentes méthodes de retouche.
1054 * Visibilité et couleur des objets::
1055 * Taille des objets::
1056 * Longueur et épaisseur des objets::
1060 @node Visibilité et couleur des objets
1061 @subsection Visibilité et couleur des objets
1062 @translationof Visibility and color of objects
1064 Dans un but pédagogique, on peut être amené à masquer certains éléments
1065 d'une partition, que les élèves doivent ensuite compléter. Imaginons,
1066 par exemple, un exercice dans lequel il faudrait rétablir les barres de
1067 mesure dans un morceau de musique. En temps normal, les barres de
1068 mesure s'insèrent automatiquement. Comment faire pour les effacer de la
1071 Avant de nous y attaquer, souvenons-nous que les propriétés d'objets
1072 sont parfois groupées dans ce qu'on appelle des @emph{interfaces} --
1073 voir @ref{Propriétés listées par interface}. Cela permet de rapprocher
1074 toutes les propriétés susceptibles d'être utilisées ensemble pour
1075 modifier un objet graphique -- si l'une d'elles est choisie pour un
1076 objet, elle s'appliquera à tous les autres. Certains objets tirent
1077 alors leurs propriétés de telle ou telle interface, d'autres objets de
1078 telle ou telle autre interface. La liste des interfaces qui contiennent
1079 les propriétés liées à un objet graphique (@emph{grob}) figure dans la
1080 RPI, en bas de la page de description du @emph{grob} ; pour voir
1081 ces propriétés, il faut aller voir ces interfaces.
1083 Nous avons vu, dans @ref{Propriétés des objets de rendu}, comment
1084 trouver les informations sur les @emph{grobs}. Nous procédons de la
1085 même manière et consultons la RPI pour connaître l'objet chargé
1086 d'imprimer les barres de mesure. En cliquant sur @emph{Backend} puis
1087 sur @emph{Tous les objets de rendu}, nous trouvons un objet appelé
1088 @code{BarLine}. Parmi ses propriétés, deux d'entre elles déterminent
1089 son aspect visuel : @code{break-visibility} et @code{stencil}.
1090 L'objet @code{BarLine} est également lié à plusieurs interfaces, dont la
1091 @code{grob-interface} où figurent les propriétés @code{transparent} et
1092 @code{color}. Toutes peuvent modifier l'aspect visuel des barres de
1093 mesure -- et de beaucoup d'autres objets, bien sûr. Examinons chacune
1094 d'elles tour à tour.
1099 @cindex stencil, propriété
1102 Cette propriété contrôle l'apparence des barres de mesure en précisant
1103 le type de symbole (glyphe) à imprimer. Comme pour de nombreuses
1104 autres propriétés, on peut lui indiquer de ne rien imprimer en lui
1105 attribuant la valeur @code{#f}. Essayons en laissant de côté, une fois
1106 encore, le contexte concerné (@code{Voice} en l'occurrence) :
1108 @cindex BarLine, exemple de dérogation
1109 @cindex stencil, exemple d'utilisation de la propriété
1111 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1114 \override BarLine #'stencil = ##f
1116 g,8 a16 b8 c d4 e16 |
1121 Les barres de mesure sont encore là ! Pourquoi ? Retournons
1122 à la RPI et regardons de nouveau la page qui traite des propriétés de
1123 @code{BarLine}. En haut de la page, il est précisé que @qq{Les objets
1124 BarLine sont créés par le graveur Bar_engraver}. Allons à la page de
1125 @code{Bar_engraver}. Tout en bas se trouve la liste des contextes dans
1126 lesquels fonctionne ce graveur. Tous sont du type @code{Staff}, de
1127 sorte que, si la commande @code{\override} n'a pas fonctionné comme
1128 prévu, c'est parce que @code{Barline} n'appartient pas au contexte par
1129 défaut, @code{Voice}. Si le contexte spécifié est erroné, la commande
1130 ne fonctionne pas. Cela n'entraîne pas de message d'erreur, et rien
1131 n'apparaît dans le fichier log. Essayons de corriger en mentionnant le
1134 @cindex BarLine, exemple de dérogation
1135 @cindex stencil, exemple d'utilisation de la propriété
1137 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1140 \override Staff.BarLine #'stencil = ##f
1142 g,8 a16 b8 c d4 e16 |
1147 Cette fois, les barres de mesure ont disparu.
1149 Vous remarquerez que l'affectation de la valeur @code{#f} à la propriété
1150 @code{stencil} déclenchera une erreur dès lors que l'objet en question se
1151 doit d'avoir des dimensions pour les nécessités du traitement. Ce sera
1152 le cas, par exemple, si vous effacez le @code{stencil} d'un objet
1153 @code{NoteHead}. Il vaut mieux, en pareil cas, utiliser la fonction
1154 @code{point-stencil} qui, quant à elle, attribue à l'objet une taille à
1157 @lilypond[quote,verbatim,relative=2]
1160 \once \override NoteHead #'stencil = #point-stencil
1166 @subheading visibilité des barres (break-visibility)
1167 @c VO break-visibility
1169 @cindex break-visibility, propriété
1171 La RPI mentionne, à la page sur @code{BarLine}, que la propriété
1172 @code{break-visibility} attend comme argument un vecteur de trois
1173 booléens. Ceux-ci indiquent respectivement si les barres de mesure
1174 doivent être imprimées ou non à la fin de la ligne, à l'intérieur de la
1175 ligne et au début de la ligne. Dans notre cas, nous voulons que toutes
1176 les barres soient supprimées, si bien que la valeur dont nous avons
1177 besoin est @code{'#(#f #f #f)}. Essayons, sans oublier
1178 d'ajouter le contexte @code{Staff}. Vous remarquerez que, en plus de
1179 cette valeur, nous ajoutons @code{#'#} devant la parenthèse ouvrante.
1180 Le @code{'#} est nécessaire car il fait partie intégrante de la valeur
1181 contenant un vecteur, et le premier @code{#} est là, comme toujours avec
1182 la commande @code{\override}, pour introduire la valeur elle-même.
1184 @cindex BarLine, exemple de dérogation
1185 @cindex break-visibility exemple d'utilisation de la propriété
1187 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1190 \override Staff.BarLine #'break-visibility = #'#(#f #f #f)
1192 g,8 a16 b8 c d4 e16 |
1197 Comme on peut le constater, cette solution-là aussi supprime les barres
1201 @subheading transparence
1204 @cindex transparent, propriété
1205 @cindex transparence
1207 La RPI mentionne, à la page sur @code{grob-interface}, que la propriété
1208 @code{transparent} attend comme argument un booléen. Il faudrait donc
1209 mettre @code{#t} pour rendre l'objet transparent. Dans cet exemple,
1210 essayons de rendre transparente la métrique (@emph{time signature} en
1211 anglais) plutôt que les barres de mesure. Pour cela, il nous faut
1212 trouver le nom du @emph{grob} chargé de l'indication de mesure. De
1213 retour sur la page @qq{Tous les objets de rendu} de la RPI, nous
1214 cherchons les propriétés de l'objet @code{TimeSignature}. Celui-ci est
1215 géré par le graveur @code{Time_signature_engraver} qui, comme vous
1216 pouvez le constater, appartient au contexte @code{Staff} et peut se
1217 rattacher à la @code{grob-interface}. Dans ces conditions, la commande
1218 pour rendre la métrique transparente est :
1220 @cindex TimeSignature, exemple de dérogation
1221 @cindex transparent, exemple d'utilisation de la propriété
1223 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1226 \override Staff.TimeSignature #'transparent = ##t
1228 g,8 a16 b8 c d4 e16 |
1234 La métrique a bien disparu mais la commande a laissé un blanc en lieu et
1235 place du chiffrage. Ce peut être souhaitable dans le cadre d'un
1236 exercice, afin que les élèves aient la place pour compléter, mais dans
1237 d'autres circonstances, ce peut être gênant. Pour y remédier,
1238 attribuons plutôt au stencil des métriques la valeur @code{#f} :
1240 @cindex TimeSignature, exemple de dérogation
1241 @cindex stencil, exemple d'utilisation de la propriété
1243 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1246 \override Staff.TimeSignature #'stencil = ##f
1248 g,8 a16 b8 c d4 e16 |
1254 La différence est flagrante : le fait d'attribuer au stencil la
1255 valeur @code{#f} supprime totalement l'objet, tandis que le fait de le
1256 rendre @code{transparent} le laisse en place, mais de façon invisible.
1262 @cindex color, propriété
1264 Essayons enfin de rendre les barres de mesure invisibles en les colorant
1265 en blanc. La difficulté est de savoir si les barres blanches vont
1266 couper ou non les lignes de la portée aux endroits où elles se
1267 croisent. Vous verrez dans les exemples ci-dessous que cela peut se
1268 produire, sans qu'on le sache à l'avance. Les explications de ce
1269 phénomène et les solutions pour y remédier sont exposées dans
1270 @ruser{Blanchiment des objets}. Pour le moment, acceptons cet
1271 inconvénient et concentrons-nous sur l'apprentissage de la gestion des
1274 La @code{grob-interface} indique que la valeur de la propriété
1275 @code{color} est une liste, sans plus d'explication. En fait, cette
1276 liste est une liste de valeurs en unités internes ; pour éviter
1277 d'avoir à chercher ce qu'il faut y mettre, il existe différents moyens
1278 d'indiquer la couleur. Le premier moyen consiste à utiliser l'une des
1279 couleurs @emph{normales} de la première @ruser{Liste des couleurs}.
1280 Pour mettre les barres de mesure en blanc, on écrit :
1282 @cindex BarLine, exemple de dérogation
1283 @cindex color, exemple d'utilisation de la propriété
1285 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1288 \override Staff.BarLine #'color = #white
1290 g,8 a16 b8 c d4 e16 |
1296 et nous constatons que les barres de mesure sont une fois de plus
1297 invisibles. Attention : aucune apostrophe ne précède @code{white}
1298 -- il ne s'agit pas d'un symbole mais d'une @strong{fonction}. Quand on
1299 l'invoque, elle fournit une liste de valeurs internes requises pour
1300 changer la couleur en blanc. Les autres couleurs aussi, dans la
1301 @qq{liste normale}, sont des fonctions. Pour en être certain, vous
1302 pouvez faire l'essai en choisissant une autre fonction de la liste en
1306 @cindex X11, couleurs
1310 Le deuxième moyen de changer la couleur consiste à utiliser la deuxième
1311 @ruser{Liste des couleurs}, dite noms de couleurs X11. Ceux-ci doivent
1312 obligatoirement être précédés d'une autre fonction, qui convertit les
1313 noms de couleurs X11 en une liste de valeurs internes, @code{x11-color},
1316 @cindex BarLine, exemple de dérogation
1317 @cindex color, exemple d'utilisation de la propriété
1319 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1322 \override Staff.BarLine #'color = #(x11-color 'white)
1324 g,8 a16 b8 c d4 e16 |
1330 Vous noterez que, dans ce cas, la fonction @code{x11-color} admet un
1331 symbole comme argument ; il faut donc placer une apostrophe devant
1332 le symbole et insérer les deux à l'intérieur de parenthèses.
1334 @cindex rgb, couleur
1335 @cindex couleurs rgb
1339 Il existe une troisième fonction, écrite pour convertir les valeurs RVB
1340 en couleurs internes -- la fonction @code{rgb-color}. Elle comporte
1341 trois arguments, donnant respectivement l'intensité du rouge, du vert et
1342 du bleu. Ces arguments prennent des valeurs comprises entre 0 et 1.
1343 Ainsi, pour choisir la couleur rouge, la valeur serait
1344 @code{(rgb-color 1 0 0)} ; pour le blanc, ce serait
1345 @code{(rgb-color 1 1 1)} :
1347 @cindex BarLine, exemple de dérogation
1348 @cindex color, exemple d'utilisation de la propriété
1350 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1353 \override Staff.BarLine #'color = #(rgb-color 1 1 1)
1355 g,8 a16 b8 c d4 e16 |
1360 Enfin, il existe une échelle de gris parmi les possibilités de couleurs
1361 X11. Elle va du noir (@code{'grey0}) au blanc (@code{'grey100}), avec
1362 un pas de 1. Essayons de l'utiliser en attribuant à tous les objets de
1363 notre exemple différentes nuances de gris :
1365 @cindex StaffSymbol, exemple de dérogation
1366 @cindex TimeSignature, exemple de dérogation
1367 @cindex Clef, exemple de dérogation
1368 @cindex NoteHead, exemple de dérogation
1369 @cindex Stem, exemple de dérogation
1370 @cindex BarLine, exemple de dérogation
1371 @cindex color, exemple d'utilisation de la propriété
1372 @cindex x11-color, exemple d'utilisation
1374 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1377 \override Staff.StaffSymbol #'color = #(x11-color 'grey30)
1378 \override Staff.TimeSignature #'color = #(x11-color 'grey60)
1379 \override Staff.Clef #'color = #(x11-color 'grey60)
1380 \override Voice.NoteHead #'color = #(x11-color 'grey85)
1381 \override Voice.Stem #'color = #(x11-color 'grey85)
1382 \override Staff.BarLine #'color = #(x11-color 'grey10)
1384 g,8 a16 b8 c d4 e16 |
1390 Vous remarquerez le contexte associé à chacun des objets. Une erreur
1391 sur ce point empêcherait la commande de fonctionner. Souvenez-vous que
1392 le contexte est celui dans lequel est placé le graveur approprié. Pour
1393 chaque graveur, on peut trouver son contexte par défaut en partant de
1394 l'objet lui-même, puis en cherchant le graveur qui le produit ; la
1395 page du graveur dans la RPI nous indique alors le contexte dans lequel
1396 le graveur se trouve normalement.
1399 @node Taille des objets
1400 @subsection Taille des objets
1401 @translationof Size of objects
1403 @cindex modification de la taille des objets
1404 @cindex taille d'objets
1405 @cindex objets, taille
1406 @cindex objets, modification de taille
1408 Pour commencer, reprenons l'exemple qui se trouvait dans
1409 @ref{Expressions musicales imbriquées}, qui montrait comment créer une
1410 nouvelle portée temporaire, du type @rglos{ossia}.
1412 @cindex alignAboveContext, exemple d'utilisation de la propriété
1413 @cindex @code{\with}, exemple
1415 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1416 \new Staff ="main" {
1423 alignAboveContext = #"main" }
1431 Normalement, les ossias ne comportent ni clef ni indication de mesure,
1432 et elles sont imprimées légèrement plus petit que la portée principale.
1433 Nous avons déjà appris à enlever la clef et la métrique -- il suffit de
1434 régler le stencil de chacun sur @code{#f}, comme ceci :
1436 @cindex alignAboveContext, exemple d'utilisation de la propriété
1437 @cindex @code{\with}, exemple
1438 @cindex stencil, exemple d'utilisation de la propriété
1439 @cindex Clef, exemple de dérogation
1440 @cindex TimeSignature, exemple de dérogation
1442 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1443 \new Staff ="main" {
1450 alignAboveContext = #"main"
1453 \override Staff.Clef #'stencil = ##f
1454 \override Staff.TimeSignature #'stencil = ##f
1464 La paire d'accolades ajoutée après la clause @code{\with} est nécessaire
1465 pour être sûr que les retouches (@code{\override}) ainsi que la musique
1466 qui se trouvent à l'intérieur soient bien appliquées à la portée
1469 Mais alors, quelle différence y a-t-il à modifier le contexte de portée
1470 au moyen de @code{\with} ou à modifier les stencils de la clef et de la
1471 métrique avec @code{\override} ? La principale différence est que
1472 les changements opérés dans une clause @code{\with} sont réalisés au
1473 moment où le contexte est créé et restent par la suite les valeurs
1474 @strong{par défaut} aussi longtemps que ce contexte existe, tandis que
1475 les commandes @code{\set} ou @code{\override} insérées dans la musique
1476 sont dynamiques -- elles provoquent des changements synchronisés avec un
1477 point particulier de la musique. Si les changements sont annulés ou
1478 désactivés par @code{\unset} ou @code{\revert}, les réglages reprennent
1479 leurs valeurs par défaut, c'est-à-dire celles qui ont été fixées dans la
1480 clause @code{\with}, ou, en l'absence de celle-ci, les valeurs par
1483 Certaines propriétés de contexte ne peuvent être modifiées que dans une
1484 clause @code{\with}. Il s'agit des propriétés qu'on ne peut évidemment
1485 plus changer après que le contexte a été créé. C'est le cas de
1486 @code{alignAboveContext} et de son pendant, @code{alignBelowContext}
1487 -- une fois que la portée a été créée, son alignement est décidé et cela
1488 n'aurait aucun sens de vouloir le modifier par la suite.
1490 Dans une clause @code{\with}, on peut aussi régler les valeurs par
1491 défaut des propriétés d'un objet. Il suffit d'utiliser la commande
1492 @code{\override} normale, sans s'occuper du nom de contexte
1493 puisqu'il ne fait pas de doute qu'il s'agit du contexte en cours de
1494 modification par la clause @code{\with}. Il se produirait même une
1495 erreur si le contexte était précisé.
1497 Remplaçons donc l'exemple ci-dessus par celui-ci :
1499 @cindex alignAboveContext, exemple d'utilisation de la propriété
1500 @cindex @code{\with}, exemple
1501 @cindex Clef, exemple de dérogation
1502 @cindex TimeSignature, exemple de dérogation
1504 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1505 \new Staff ="main" {
1512 alignAboveContext = #"main"
1513 % Don't print clefs in this staff
1514 \override Clef #'stencil = ##f
1515 % Don't print time signatures in this staff
1516 \override TimeSignature #'stencil = ##f
1525 Venons-en finalement au changement de taille des objets.
1527 Certains objets sont créés comme des glyphes choisis dans une police de
1528 caractères. C'est le cas des têtes de notes, des altérations, des
1529 @emph{markup}, des clefs, des métriques, des nuances et des paroles.
1530 Pour changer leur taille, on modifie la propriété @code{font-size},
1531 comme nous le verrons rapidement. D'autres objets, comme les liaisons
1532 de phrasé ou de prolongation -- en général les objets étendus -- sont
1533 dessinés à la demande, si bien qu'aucune @code{font-size} ne leur est
1534 associée. Ces objets tirent généralement leur dimension des objets
1535 auxquels ils sont rattachés, de sorte qu'on ne doit pas avoir à les
1536 redimensionner à la main. D'autres propriétés, comme la hauteur des
1537 hampes et des barres de mesure, l'épaisseur des ligatures et d'autres
1538 lignes, et l'écartement des lignes de portée, doivent encore être
1539 modifiées de façon particulière.
1541 Si l'on revient à l'exemple d'ossia, commençons par changer la taille de
1542 police. Nous pouvons employer deux méthodes. Soit nous changeons la
1543 taille de police de chaque type d'objet avec des commandes comme
1544 celle-ci pour les têtes de notes (@code{NoteHead}) :
1547 \override NoteHead #'font-size = #-2
1550 soit nous changeons la taille de toutes les polices à la fois grâce à la
1551 propriété @code{fontSize}, en utilisant @code{\set} ou en l'insérant
1552 dans une clause @code{\with} (mais alors sans le @code{\set}).
1558 Chacune de ces méthodes réduira la taille de police de deux points par
1559 rapport à sa valeur précédente, sachant que chaque point réduit ou
1560 augmente la taille d'environ 12 %.
1562 Essayons sur l'exemple d'ossia :
1564 @cindex alignAboveContext, exemple d'utilisation de la propriété
1565 @cindex @code{\with}, exemple
1566 @cindex Clef, exemple de dérogation
1567 @cindex TimeSignature, exemple de dérogation
1568 @cindex fontSize, exemple d'utilisation de la propriété
1570 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1571 \new Staff ="main" {
1578 alignAboveContext = #"main"
1579 \override Clef #'stencil = ##f
1580 \override TimeSignature #'stencil = ##f
1581 % Reduce all font sizes by ~24%
1591 Ce n'est pas encore parfait. Les têtes de notes et les crochets sont
1592 plus petits mais, proportionnellement, les hampes sont trop longues et
1593 les lignes de la portée trop espacées. Il faut donc les réduire dans
1594 les mêmes proportions que les polices de caractères. La prochaine
1595 sous-section montrera comment faire.
1598 @node Longueur et épaisseur des objets
1599 @subsection Longueur et épaisseur des objets
1600 @translationof Length and thickness of objects
1606 @cindex taille, modification
1607 @cindex hampe, modification de longueur
1608 @cindex écartement des lignes, modification
1610 Dans LilyPond, les écartements et longueurs sont généralement mesurés en
1611 @qq{intervalles de lignes} (@emph{staff-spaces} en anglais),
1612 c'est-à-dire l'écartement qui sépare deux lignes adjacentes dans la
1613 portée -- plus rarement, il est question de demi-intervalles de lignes.
1614 Les propriétés d'épaisseur (@code{thickness}), quant à elles, sont
1615 généralement mesurées en unités d'une propriété interne appelée
1616 @qq{épaisseur de ligne} (@code{line-thickness}). Par exemple, les
1617 lignes de crescendo/decrescendo présentent par défaut une épaisseur de
1618 1 unité de @code{line-thickness}, alors que l'épaisseur d'une hampe
1619 est de 1,3. Toutefois, certaines propriétés d'épaisseur sont
1620 différentes : par exemple, l'épaisseur des ligature --
1621 @code{beam-thickness} -- se mesure en espaces de portée.
1623 Dans ces conditions, comment ajuster les longueurs à la taille des
1624 polices de caractères ? La solution consiste à utiliser une
1625 fonction spéciale appelée @code{magstep} -- pseudo facteur de zoom --,
1626 créée précisément dans ce but. Elle comporte un argument, le changement
1627 de taille de police (#-2 dans l'exemple précédent), à partir duquel elle
1628 applique un facteur de mise à l'échelle qui réduit, ou augmente, les
1629 objets en question. Voici comment elle s'utilise :
1631 @cindex alignAboveContext, exemple d'utilisation de la propriété
1632 @cindex @code{\with}, exemple
1633 @cindex Clef, exemple de dérogation
1634 @cindex TimeSignature, exemple de dérogation
1635 @cindex fontSize , exemple d'utilisation de la propriété
1636 @cindex StaffSymbol, exemple de dérogation
1637 @cindex magstep, exemple d'utilisation de la fonction
1638 @cindex staff-space, exemple d'utilisation de la propriété
1639 @cindex stencil, exemple d'utilisation de la propriété
1641 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1642 \new Staff ="main" {
1649 alignAboveContext = #"main"
1650 \override Clef #'stencil = ##f
1651 \override TimeSignature #'stencil = ##f
1653 % Reduce stem length and line spacing to match
1654 \override StaffSymbol #'staff-space = #(magstep -2)
1664 Puisque la longueur des hampes et plusieurs autres propriétés de
1665 longueur sont calculées par rapport à la valeur de la propriété
1666 @code{staff-space}, elles sont automatiquement mises à l'échelle. Vous
1667 remarquerez que cela n'affecte que la dimension verticale de l'ossia --
1668 la dimension horizontale étant déterminée par les objets de la portée
1669 principale de façon à rester synchronisée vis-à-vis d'elle, elle n'est
1670 pas affectée par tous ces changements de taille. Bien sûr, si l'échelle
1671 de toute la portée principale était modifiée, tout le placement
1672 horizontal s'en trouverait affecté. Il en sera question plus bas dans
1675 Voilà qui complète la création d'une ossia. Les taille et longueur de
1676 tous les objets peuvent être modifiées de manière analogue.
1678 Pour de petits changements d'échelle, comme dans l'exemple ci-dessus, il
1679 n'est généralement pas utile d'ajuster l'épaisseur des différentes
1680 lignes telles que les barres de mesure, les ligatures, les soufflets de
1681 crescendo ou decrescendo, les liaisons, etc. Si l'épaisseur d'un objet
1682 en particulier doit être ajustée, le mieux est de modifier sa propriété
1683 @code{thickness}. Nous avons vu plus haut, dans
1684 @ref{Propriétés des objets de rendu}, un exemple de modification de
1685 l'épaisseur des liaisons. L'épaisseur de tous les objets tracés
1686 (c'est-à-dire ceux qui ne proviennent pas d'une police de caractère)
1687 peut être changée de la même manière.
1690 @node Positionnement des objets
1691 @section Positionnement des objets
1692 @translationof Placement of objects
1695 * Comportement automatique::
1696 * Objets inclus dans la portée::
1697 * Objets hors de la portée::
1701 @node Comportement automatique
1702 @subsection Comportement automatique
1703 @translationof Automatic behavior
1705 @cindex objets de la portée
1706 @cindex objets extérieurs à la portée
1707 @cindex portée, objets de la
1708 @cindex portée, objets extérieurs à la
1710 Dans la notation musicale, il y a des objets qui appartiennent à la
1711 portée et d'autres qui sont placés à l'extérieur de la portée. On les
1712 appelle respectivement les @qq{objets de la portée} (@emph{within-staff
1713 objects} en anglais) et les @qq{objets extérieurs à la portée}
1714 (@emph{outside-staff objects} en anglais).
1716 Les objets de la portée sont ceux qui sont placés sur la portée
1717 -- les têtes de notes et les hampes, les altérations, etc. Leur
1718 position est généralement déterminée par la musique elle-même -- ils
1719 sont placés verticalement sur des lignes spécifiques ou sont liés à
1720 d'autres objets placés de cette manière. Normalement, les collisions
1721 entre les têtes et queues de notes et les altérations dans des accords
1722 proches sont évitées automatiquement. Comme nous le verrons rapidement,
1723 il existe des commandes et des possibilités de retouche qui permettent
1724 de modifier ce comportement automatique.
1726 Parmi les objets extérieurs à la portée, on compte des éléments comme
1727 les marques de reprise, les indications de texte ou de nuance. Dans
1728 LilyPond, la règle est de placer verticalement ces objets extérieurs à
1729 la portée le plus près possible de la portée, tout en évitant la
1730 collision avec d'autres objets. LilyPond utilise la propriété
1731 @code{outside-staff-priority} pour déterminer l'ordre selon lequel
1732 placer ces objets, de la manière suivante :
1734 D'abord, LilyPond dresse la liste de tous les objets extérieurs à la
1735 portée. Puis ceux-ci sont classés suivant leur
1736 @code{outside-staff-priority}. Enfin, ils sont pris un par un, en
1737 commençant par les objets avec la @code{outside-staff-priority} la plus
1738 basse, et placés de façon à ne pas entrer en collision avec d'autres
1739 objets déjà placés. Cela signifie que, si deux @emph{grobs} extérieurs
1740 à la portée doivent occuper la même place, c'est celui qui a la
1741 @code{outside-staff-priority} la plus basse qui est placé le plus près
1742 de la portée. Et si deux objets ont la même
1743 @code{outside-staff-priority}, le premier rencontré sera placé au plus
1746 Dans l'exemple suivant, tous les @emph{markup} ont la même priorité,
1747 dans la mesure où rien n'est indiqué explicitement. Vous remarquerez
1748 que @code{Text3} est également positionné près de la portée, juste
1749 en-dessous de @code{Text2}.
1751 @cindex markup, exemple
1753 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1760 Les portées aussi sont positionnées, par défaut, le plus près possible
1761 les unes des autres, en ménageant tout de même une certaine séparation.
1762 Si des notes se rapprochent nettement d'une portée adjacente, elles ne
1763 forceront les portées à s'écarter que s'il y a un risque de
1766 @lilypond[quote,ragged-right,verbatim]
1769 \relative c' { c4 a, }
1772 \relative c'''' { c4 a, }
1778 @node Objets inclus dans la portée
1779 @subsection Objets inclus dans la portée
1780 @translationof Within-staff objects
1782 Nous avons vu que les commandes @code{\voiceXXX} jouent sur la
1783 direction des liaisons, des doigtés et sur toute autre chose liée à
1784 l'orientation des hampes. Ces commandes sont essentielles dans
1785 la musique polyphonique pour distinguer des lignes mélodiques
1786 entremêlées. Mais il arrive qu'on ait besoin de modifier ce
1787 comportement automatique. On peut le faire pour toutes les parties de
1788 la musique ou juste pour une note. La propriété qui contrôle ce
1789 comportement est la propriété @code{direction} de chaque objet.
1790 Expliquons d'abord ce qu'elle fait, puis nous présenterons un certain
1791 nombre de commandes déjà prêtes qui évitent, pour les modifications les
1792 plus courantes, d'avoir à encoder les retouches.
1794 Certains objets comme les traits des liaisons se recourbent tantôt
1795 vers le haut, tantôt vers le bas ; d'autres encore, comme les
1796 hampes et les crochets, peuvent se décaler vers la gauche ou vers la
1797 droite selon qu'ils pointent vers le haut ou vers le bas. Ce
1798 comportement est géré automatiquement dès lors que @code{direction} est
1806 L'exemple ci-dessous montre dans la première mesure le comportement par
1807 défaut des hampes -- celles des notes les plus hautes pointant vers le
1808 bas et celles des notes les plus basses pointant vers le haut ;
1809 viennent ensuite quatre notes avec les hampes forcées vers le bas, puis
1810 quatre autres avec les hampes forcées vers le haut, et pour finir quatre
1811 notes de nouveau avec le comportement par défaut.
1813 @cindex Stem, exemple de dérogation
1814 @cindex direction, exemple d'utilisation de la propriété
1816 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1818 \override Stem #'direction = #DOWN
1820 \override Stem #'direction = #UP
1822 \revert Stem #'direction
1826 Nous utilisons ici les directions @code{DOWN} et @code{UP}. Elles
1827 correspondent respectivement aux valeurs @code{-1} et @code{+1},
1828 que l'on peut utiliser à la place. La valeur @code{0} peut aussi être
1829 utilisée dans certains cas. Elle est interprétée comme un @code{UP}
1830 pour les hampes, et comme un @qq{centré} pour d'autres objets. Il
1831 existe une direction, @code{CENTER}, qui correspond à la
1834 Quoi qu'il en soit, ces retouches manuelles sont rarement utilisées car
1835 il existe des équivalents sous forme de commandes prédéfinies. Voici un
1836 tableau des plus courantes. Lorsque ce n'est pas évident, leur
1837 signification est précisée.
1839 @multitable @columnfractions .2 .2 .25 .35
1840 @headitem Bas/Gauche
1844 @item @code{\arpeggioArrowDown}
1845 @tab @code{\arpeggioArrowUp}
1846 @tab @code{\arpeggioNormal}
1847 @tab Flèche en bas, en haut, ou pas de flèche
1848 @item @code{\dotsDown}
1850 @tab @code{\dotsNeutral}
1851 @tab Déplacement des points pour éviter les lignes de portée
1852 @item @code{\dynamicDown}
1853 @tab @code{\dynamicUp}
1854 @tab @code{\dynamicNeutral}
1856 @item @code{\phrasingSlurDown}
1857 @tab @code{\phrasingSlurUp}
1858 @tab @code{\phrasingSlurNeutral}
1859 @tab Attention : à distinguer des commandes de liaison ci-dessous
1860 @item @code{\slurDown}
1862 @tab @code{\slurNeutral}
1864 @item @code{\stemDown}
1866 @tab @code{\stemNeutral}
1868 @item @code{\textSpannerDown}
1869 @tab @code{\textSpannerUp}
1870 @tab @code{\textSpannerNeutral}
1871 @tab Le texte saisi en tant qu'extension est au-dessous/au-dessus de la portée
1872 @item @code{\tieDown}
1874 @tab @code{\tieNeutral}
1876 @item @code{\tupletDown}
1877 @tab @code{\tupletUp}
1878 @tab @code{\tupletNeutral}
1879 @tab Les nolets sont au-dessous/au-dessus des notes
1882 Attention : ces commandes prédéfinies @strong{ne doivent pas} être
1883 précédées de @code{\once}. Pour limiter l'effet à une seule note, il
1884 faut soit utiliser la commande équivalente @code{\once \override}, soit
1885 utiliser la commande prédéfinie, suivie, après la note à modifier, de la
1886 commande @code{\xxxNeutral} correspondante.
1889 @unnumberedsubsubsec Doigtés
1892 @cindex doigtés, positionnement
1893 @cindex doigtés, accords
1895 Le placement des doigtés sur des notes simples peut aussi être contrôlé
1896 par la propriété @code{direction}, mais le changement de
1897 @code{direction} n'a pas d'effet sur les accords. Comme nous le
1898 verrons, il existe des commandes qui permettent de contrôler le doigté
1899 sur chaque note d'un accord, en plaçant l'indication de doigté
1900 au-dessus, en dessous, à gauche ou à droite de chaque note.
1902 Tout d'abord, voici l'effet de @code{direction} sur le doigté lié à une
1903 note simple. La première mesure montre le comportement par défaut, et
1904 les deux suivantes montrent l'effet lorsqu'on indique @code{DOWN} et
1907 @cindex doigtés, exemple de dérogation
1908 @cindex direction, exemple d'utilisation de la propriété
1910 @lilypond[quote,verbatim,relative=2]
1912 \override Fingering #'direction = #DOWN
1914 \override Fingering #'direction = #UP
1918 Le fait d'intervenir sur la propriété @code{direction} n'est sûrement
1919 pas la façon la plus simple de placer manuellement les doigtés au-dessus
1920 ou en dessous des notes ; mieux vaut utiliser @code{_} ou @code{^}
1921 devant le chiffre de doigté plutôt que @code{-}. Voici ce que donne
1922 l'exemple précédent avec cette méthode :
1924 @cindex doigtés, exemple
1926 @lilypond[quote,verbatim,relative=2]
1932 La propriété @code{direction} ne fonctionne pas pour les accords alors
1933 que les préfixes de direction, @code{_} et @code{^}, fonctionnent. Par
1934 défaut, le doigté est placé automatiquement à la fois au-dessus et
1935 au-dessous des notes d'un accord, comme ceci :
1937 @cindex doigtés, exemple
1939 @lilypond[quote,verbatim,relative=2]
1946 mais il est possible de forcer manuellement vers le haut ou vers le bas
1947 le placement de tous ou certains chiffres de doigté, comme ceci :
1949 @cindex doigtés, exemple
1951 @lilypond[quote,verbatim,relative=2]
1957 On peut aller encore plus loin dans le positionnement des doigtés pour
1958 chacune des notes d'un accord grâce à la commande
1959 @code{\set fingeringOrientations}. La syntaxe de cette commande
1963 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
1967 On utilise @code{\set} car @code{fingeringOrientations} est une
1968 propriété du contexte @code{Voice}, créée et utilisée par le graveur
1969 @code{New_fingering_engraver}.
1971 On peut attribuer à cette propriété une liste composée de une à trois
1972 valeurs. Celles-ci déterminent si l'indication de doigté doit être
1973 placée au-dessus (lorsque @code{up} apparaît dans la liste), au-dessous
1974 (lorsque @code{down} apparaît), à gauche (lorsque @code{left} apparaît)
1975 ou à droite (lorsque @code{right} apparaît). En revanche, si une valeur
1976 n'est pas dans la liste, aucun doigté n'ira à cet emplacement. LilyPond
1977 garde ces contraintes en mémoire et recherche le meilleur emplacement
1978 pour le doigté des notes des accords suivants. Vous remarquerez que
1979 @code{left} et @code{right} s'excluent l'un l'autre -- l'indication de
1980 doigté ne peut être placée que d'un côté ou de l'autre, pas des deux.
1982 @warning{Pour contrôler à l'aide de cette commande le placement du
1983 doigté sur une note simple, il faut la saisir comme un accord composé
1984 d'une note unique, en l'encadrant de chevrons.}
1986 Voici quelques exemples :
1988 @cindex doigtés, exemple
1989 @cindex @code{\set}, exemple d'utilisation
1990 @cindex fingeringOrientations, exemple d'utilisation de la propriété
1992 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1993 \set fingeringOrientations = #'(left)
1996 \set fingeringOrientations = #'(left)
1998 <c-1 e-2 g-3 b-5>4 |
1999 \set fingeringOrientations = #'(up left down)
2002 \set fingeringOrientations = #'(up left)
2004 <c-1 e-2 g-3 b-5>4 |
2005 \set fingeringOrientations = #'(right)
2011 Si les indications de doigtés paraissent un peu serrées, on peut
2012 toujours réduire la taille de police (@code{font-size}). La valeur
2013 par défaut donnée dans la RPI à la page de l'objet
2014 @code{Fingering} étant @code{-5}, essayons @code{-7} :
2016 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2017 \override Fingering #'font-size = #-7
2018 \set fingeringOrientations = #'(left)
2021 \set fingeringOrientations = #'(left)
2023 <c-1 e-2 g-3 b-5>4 |
2024 \set fingeringOrientations = #'(up left down)
2027 \set fingeringOrientations = #'(up left)
2029 <c-1 e-2 g-3 b-5>4 |
2030 \set fingeringOrientations = #'(right)
2036 @node Objets hors de la portée
2037 @subsection Objets hors de la portée
2038 @translationof Outside-staff objects
2040 Les objets extérieurs à la portée sont placés automatiquement de façon à
2041 éviter les collisions. Les objets avec la plus petite valeur de la
2042 propriété @code{outside-staff-priority} sont placés au plus près de la
2043 portée, tandis que les autres sont écartés autant qu'il faut pour éviter
2044 les collisions. La @code{outside-staff-priority} est définie dans la
2045 @code{grob-interface} ; elle est donc une propriété commune à tous
2046 les objets de rendu. Par défaut, elle est réglée sur @code{#f} pour
2047 tous les objets de la portée, et porte une valeur numérique appropriée à
2048 chacun des objets extérieurs à la portée, à mesure qu'ils sont créés.
2049 Le tableau suivant montre la valeur numérique par défaut pour
2050 quelques-uns des objets extérieurs à la portée les plus courant.
2056 Vous noterez au passage certaines particularités quant au nom des
2057 objets. En effet, des objets à extension sont automatiquement créés
2058 dans le but de pouvoir contrôler le positionnement vertical des
2059 extrémités d'un @emph{grob} qui commencerait et se terminerait à des
2060 instants musicaux différents. C'est la raison pour laquelle modifier le
2061 @code{outside-staff-priority} du @emph{grob} sous-jacent n'aura aucun
2062 effet. C'est par exemple le cas lorsque vous modifiez l'alignement d'un
2063 objet @code{Hairpin} à l'aide de @code{outside-staff-priority} ;
2064 puisque le soufflet est associé à un objet @code{DynamicLineSpanner},
2065 c'est sur celui-ci que doit porter l'effet de
2066 @code{outside-staff-priority}. L'instruction dérogatoire se place au
2067 début du bandeau qui constitue une ligne de base susceptible de contenir
2068 plusieurs soufflets ou indications de nuance.
2070 @multitable @columnfractions .3 .3 .3
2071 @headitem Objet de rendu
2073 @tab Contrôle la position de :
2074 @item @code{RehearsalMark}
2077 @item @code{MetronomeMark}
2079 @tab Indication métronomique
2080 @item @code{VoltaBracketSpanner}
2082 @tab Bandeau de répétition
2083 @item @code{TextScript}
2085 @tab Texte des @emph{markup} (ou étiquettes)
2086 @item @code{MultiMeasureRestText}
2088 @tab Texte sur les silences qui couvrent des mesures entières
2089 @item @code{OttavaBracket}
2091 @tab Indication d'octaviation
2092 @item @code{TextSpanner}
2094 @tab Bandeau ou extension de texte
2095 @item @code{DynamicLineSpanner}
2097 @tab Toutes les marques de nuances
2098 @item @code{BarNumber}
2100 @tab Numéro de mesure
2101 @item @code{TrillSpanner}
2103 @tab Bandeau de trille
2106 Voici un exemple qui montre le placement par défaut de certains
2109 @cindex extension de texte
2110 @cindex indication d'octaviation
2112 @funindex \startTextSpan
2113 @funindex startTextSpan
2114 @funindex \stopTextSpan
2115 @funindex stopTextSpan
2117 @cindex TextSpanner, exemple de dérogation
2118 @cindex bound-details, exemple d'utilisation de la propriété
2120 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2121 % Set details for later Text Spanner
2122 \override TextSpanner #'(bound-details left text)
2123 = \markup { \small \bold Slower }
2124 % Place dynamics above staff
2126 % Start Ottava Bracket
2129 % Add Dynamic Text and hairpin
2135 % Add Dynamic Text and terminate hairpin
2136 c4\ff c \stopTextSpan |
2137 % Stop Ottava Bracket
2142 Cet exemple montre comment créer des extensions de texte (@emph{Text
2143 Spanners} en anglais) -- texte avec des longues lignes au-dessus d'un
2144 passage musical. L'extension s'étend depuis la commande
2145 @code{\startTextSpan} jusqu'à la commande @code{\stopTextSpan} et le
2146 format de texte est défini par la commande @code{\override TextSpanner}.
2147 Pour de plus amples détails, voir
2148 @ruser{Indication textuelle avec extension}.
2150 Il montre aussi comment créer des marques d'octaviation.
2152 @cindex modification du positionnement des numéros de mesure
2153 @cindex numéros de mesure, modification du positionnement
2154 @cindex modification du positionnement des indications métronomiques
2155 @cindex indications métronomiques, modification du positionnement
2156 @cindex modification du positionnement des marques de repère
2157 @cindex marques de repère, modification du positionnement
2159 Si les valeurs de @code{outside-staff-priority} par défaut ne donnent
2160 pas les résultats escomptés, il suffit de modifier la priorité
2161 de l'un de ces objets. Supposons que vous vouliez placer l'indication
2162 d'octaviation sous le bandeau de texte, dans l'exemple précédent. Tout
2163 ce que nous devons faire, c'est regarder la priorité de
2164 @code{OttavaBracket} dans la Référence des propriétés internes ou dans
2165 le tableau plus haut, et la ramener à une valeur plus basse que celle de
2166 @code{TextSpanner}, en gardant à l'esprit que @code{OttavaBracket} est
2167 créé dans le contexte @code{Staff} :
2169 @cindex TextSpanner, exemple de dérogation
2170 @cindex bound-details, exemple d'utilisation de la propriété
2172 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2173 % Set details for later Text Spanner
2174 \override TextSpanner #'(bound-details left text)
2175 = \markup { \small \bold Slower }
2176 % Place dynamics above staff
2178 % Place following Ottava Bracket below Text Spanners
2179 \once \override Staff.OttavaBracket #'outside-staff-priority = #340
2180 % Start Ottava Bracket
2185 % Add Dynamic Line Spanner
2191 c4\ff c \stopTextSpan |
2192 % Stop Ottava Bracket
2197 N'oublions pas que certains objets, tels les numéros de mesure,
2198 indications métronomiques et marques-repères, sont par défaut attachés
2199 au contexte @code{Score}.
2201 @cindex liaisons et outside-staff-priority
2202 @cindex liaisons et articulations
2203 @cindex articulations et liaisons
2205 Les liaisons sont intrinsèquement des objets membres de la portée
2206 (@emph{within-staff objects}) bien qu'elles la surplombent lorsque les
2207 notes auxquelles elles se rattachent sont relativement hautes. Ceci
2208 peut avoir pour conséquence de remonter d'autant les objets externes
2209 (@emph{outside-staff objects}) tels les articulations. La propriété
2210 @code{avoid-slur} de l'articulation en question peut se voir déterminée
2211 à @code{'inside} dans le but de @qq{ramener} cette articulation à
2212 l'intérieur de la liaison. Cette propriété @code{avoid-slur} ne sera
2213 toutefois effective que dans la mesure où la
2214 @code{outside-staff-priority} est désactivée (valeur @code{#f}). Dans
2215 le même esprit, il est possible d'affecter une valeur numérique
2216 particulière à la propriété @code{outside-staff-priority} d'une
2217 liaison dans le but de regrouper la liaison avec les objets externes.
2218 L'exemple suivant illustre ces deux différentes méthodes.
2220 @lilypond[quote,verbatim,relative=2]
2221 c4( c^\markup { \tiny \sharp } d4.) c8 |
2223 \once \override TextScript #'avoid-slur = #'inside
2224 \once \override TextScript #'outside-staff-priority = ##f
2225 c4^\markup { \tiny \sharp } d4.) c8 |
2226 \once \override Slur #'outside-staff-priority = #500
2227 c4( c^\markup { \tiny \sharp } d4.) c8 |
2230 Le fait de changer la @code{outside-staff-priority} peut aussi servir à
2231 contrôler le positionnement vertical des objets individuels, quoique le
2232 résultat ne soit pas toujours formidable. Imaginons que nous voulions
2233 placer @qq{Text3} au-dessus de @qq{Text4} dans l'exemple de la section
2234 @ref{Comportement automatique}, plus haut. Il nous suffit pour cela de
2235 regarder dans la Référence des propriétés internes ou dans le tableau
2236 plus haut la priorité de @code{TextScript}, et d'augmenter la priorité
2237 de @qq{Text3} jusqu'à une valeur très haute :
2239 @cindex TextScript, exemple de dérogation
2240 @cindex outside-staff-priority, exemple d'utilisation de la propriété
2242 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2245 \once \override TextScript #'outside-staff-priority = #500
2250 S'il est vrai que cela place @qq{Text3} au-dessus de @qq{Text4}, ça le
2251 place aussi plus haut que @qq{Text2} tandis que @qq{Text4} dégringole.
2252 Ce n'est peut-être pas si bien que ça. En fait, ce que nous aimerions
2253 faire, c'est placer toutes les annotations à égale distance de la
2254 portée. Pour cela, nous avons besoin d'espacer horizontalement les
2255 notes pour laisser plus de place au texte. C'est possible grâce à la
2256 commande @code{textLengthOn}.
2259 @subheading \textLengthOn
2261 @cindex notes, répartition selon le texte
2263 @funindex \textLengthOn
2264 @funindex textLengthOn
2265 @funindex \textLengthOff
2266 @funindex textLengthOff
2268 Par défaut, l'espacement horizontal d'un texte produit sous forme de
2269 @emph{markup} (ou d'étiquette) n'est pas pris en compte, dans la mesure
2270 où ce qui est concerné n'entre pas dans la musique. La commande
2271 @code{\textLengthOn} inverse ce comportement, faisant en sorte que les
2272 notes soient espacées autant qu'il le faut pour s'adapter au
2275 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2276 \textLengthOn % Cause notes to space out to accommodate text
2283 La commande qui permet de revenir au comportement par défaut est
2284 @code{\textLengthOff}. Rappelez-vous que @code{\once} ne
2285 fonctionne qu'avec @code{\override}, @code{\set}, @code{\revert} ou
2286 @code{\unset}, et donc ne peut pas être utilisé avec
2287 @code{\textLengthOn}.
2289 @cindex étiquette de texte et collision
2291 Les textes des @emph{markup} éviteront également les notes qui
2292 s'échappent au-dessus de la portée. Si ce n'est pas notre souhait, il
2293 est possible de supprimer ce déplacement automatique vers le haut en
2294 attribuant à la priorité la valeur @code{#f}. Voici un exemple qui
2295 montre comment les textes des @emph{markup} interagissent avec ces types
2298 @cindex TextScript, exemple de dérogation
2299 @cindex outside-staff-priority, exemple d'utilisation de la propriété
2301 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2302 % This markup is short enough to fit without collision
2306 % This is too long to fit, so it is displaced upwards
2310 % Turn off collision avoidance
2311 \once \override TextScript #'outside-staff-priority = ##f
2312 c,,2^"Long Text " c'' |
2315 % Turn off collision avoidance
2316 \once \override TextScript #'outside-staff-priority = ##f
2317 \textLengthOn % and turn on textLengthOn
2318 c,,2^"Long Text " % Spaces at end are honored
2326 @cindex modification du positionnement des nuances
2327 @cindex nuances, modification du positionnement
2329 Les indications de nuance se placent normalement sous la portée, mais on
2330 peut les placer au-dessus avec la commande @code{dynamicUp}. Elles se
2331 positionnent verticalement par rapport à la note à laquelle elles sont
2332 liées et se décalent vers le bas (ou le haut) en fonction des objets de
2333 la portée comme les liaisons de phrasé ou les numéros de mesure. Cela
2334 peut donner d'assez bons résultats, comme le montre cet exemple :
2336 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2341 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2342 ees,2.~\)\mf ees4 r8 |
2345 De toute façon, si les notes et les nuances qui leur sont liées sont
2346 trop proches, le positionnement automatique évitera les collisions en
2347 déplaçant davantage les nuances suivantes, mais le résultat peut ne
2348 pas être très satisfaisant, comme le montre cet exemple
2351 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2357 Si une telle situation devait survenir dans de la musique @qq{réelle},
2358 il serait préférable d'espacer un peu plus les notes, de façon que les
2359 indications de nuance puissent toutes se situer à la même distance de la
2360 portée. S'il est possible de faire cela pour les textes de
2361 @emph{markup} grâce à la commande @code{\textLengthOn}, il n'existe
2362 pas d'équivalent pour les indications de nuance. Il nous faut donc
2363 chercher à faire cela avec la commande @code{\override}.
2366 @subheading Dimensionnement des objets graphiques
2369 @cindex grob, dimensionnement
2370 @cindex dimensionnement des grobs
2372 Tout d'abord, nous devons apprendre ce qui détermine la dimension des
2373 @emph{grobs}. Tous les @emph{grobs} portent en eux un point de référence
2374 qui est utilisé pour les positionner par rapport à leur objet parent. Ce
2375 point du @emph{grob} est placé à une distance horizontale,
2376 @code{X-offset}, et à une distance verticale, @code{Y-offset}, de son
2377 parent. L'étendue horizontale de l'objet est fixée par une paire de
2378 nombres, @code{X-extent}, qui donnent la position du coin
2379 gauche et du coin droit par rapport au point de référence. De
2380 même, l'amplitude verticale est fixée par une paire de nombres,
2381 @code{Y-extent}. Ce sont des propriétés communes à tous les
2382 @emph{grobs} et que gère la @code{grob-interface}.
2384 @cindex @code{extra-spacing-width}
2386 Par défaut, la largeur des objets extérieurs à la portée est donnée
2387 comme étant nulle, si bien qu'ils peuvent se chevaucher
2388 horizontalement. Pour remédier à cela, on a ajouté l'infini à
2389 l'extension gauche et moins l'infini à l'extension droite, en
2390 attribuant à @code{extra-spacing-width} la valeur
2391 @code{'(+inf.0 . -inf.0)}. Pour être sûr que les objets ne se
2392 chevaucheront pas horizontalement, nous devons donc corriger cette
2393 valeur de @code{extra-spacing-width} en @w{@code{'(0 . 0)}}, afin que
2394 leur vraie largeur se manifeste. La commande pour y parvenir avec des
2395 indications de nuances est :
2398 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2402 Voyons si ça marche sur notre exemple précédent :
2404 @cindex DynamicText, exemple de dérogation
2405 @cindex extra-spacing-width, exemple d'utilisation de la propriété
2407 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2409 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2410 a4\f b\mf c\mp b\p |
2414 Bon, cela a mis un terme aux déplacements verticaux des
2415 nuances mais il reste deux problèmes. Il faudrait que les
2416 nuances soient un peu plus écartées et ce serait mieux si
2417 elles étaient toutes à la même distance de la portée. Le
2418 premier problème est simple à résoudre. Au lieu d'attribuer
2419 à @code{extra-spacing-width} la valeur zéro, nous pourrions
2420 mettre un peu plus. L'unité est la distance entre deux lignes
2421 de portée, donc en écartant le bord gauche d'une demie unité
2422 et le bord droit d'une demie unité, on obtient :
2424 @cindex DynamicText, exemple de dérogation
2425 @cindex extra-spacing-width, exemple d'utilisation de la propriété
2427 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2429 % Extend width by 1 staff space
2430 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2435 C'est mieux mais nous voulons peut-être aligner les indications de
2436 nuance sur une même ligne plutôt que de les voir monter et
2437 descendre avec les notes. La propriété qui gère cela est
2438 @code{staff-padding} ; la section suivante lui est consacrée.
2441 @node Collisions d'objets
2442 @section Collisions d'objets
2443 @translationof Collisions of objects
2446 * Déplacement d'objets::
2447 * Correction des collisions d'objets::
2452 @node Déplacement d'objets
2453 @subsection Déplacement d'objets
2454 @translationof Moving objects
2456 @cindex déplacement d'objets se chevauchant
2457 @cindex déplacement d'objets en collision
2458 @cindex déplacement de grobs en collision
2459 @cindex objets, évitement des collisions
2460 @cindex grobs, évitement des collisions
2462 Aussi surprenant que cela puisse paraître, LilyPond n'est pas parfait.
2463 Certains éléments sur la partition peuvent se chevaucher, ce qui est
2464 regrettable mais, le plus souvent, facile à corriger. En général, quand
2465 on déplace des objets, c'est pour des raisons de lisibilité ou
2466 d'esthétique -- ils rendraient mieux avec un peu plus ou un peu moins
2467 d'espace autour d'eux.
2469 Il y a trois façons de résoudre les problèmes de chevauchement. Il est
2470 préférable de les aborder dans l'ordre suivant :
2474 L'@strong{orientation} d'un objet qui en chevauche un autre peut être
2475 changée grâce aux commandes prédéfinies dont la liste a été donnée
2476 plus haut à propos des objets de portée (voir
2477 @ref{Objets inclus dans la portée}).
2478 Les queues de note, les liaisons de phrasé et de prolongation, les
2479 crochets, les nuances et les nolets peuvent facilement être
2480 repositionnés de cette manière. En contrepartie, vous n'avez le choix
2481 qu'entre deux positions, sans personnalisation possible.
2484 Les @strong{propriétés d'objet}, auxquelles LilyPond a recours pour
2485 positionner les objets, sont modifiables avec @code{\override}. Il y a
2486 deux avantages à changer ces propriétés : (a) d'autres objets
2487 pourront être déplacés automatiquement si nécessaire pour faire de la
2488 place, et (b) la même retouche peut s'appliquer à toutes les occurrences
2489 du même type d'objet. Ces propriétés sont :
2496 Ce point a déjà été traité en détails -- voir
2497 @ref{Objets inclus dans la portée}.
2501 @code{padding}, @code{right-padding}, @code{staff-padding}
2503 @cindex décalage (padding)
2504 @cindex padding, propriété
2505 @cindex right-padding, propriété
2506 @cindex staff-padding, propriété
2508 Au moment de positionner un objet, la valeur de sa propriété
2509 @code{padding} détermine l'espace à laisser libre entre celui-ci et le
2510 coin le plus proche de l'objet à côté duquel il est placé. Vous
2511 remarquerez que c'est la valeur @code{padding} de l'objet @strong{à
2512 placer} qui compte ; la valeur @code{padding} de l'objet déjà placé
2513 est ignorée. Les espaces libres déterminés par @code{padding}
2514 s'appliquent à tous les objets associés à la
2515 @code{side-position-interface}.
2517 Le positionnement de groupes d'altérations est contrôlé par
2518 @code{right-padding}, et non plus @code{padding}. Cette propriété
2519 appartient à l'objet @code{AccidentalPlacement} qui, vous le
2520 remarquerez, prend place dans le contexte @strong{Staff}. Dans le
2521 processus de composition, les têtes de notes sont disposées en premier,
2522 puis les altérations, s'il y en a, sont ajoutées à gauche des têtes de
2523 note suivant la propriété @code{right-padding} qui détermine
2524 l'espacement par rapport aux têtes de note. C'est pourquoi seule la
2525 propriété @code{right-padding} de l'objet @code{AccidentalPlacement}
2526 joue sur le positionnement des altérations.
2528 La propriété @code{staff-padding} est très proche de la propriété
2529 @code{padding} : @code{padding} contrôle l'espace minimum entre un
2530 objet qui accepte la @code{side-position-interface} et l'objet le plus
2531 proche (généralement une note ou une ligne de portée) ;
2532 @code{staff-padding} ne s'applique qu'aux objets qui sont toujours
2533 placés au-dehors de la portée -- il contrôle l'espace minimum à insérer
2534 entre l'objet et la portée. Attention : par défaut,
2535 @code{staff-padding} concerne les objets positionnés par rapport
2536 à la portée et n'a aucun effet sur les objets qui sont positionnés par
2537 rapport à une note ; il est toutefois possible de le régler pour
2538 fonctionner avec ces derniers.
2540 Pour trouver quelle propriété @code{padding} employer pour l'objet que
2541 vous cherchez à repositionner, il vous faut consulter les propriétés de
2542 l'objet dans la RPI. Prenez garde que les propriétés @code{padding} ne
2543 sont pas forcément traitées dans l'objet en question ; il faut
2544 alors regarder les objets qui semblent s'en rapprocher.
2546 Toutes les valeurs @code{padding} sont exprimées en espace de portée.
2547 Pour la plupart des objets, la valeur par défaut est aux alentours de
2548 1,0 et parfois moins (cela dépend de chaque objet). Il est possible de
2549 la modifier lorsqu'on a besoin d'un espace vide plus grand (ou plus
2554 @code{self-alignment-X}
2556 @cindex self-alignment-X, propriété
2558 Cette propriété sert à aligner les objets sur la gauche, sur la droite
2559 ou à les centrer par rapport au point de référence des objets parents.
2560 Elle peut être utilisée avec tous les objets qui acceptent la
2561 @code{self-alignment-interface}. Il s'agit, en général, des objets qui
2562 contiennent du texte. Les valeurs admises sont @code{LEFT},
2563 @code{RIGHT} et @code{CENTER}. On peut aussi attribuer à
2564 la place une valeur numérique entre @code{-1} et @code{+1},
2565 où @code{-1} signifie alignement sur la gauche, @code{+1}
2566 alignement sur la droite, et les nombres intermédiaires déplacent
2567 progressivement le texte de la gauche vers la droite. Des valeurs
2568 numériques supérieures à @code{1} sont également admises
2569 pour déplacer le texte encore plus loin vers la gauche, ou des
2570 valeurs inférieures à @code{-1} pour déplacer le texte encore
2571 plus loin vers la droite. Un écart de @code{1} en valeur
2572 correspond à un déplacement de la moitié de la longueur du
2577 @code{extra-spacing-width}
2579 @cindex extra-spacing-width, propriété
2581 Cette propriété est utilisée pour tous les objets qui acceptent la
2582 @code{item-interface}. Elle reçoit deux nombres, le premier étant
2583 ajouté au bord gauche et le second au bord droit. Des nombres
2584 négatifs déplacent le coin vers la gauche, des nombres positifs
2585 vers la droite, si bien que pour élargir un objet, le premier nombre
2586 doit être négatif et le second positif. Attention : tous les
2587 objets n'acceptent pas forcément les deux nombres. Par exemple, l'objet
2588 @code{Accidental} ne retient que le premier nombre (coin gauche).
2592 @code{staff-position}
2594 @cindex staff-position, propriété
2596 @code{staff-position} est une propriété de la
2597 @code{staff-symbol-referencer-interface}, qui s'applique aux objets
2598 positionnés par rapport à la portée. Elle indique, en demi-espace de
2599 portée, la position verticale des objets par rapport à la ligne médiane
2600 de la portée. C'est bien pratique pour résoudre des problèmes de
2601 collision entre des objets comme les silences valant mesure entière,
2602 les liaisons et les notes de différentes voix.
2608 @cindex force-hshift, propriété
2610 Des notes très proches dans un accord, ou des notes simultanées dans
2611 différentes voix, peuvent être disposées sur deux colonnes, rarement
2612 plus, pour éviter que les têtes de notes ne se chevauchent. On parle
2613 alors de colonnes (ou empilement) de notes et un objet appelé
2614 @code{NoteColumn} est créé pour placer les notes sur la colonne.
2616 La propriété @code{force-hshift} appartient à @code{NoteColumn} (en
2617 réalité à la @code{note-column-interface}). Le fait de la modifier
2618 permet de déplacer un empilement selon l'unité appropriée aux colonnes
2619 de notes, à savoir la largeur des têtes de note de la première voix.
2620 Son utilisation est réservée à des situations complexes dans lesquelles
2621 les commandes habituelles @code{\shiftOn}
2622 (voir @ref{Instanciation explicite des voix}) ne suffisent plus à
2623 résoudre les conflits. Elle est alors préférable à l'utilisation de la
2624 propriété @code{extra-offset}, dans la mesure où on n'a pas besoin
2625 d'exprimer la distance en espace de portée et où le fait de déplacer
2626 les notes à l'intérieur ou à l'extérieur d'une @code{NoteColumn} affecte
2627 d'autres actions comme les fusions de notes.
2633 Pour terminer, quand toutes les autres méthodes ont échoué, il est
2634 possible de repositionner verticalement les objets à la main par rapport
2635 à la ligne médiane de la portée, ou en les déplaçant à une distance
2636 donnée vers une nouvelle position. Les inconvénients sont qu'il faut
2637 individuellement, pour chaque objet, trouver les valeurs correctes de
2638 repositionnement souvent par tâtonnement et que, puisque le
2639 mouvement est opéré après que LilyPond a placé tous les autres
2640 objets, c'est à l'utilisateur de résoudre tous les problèmes de
2641 collision qui pourraient survenir. Et le pire avec cette méthode est
2642 que, le jour où la musique est modifiée, il faut de nouveau rechercher
2643 les valeurs de repositionnement. Les propriétés à utiliser pour ce type
2644 de repositionnement manuel sont :
2650 @cindex extra-offset, propriété
2652 Cette propriété s'applique à tout objet acceptant la
2653 @code{grob-interface}. Elle reçoit une paire de nombres qui indiquent
2654 le déplacement supplémentaire dans le sens horizontal et vertical. Des
2655 nombres négatifs déplacent l'objet vers la gauche ou vers la droite.
2656 L'unité utilisée est l'espace de portée. Le déplacement supplémentaire
2657 intervient une fois que la composition des objets est achevée, si bien
2658 qu'un objet peut être repositionné à n'importe quel endroit sans
2659 perturber quoi que ce soit.
2663 @cindex positions, propriété
2665 Cette propriété est très utile pour ajuster manuellement l'inclinaison
2666 et la hauteur des barres de ligature, des liaisons et des nolets. Elle
2667 est suivie de deux nombres qui donnent la position des extrémités gauche
2668 et droite des barres, liaisons, etc. par rapport à la ligne médiane de
2669 la portée. L'unité de référence est l'intervalle de lignes de portée.
2670 Attention toutefois au fait que les liaisons et phrasés ne peuvent pas
2671 être repositionnés n'importe où. LilyPond commence par dresser la liste
2672 des emplacements possibles pour les liaisons et choisit par défaut la
2673 liaison qui @qq{semble la meilleure}. Si la propriété @code{positions}
2674 a été retouchée, la liaison la plus proche de la position demandée sera
2675 retenue dans la liste.
2680 Il est possible qu'un objet ne dispose pas de toutes ces propriétés. Il
2681 est donc nécessaire de consulter la RPI pour vérifier quelles sont les
2682 propriétés disponibles pour l'objet en question.
2684 Voici une liste d'objets les plus couramment impliqués dans les
2685 collisions, avec le nom de l'objet à consulter dans la RPI afin de
2686 trouver les propriétés à retoucher pour obtenir un déplacement.
2689 @multitable @columnfractions .5 .5
2690 @headitem Type d'objet @tab Nom d'objet
2691 @item Articulations @tab @code{Script}
2692 @item Barres de ligature @tab @code{Beam}
2693 @item Doigté @tab @code{Fingering}
2694 @item Liaisons de phrasé @tab @code{Slur}
2695 @item Liaisons de prolongation @tab @code{Tie}
2696 @item Nolets @tab @code{TupletBracket}
2697 @item Nuances (verticalement) @tab @code{DynamicLineSpanner}
2698 @item Nuances (horizontalement) @tab @code{DynamicText}
2699 @item Reprises / marques de texte @tab @code{RehearsalMark}
2700 @item Texte, p.ex. @code{^"texte"} @tab @code{TextScript}
2704 @node Correction des collisions d'objets
2705 @subsection Correction des collisions d'objets
2706 @translationof Fixing overlapping notation
2708 Voyons maintenant comment les propriétés décrites dans la section
2709 précédente peuvent nous aider à résoudre les collisions.
2712 @subheading la propriété padding
2713 @c VO padding property
2715 @cindex décalage (padding)
2716 @cindex résolution des chevauchements de notation
2717 @cindex chevauchement de notation
2719 En jouant sur la propriété @code{padding} (littéralement
2720 @qq{rembourrage}), on augmente (ou on diminue) la distance entre
2721 des symboles qui sont imprimés au-dessus ou en dessous des notes.
2723 @cindex Script, exemple de dérogation
2724 @cindex padding, exemple d'utilisation de la propriété
2726 @lilypond[quote,fragment,relative=1,verbatim]
2728 \override Script #'padding = #3
2732 @cindex MetronomeMark, exemple de dérogation
2733 @cindex padding, exemple d'utilisation de la propriété
2735 @lilypond[quote,fragment,relative=1,verbatim]
2736 % This will not work, see below:
2737 \override MetronomeMark #'padding = #3
2741 \override Score.MetronomeMark #'padding = #3
2746 Vous remarquerez dans le second exemple à quel point il est important de
2747 préciser le nom du contexte qui contient l'objet. Puisque l'objet
2748 @code{MetronomeMark} appartient au contexte @code{Score}, le fait de
2749 modifier la propriété dans le contexte @code{Voice} passera inaperçu.
2750 Pour plus de détails, voir @ruser{Modification de propriétés}.
2752 Si on augmente la propriété @code{padding} d'un objet alors que celui-ci
2753 fait partie d'un ensemble d'objets positionnés en fonction de leur
2754 @code{outside-staff-priority}, cet objet sera déplacé, ainsi que tous
2755 les autres objets du groupe.
2758 @subheading la propriété right-padding
2761 @cindex right-padding, propriété
2763 La propriété @code{right-padding} joue sur l'espacement entre une
2764 altération et la note sur laquelle elle porte. On ne l'utilise pas
2765 souvent, mais l'espacement par défaut peut se révéler inadéquat avec
2766 certaines altérations ou certains glyphes utilisés en musique
2767 microtonale. Le stencil de l'altération devra alors être construit sous
2768 la forme d'un @code{markup} qui contiendra le ou les symboles requis,
2771 @cindex Accidental, exemple de dérogation
2772 @cindex text, exemple d'utilisation de la propriété
2773 @cindex stencil, exemple d'utilisation de la propriété
2774 @cindex AccidentalPlacement, exemple de dérogation
2775 @cindex right-padding, exemple d'utilisation de la propriété
2777 @lilypond[quote,ragged-right,verbatim]
2778 sesquisharp = \markup { \sesquisharp }
2781 % This prints a sesquisharp but the spacing is too small
2782 \once \override Accidental
2783 #'stencil = #ly:text-interface::print
2784 \once \override Accidental #'text = #sesquisharp
2786 % This improves the spacing
2787 \once \override Score.AccidentalPlacement #'right-padding = #0.6
2788 \once \override Accidental
2789 #'stencil = #ly:text-interface::print
2790 \once \override Accidental #'text = #sesquisharp
2796 Cette méthode utilise, pour le stencil des altérations, une retouche
2797 qui ne sera pas reprise par la suite. Le type de stencil est
2798 obligatoirement une procédure, qui consiste ici à imprimer le contenu de
2799 la propriété @code{text} de @code{Accidental}, déclaré comme étant un
2800 signe sesqui-dièse. Celui-ci est ensuite repoussé devant la tête de
2801 note par la retouche de @code{right-padding}.
2806 @subheading la propriété staff-padding
2807 @c VO staff-padding property
2809 @cindex alignement d'objets sur une ligne de base
2810 @cindex objets, alignement sur une ligne de base
2812 @code{staff-padding} sert à aligner des objets tels que des nuances
2813 sur une ligne fictive à une hauteur donnée par rapport à la portée
2814 plutôt qu'à une hauteur qui varie en fonction de la position de la note
2815 sur laquelle porte l'objet. Ce n'est pas une propriété de
2816 @code{DynamicText} mais de @code{DynamicLineSpanner}, car la ligne
2817 fictive est destinée à s'appliquer autant à @strong{toutes} les nuances,
2818 notamment celles qui sont créées comme des bandeaux en longueur (en
2819 anglais @emph{Spanners}). Tel est donc le moyen d'aligner les
2820 indications de nuance, comme dans cet exemple repris de la section
2823 @cindex DynamicText, exemple de dérogation
2824 @cindex extra-spacing-width, exemple d'utilisation de la propriété
2825 @cindex DynamicLineSpanner, exemple de dérogation
2826 @cindex staff-padding, exemple d'utilisation de la propriété
2828 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2830 % Extend width by 1 unit
2831 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2832 % Align dynamics to a base line 2 units above staff
2833 \override DynamicLineSpanner #'staff-padding = #2
2838 @subheading la propriété self-alignment-X
2839 @c VO self-alignment-X property
2841 L'exemple suivant montre comment résoudre une collision entre une
2842 indication de corde et une hampe, en alignant le coin droit sur le point
2843 de référence de la note parente :
2845 @cindex StringNumber, exemple de dérogation
2846 @cindex self-alignment-X, exemple d'utilisation de la propriété
2848 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
2851 \once \override StringNumber #'self-alignment-X = #RIGHT
2856 @subheading la propriété staff-position
2857 @c VO staff-position property
2859 @cindex collision d'objets à l'intérieur d'une portée
2861 Dans une voix, un silence valant une mesure entière peut chevaucher les
2862 notes d'une autre voix. Vu que ces silences sont centrés entre les deux
2863 barres de mesure, il serait très compliqué de programmer LilyPond pour
2864 repérer ces risques de collision dans la mesure où, normalement, toutes
2865 les collisions entre notes ou entre notes et silences se produisent sur
2866 des notes et silences simultanés. Voici un exemple de collision de ce
2869 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2870 << { c4 c c c } \\ { R1 } >>
2873 Ici, la meilleure solution consiste à déplacer le symbole de pause vers
2874 le bas -- puisque cette pause appartient à la voix deux. Par défaut,
2875 dans la @code{\voiceTwo} (c'est-à-dire dans la seconde voix d'une
2876 construction @code{<<@{@dots{}@} \\ @{@dots{}@}>>}), la propriété
2877 @code{staff-position} est réglée sur @code{-4} pour les
2878 @code{MultiMeasureRest} ; nous avons donc besoin de la déplacer, disons,
2879 de quatre demi-intervalles vers le bas, ce qui donne @code{-8}.
2881 @cindex MultiMeasureRest, exemple de dérogation
2882 @cindex staff-position, exemple d'utilisation de la propriété
2884 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2888 \override MultiMeasureRest #'staff-position = #-8
2893 C'est mieux que d'utiliser, par exemple, @code{extra-offset},
2894 car la ligne supplémentaire au-dessus du silence est insérée
2898 @subheading la propriété extra-offset
2899 @c VO extra-offset property
2901 @cindex positionnement des objets
2902 @cindex positionnement des grobs
2903 @cindex objets, positionnement
2904 @cindex grobs, positionnement
2906 La propriété @code{extra-offset} offre la possibilité de contrôler
2907 entièrement le placement d'un objet, aussi bien horizontalement que
2910 Dans l'exemple suivant, la seconde indication de doigté est déplacée
2911 légèrement vers la gauche et de 1,8 intervalle de lignes vers le
2914 @cindex Fingering, exemple de dérogation
2915 @cindex extra-offset, exemple d'utilisation de la propriété
2917 @lilypond[quote,fragment,relative=1,verbatim]
2920 \once \override Fingering #'extra-offset = #'(-0.3 . -1.8)
2925 @subheading la propriété positions
2926 @c VO positions property
2928 @cindex contrôle des nolets, liaisons, phrasés et ligatures
2929 @cindex gestion manuelle des nolets, liaisons, phrasés et ligatures
2930 @cindex ligatures de nolet, gestion manuelle
2931 @cindex liaisons, gestion manuelle
2932 @cindex phrasés, gestion manuelle
2933 @cindex ligatures, gestion manuelle
2935 La propriété @code{positions} permet de contrôler manuellement la
2936 position et l'inclinaison des nolets, coulés, liaisons de phrasé et
2937 barres de ligature. Voici un exemple avec une horrible liaison de
2938 phrasé -- horrible pour avoir tenté de contourner la liaison de
2941 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2942 r4 \acciaccatura e8\( d8 c~ c d c d\)
2946 Nous pourrions tout simplement déplacer la liaison de phrasé au-dessus
2947 des notes, et ce serait la meilleure solution :
2949 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2952 \acciaccatura e8\( d8 c~ c d c d\)
2956 Mais si, pour une quelconque raison, cette solution n'était pas
2957 envisageable, l'autre solution consiste à déplacer légèrement vers le
2958 bas l'extrémité gauche de la liaison de phrasé, grâce à la propriété
2959 @code{positions}. Cela corrige en même temps la forme plutôt
2960 disgracieuse de la liaison.
2962 @cindex PhrasingSlur, exemple de dérogation
2963 @cindex positions, exemple d'utilisation de la propriété
2965 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2967 \once \override PhrasingSlur #'positions = #'(-4 . -3)
2968 \acciaccatura e8\( d8 c~ c d c d\)
2971 Voici un autre exemple. Comme nous pouvons le constater, les barres de
2972 ligature chevauchent les liaisons de tenue :
2974 @lilypond[quote,verbatim,fragment,ragged-right]
2978 { c'1 ~ c'2. e'8 f' }
2980 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
2983 { c'1 ~ c'2. e'8 f' }
2985 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
2991 On peut y remédier en déplaçant manuellement vers le haut les deux
2992 extrémités des ligatures de croches, non plus à 1,81 intervalle
2993 au-dessous de la ligne médiane mais, disons, à 1 :
2995 @cindex Beam, exemple de dérogation
2996 @cindex positions, exemple d'utilisation de la propriété
2998 @lilypond[quote,verbatim,fragment,ragged-right]
3002 { c'1 ~ c'2. e'8 f' }
3005 \override Beam #'positions = #'(-1 . -1)
3006 e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g''
3010 { c'1 ~ c'2. e'8 f' }
3012 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
3018 Vous remarquerez que la retouche continue de s'appliquer au
3019 second bloc de croches de la première voix mais qu'il ne s'applique
3020 à aucune mesure de la deuxième voix.
3023 @subheading la propriété force-hshift
3024 @c VO force-hshift property
3026 Maintenant, nous sommes prêts à appliquer les dernières corrections à
3027 l'exemple de Chopin présenté à la fin de @ref{J'entends des Voix}, que
3028 nous avions laissé dans cet état :
3030 @lilypond[quote,verbatim,fragment,ragged-right]
3031 \new Staff \relative c'' {
3046 La note intermédiaire du premier accord, le la bémol à la quatrième
3047 voix, doit rester dans le même empilement que la note haute. Pour y
3048 remédier, nous réglons le @code{force-hshift} -- qui est une propriété
3049 de @code{NoteColumn} -- de cette note sur zéro.
3051 Quant au second accord, il serait préférable que le fa s'aligne avec le
3052 la et que la note la plus basse se positionne un peu plus sur la droite
3053 pour éviter que les hampes se chevauchent. Pour cela, nous réglons le
3054 @code{force-hshift} au niveau du @code{NoteColumn} du ré bémol de telle
3055 sorte qu'il se déplace de la moitié d'un espace de portée vers la
3058 Et voici le résultat final :
3060 @cindex NoteColumn, exemple de dérogation
3061 @cindex force-hshift, exemple d'utilisation de la propriété
3063 @lilypond[quote,verbatim,fragment,ragged-right]
3064 \new Staff \relative c'' {
3071 \once \override NoteColumn #'force-hshift = #0.5
3077 \override NoteColumn #'force-hshift = #0
3086 @node Exemple concret
3087 @subsection Exemple concret
3088 @translationof Real music example
3090 Pour terminer ce chapitre consacré aux retouches, voici, étape par
3091 étape, la mise en forme d'un exemple concret nécessitant un certain
3092 nombre de retouches jusqu'à l'obtention du résultat attendu. Cet
3093 exemple a été choisi en raison des problèmes inhabituels de notation
3094 qu'il soulevait et pour vous apprendre à les résoudre grâce au Manuel de
3095 notation. Il n'est pas représentatif d'une opération normale de
3096 gravure ; que ces difficultés ne vous découragent donc pas !
3097 Des difficultés comme celles-ci ne sont, heureusement, pas
3100 Cet exemple est tiré de la Première Ballade de Chopin, Op. 23, mesures
3101 6 à 9 ; cela correspond à la transition entre le Lento d'ouverture
3102 et le Moderato. Voici, pour commencer, ce à quoi nous voulons que la
3103 partition ressemble ; pour limiter les complications, nous n'avons
3104 pas fait apparaître les indications de nuance, de doigté ni de pédale.
3107 @c The following should appear as music without code
3108 @c This example should not be indexed
3109 @c line-width ensures no break
3110 @lilypond[quote,ragged-right,line-width=6\in]
3111 rhMusic = \relative c'' {
3114 \once \override Tie #'staff-position = #3.5
3118 \mergeDifferentlyHeadedOn
3119 \mergeDifferentlyDottedOn
3120 bes2.^\markup { \bold "Moderato" } r8
3126 % Reposition the c2 to the right of the merged note
3127 \once \override NoteColumn #'force-hshift = #1.0
3128 % Move the c2 out of the main note column
3129 % so the merge will work
3136 % Stem on the d2 must be down to permit merging
3138 % Stem on the d2 should be invisible
3139 \tweak Stem #'transparent ##t
3140 \tweak Flag #'transparent ##t
3148 \mergeDifferentlyHeadedOff
3149 \mergeDifferentlyDottedOff
3154 lhMusic = \relative c' {
3156 <d g, d>1)\arpeggio |
3163 \new Staff = "RH" <<
3167 \new Staff = "LH" <<
3176 Nous constatons tout d'abord que, dans la troisième mesure, la main
3177 droite compte quatre voix. Ce sont les cinq croches avec une barre,
3178 le do avec liaison, le ré blanche qui se fond avec le ré croche, et le
3179 fa dièse noire pointée qui se fond lui aussi avec la croche de même
3180 hauteur. Tout le reste se réduit à une seule voix. Le plus simple est
3181 donc de créer temporairement ces trois voix supplémentaires au moment
3182 opportun. Si vous avez oublié comment faire, reportez-vous à
3183 @ref{J'entends des Voix} et @ref{Instanciation explicite des voix}.
3184 Nous opterons ici pour une déclaration explicite des voix du passage
3185 polyphonique, puisque LilyPond est alors plus performant en matière
3186 d'évitement des collisions.
3188 Commençons par saisir les notes comme appartenant à deux variables,
3189 mettons en place l'ossature des portées dans un bloc @code{\Score} et
3190 voyons ce que LilyPond propose par défaut :
3192 @c line-width ensures no break
3193 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3194 rhMusic = \relative c'' {
3200 % Start polyphonic section of four voices
3202 { c,8 d fis bes a } % continuation of main voice
3216 g2. % continuation of main voice
3220 lhMusic = \relative c' {
3229 \new Staff = "RH" <<
3233 \new Staff = "LH" <<
3242 Toutes les notes sont correctes mais l'allure générale est loin d'être
3243 satisfaisante. La liaison se heurte à l'indication de mesure lors du
3244 changement de métrique, la ligature des croches n'est pas bonne dans la
3245 troisième mesure, les notes ne sont pas fusionnées et il manque
3246 plusieurs éléments de notation. Commençons par le plus simple. Nous
3247 pouvons corriger la ligature des croches en la créant manuellement et
3248 nous pouvons facilement ajouter les limites droite et gauche de la
3249 liaison de phrasé, puisque tout cela a déjà été traité dans le tutoriel.
3252 @c line-width ensures no break
3253 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3254 rhMusic = \relative c'' {
3260 % Start polyphonic section of four voices
3262 { c,8 d fis bes a } % continuation of main voice
3276 g2.\) % continuation of main voice
3280 lhMusic = \relative c' {
3289 \new Staff = "RH" <<
3293 \new Staff = "LH" <<
3302 La première mesure est maintenant correcte. La seconde contient un
3303 arpège et doit se terminer par une double barre. Comment faire, puisque
3304 cela n'a pas été traité dans le Manuel d'initiation ? C'est alors
3305 qu'il faut nous reporter au Manuel de notation. Quand on cherche
3306 @qq{arpège} et @qq{barre de mesure} dans l'index, on voit aisément qu'il
3307 faut ajouter @code{\arpeggio} à un accord pour produire un arpège et
3308 qu'une double barre est le résultat de la commande
3309 @code{\bar "||"}. Rien de plus facile ! Nous devons ensuite
3310 corriger la collision entre la liaison et l'indication de mesure. Le
3311 mieux est de déplacer la liaison vers le haut. La méthode pour déplacer
3312 les objets a déjà été présentée dans @ref{Déplacement d'objets}, et l'on
3313 sait que, pour des objets positionnés par rapport à la portée, il nous
3314 faut modifier leur propriété @code{staff-position}, exprimée en
3315 demi-intervalles de lignes par rapport à la ligne médiane de la portée.
3316 Voici donc la retouche à insérer juste devant la première note
3317 liée ; elle est censée déplacer la liaison vers le haut de 3,5
3318 demi-intervalles de lignes au-dessus de la ligne médiane :
3320 @code{\once \override Tie #'staff-position = #3.5}
3322 Cela s'adjoint à la deuxième mesure, pour donner :
3324 @c line-width ensures no break
3325 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3326 rhMusic = \relative c'' {
3329 \once \override Tie #'staff-position = #3.5
3334 % Start polyphonic section of four voices
3336 { c,8 d fis bes a } % continuation of main voice
3350 g2.\) % continuation of main voice
3354 lhMusic = \relative c' {
3356 <d g, d>1)\arpeggio |
3363 \new Staff = "RH" <<
3367 \new Staff = "LH" <<
3376 Venons-en à la troisième mesure et au début de la section Moderato.
3377 Dans le Tutoriel, il est indiqué comment insérer du texte en gras à
3378 l'aide de la commande @code{\markup} ; pas de problème, du coup,
3379 pour ajouter @qq{Moderato} en gras. Mais comment faire pour fusionner
3380 les notes de différentes voix ? C'est là que le Manuel de notation
3381 peut nous venir en aide. Une recherche sur @qq{fusionnement de notes}
3382 dans l'index nous renvoie au chapitre @ruser{Résolution des collisions},
3383 et plus précisément aux commandes permettant de fusionner des notes en
3384 fonction de leur type et selon qu'elles sont pointées ou non. Dans
3385 notre exemple, pour la durée de la polyphonie de la troisième mesure,
3386 nous avons besoin de fusionner deux types de notes ; grâce aux
3387 informations trouvées dans le Manuel de notation, nous ajoutons
3390 \mergeDifferentlyHeadedOn
3391 \mergeDifferentlyDottedOn
3395 au début de cette section et
3398 \mergeDifferentlyHeadedOff
3399 \mergeDifferentlyDottedOff
3403 à la fin, ce qui donne :
3405 @c line-width ensures no break
3406 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3407 rhMusic = \relative c'' {
3410 \once \override Tie #'staff-position = #3.5
3414 bes2.^\markup { \bold "Moderato" } r8
3415 \mergeDifferentlyHeadedOn
3416 \mergeDifferentlyDottedOn
3417 % Start polyphonic section of four voices
3419 { c,8 d fis bes a } % continuation of main voice
3433 \mergeDifferentlyHeadedOff
3434 \mergeDifferentlyDottedOff
3435 g2.\) % continuation of main voice
3439 lhMusic = \relative c' {
3441 <d g, d>1)\arpeggio |
3448 \new Staff = "RH" <<
3452 \new Staff = "LH" <<
3461 Ces retouches ont permis de fusionner les deux fa dièse mais pas les
3462 deux ré. Pourquoi ? La réponse se trouve dans la même section du
3463 Manuel de notation : les notes à fusionner doivent avoir des hampes
3464 dans des directions opposées et deux notes ne peuvent pas être
3465 fusionnées s'il y a une troisième note dans la même colonne. Ici, les
3466 deux ré ont leur hampe orientée vers le haut et il y a une troisième
3467 note, do. Nous savons changer l'orientation de la hampe avec
3468 @code{\stemDown} et le Manuel de notation nous indique également comment
3469 déplacer le do -- en produisant un décalage grâce à l'une des commandes
3470 @code{\shift}. Mais laquelle ? Le do appartient à la deuxième
3471 voix et n'est pas décalé ; les deux ré appartiennent respectivement
3472 à la première et à la troisième voix, et l'un n'est pas décalé tandis
3473 que l'autre l'est. Il nous faut donc décaler largement le do avec la
3474 commande @code{\shiftOnn} pour éviter une interférence avec les deux ré.
3475 Voici ce que donnent ces modifications :
3477 @cindex Tie, exemple de dérogation
3478 @cindex staff-position, exemple d'utilisation de la propriété
3480 @c line-width ensures no break
3481 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3482 rhMusic = \relative c'' {
3485 \once \override Tie #'staff-position = #3.5
3489 bes2.^\markup { \bold "Moderato" } r8
3490 \mergeDifferentlyHeadedOn
3491 \mergeDifferentlyDottedOn
3492 % Start polyphonic section of four voices
3494 { c,8 d fis bes a } % continuation of main voice
3497 % Move the c2 out of the main note column
3498 % so the merge will work
3503 % Stem on the d2 must be down to permit merging
3511 \mergeDifferentlyHeadedOff
3512 \mergeDifferentlyDottedOff
3513 g2.\) % continuation of main voice
3517 lhMusic = \relative c' {
3519 <d g, d>1)\arpeggio |
3526 \new Staff = "RH" <<
3530 \new Staff = "LH" <<
3539 Pas loin ! Il ne reste plus que deux problèmes : les ré une
3540 fois fusionnés ne devraient plus avoir de hampe vers le bas, et le do
3541 serait mieux à la droite des ré. Nous savons remédier à ces deux
3542 problèmes grâce aux retouches précédentes : nous allons rendre la
3543 hampe transparente et déplacer le do avec la propriété
3544 @code{force-hshift}. Et voici le résultat final :
3546 @cindex NoteColumn, exemple de dérogation
3547 @cindex force-hshift, exemple d'utilisation de la propriété
3548 @cindex Stem, exemple de dérogation
3549 @cindex transparent, exemple d'utilisation de la propriété
3551 @c line-width ensures no break
3552 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3553 rhMusic = \relative c'' {
3556 \once \override Tie #'staff-position = #3.5
3560 bes2.^\markup { \bold "Moderato" } r8
3561 \mergeDifferentlyHeadedOn
3562 \mergeDifferentlyDottedOn
3563 % Start polyphonic section of four voices
3565 { c,8 d fis bes a } % continuation of main voice
3569 % Reposition the c2 to the right of the merged note
3570 \once \override NoteColumn #'force-hshift = #1.0
3571 % Move the c2 out of the main note column
3572 % so the merge will work
3579 % Stem on the d2 must be down to permit merging
3581 % Stem on the d2 should be invisible
3582 \tweak Stem #'transparent ##t
3583 \tweak Flag #'transparent ##t
3591 \mergeDifferentlyHeadedOff
3592 \mergeDifferentlyDottedOff
3593 g2.\) % continuation of main voice
3597 lhMusic = \relative c' {
3599 <d g, d>1)\arpeggio |
3606 \new Staff = "RH" <<
3610 \new Staff = "LH" <<
3620 @node Autres retouches
3621 @section Autres retouches
3622 @translationof Further tweaking
3625 * Autres utilisations des retouches::
3626 * Utilisation de variables dans les retouches::
3627 * Feuilles de style::
3628 * Autres sources de documentation::
3629 * Retouches avancées avec Scheme::
3633 @node Autres utilisations des retouches
3634 @subsection Autres utilisations des retouches
3635 @translationof Other uses for tweaks
3637 @cindex transparent, utilisation de la propriété
3638 @cindex création d'objet invisible
3639 @cindex suppression d'objets
3640 @cindex objets, suppression d'
3641 @cindex masquage d'objets
3642 @cindex objets, masquage d'
3643 @cindex invisibles, objets
3644 @cindex objets, invisibles
3645 @cindex liaison de tenue avec changement de voix
3648 @subheading Liaison entre plusieurs voix
3649 @c VO Tying notes across voices
3651 Voici un exemple qui montre comment créer une liaison de
3652 prolongation entre des notes appartenant à des voix différentes. En
3653 temps normal, seules deux notes appartenant à une même voix
3654 peuvent être ainsi liées. La solution consiste à utiliser deux voix,
3655 dont l'une avec les notes liées
3657 @lilypond[quote,fragment,relative=2]
3658 << { b8~ b8\noBeam } \\ { b[ g8] } >>
3662 et à rendre transparente la première hampe de cette voix ;
3663 on a alors l'impression que la liaison couvre les deux voix.
3665 @cindex Stem, exemple de dérogation
3666 @cindex transparent, exemple d'utilisation de la propriété
3668 @lilypond[quote,fragment,relative=2,verbatim]
3671 \tweak Stem #'transparent ##t
3672 \tweak Flag #'transparent ##t
3680 Pour être sûr que la hampe que nous avons rendue transparente
3681 n'empiète pas trop sur le trait de liaison, nous pouvons l'allonger en
3682 réglant la longueur (@code{length}) sur @code{8},
3684 @lilypond[quote,fragment,relative=2,verbatim]
3687 \tweak Stem #'transparent ##t
3688 \tweak Flag #'transparent ##t
3689 \tweak Stem #'length #8
3698 @subheading Rendu MIDI d'un point d'orgue
3699 @c VO Simulating a fermata in MIDI
3701 @cindex stencil, utilisation de la propriété
3702 @cindex point d'orgue, rendu en MIDI
3704 En ce qui concerne les objets extérieurs à la portée, quand on veut les
3705 faire disparaître de la partition imprimée, il est généralement
3706 préférable de modifier leur propriété @code{stencil} plutôt que leur
3707 propriété @code{transparent}. Le fait d'attribuer à la propriété
3708 @code{stencil} d'un objet la valeur @code{#f} supprimera entièrement
3709 celui-ci de la partition. Il ne risquera donc pas de gêner le placement
3712 Par exemple, si nous voulons changer le réglage de métronome pour
3713 simuler un point d'orgue dans le fichier MIDI, nous ne voulons surtout
3714 pas que cette indication métronomique apparaisse sur la partition ni
3715 qu'elle influence l'espacement entre les deux systèmes ou la position
3716 des annotations voisines sur la portée. Le fait d'attribuer à la
3717 propriété @code{stencil} la valeur @code{#f} est donc la bonne solution.
3718 Nous montrons ci-dessous le résultat des deux méthodes :
3720 @cindex MetronomeMark, exemple de dérogation
3721 @cindex transparent, exemple d'utilisation de la propriété
3723 @lilypond[quote,verbatim,ragged-right]
3726 % Visible tempo marking
3729 \once \override Score.MetronomeMark #'transparent = ##t
3730 % Invisible tempo marking to lengthen fermata in MIDI
3733 % New tempo for next section
3742 @cindex MetronomeMark, exemple de dérogation
3743 @cindex stencil, exemple d'utilisation de la propriété
3745 @lilypond[quote,verbatim,ragged-right]
3748 % Visible tempo marking
3751 \once \override Score.MetronomeMark #'stencil = ##f
3752 % Invisible tempo marking to lengthen fermata in MIDI
3755 % New tempo for next section
3765 Les deux méthodes permettent d'enlever l'indication métronomique qui
3766 allonge le point d'orgue de la partition, et toutes deux modifient le
3767 rythme MIDI comme souhaité mais, dans la première, l'indication
3768 métronomique transparente repousse vers le haut l'indication de tempo,
3769 contrairement à la seconde (avec le stencil désactivé) qui la laisse à
3773 Glossaire musicologique :
3774 @rglosnamed{system,système}.
3777 @node Utilisation de variables dans les retouches
3778 @subsection Utilisation de variables dans les retouches
3779 @translationof Using variables for tweaks
3781 @cindex variables, utilisation dans les retouches
3782 @cindex utilisation de variables dans les retouches
3783 @cindex retouches et utilisation de variables
3785 Les commandes de retouche sont souvent longues et pénibles à
3786 taper, et ne tolèrent pas la moindre erreur. Lorsqu'on a besoin de
3787 faire plusieurs fois les mêmes retouches, il est préférable de
3788 définir des variables qui les contiennent.
3790 Imaginons que nous voulions accentuer certains mots dans des paroles en
3791 les mettant en italique. Au lieu des commandes @code{\italic} et
3792 @code{\bold}, qui ne fonctionnent dans les paroles que si elles sont
3793 enchâssées dans un @code{\markup} -- ce qui les rend pénibles à saisir
3794 -- pouvons-nous employer les commandes @code{\override} et
3798 @code{\override Lyrics . LyricText #'font-shape = #'italic}
3799 @code{\override Lyrics . LyricText #'font-series = #'bold}
3801 @code{\revert Lyrics . LyricText #'font-shape}
3802 @code{\revert Lyrics . LyricText #'font-series}
3805 Là encore, ce serait extrêmement pénible à saisir, surtout s'il y avait
3806 beaucoup de mots à retoucher de cette façon. Plutôt que cette
3807 solution, nous déclarons ces commandes comme étant deux variables,
3808 et les utilisons comme ci-après -- quoique on choisirait sans doute pour
3809 les variables des noms plus courts pour simplifier la frappe. Par
3810 ailleurs, le fait de recourir à une variable ne nous expose plus à
3811 l'oubli des espaces entourant les points lorsqu'explicités au beau
3812 milieu d'un bloc @code{\lyricmode} !
3814 @cindex LyricText, exemple de dérogation
3815 @cindex font-shape, exemple d'utilisation de la propriété
3816 @cindex font-series, exemple d'utilisation de la propriété
3818 @lilypond[quote,verbatim]
3820 \override Lyrics.LyricText #'font-shape = #'italic
3821 \override Lyrics.LyricText #'font-series = #'bold
3825 \revert Lyrics.LyricText #'font-shape
3826 \revert Lyrics.LyricText #'font-series
3829 global = { \key c \major \time 4/4 \partial 4 }
3831 SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g }
3832 AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e }
3833 TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
3834 BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
3836 VerseOne = \lyrics {
3837 E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
3840 VerseTwo = \lyricmode {
3841 O | \emphasize Christ, \normal whose voice the | wa -- ters heard,
3844 VerseThree = \lyricmode {
3845 O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
3848 VerseFour = \lyricmode {
3849 O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
3856 \new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
3857 \new Voice = "Alto" { \voiceTwo \AltoMusic }
3858 \new Lyrics \lyricsto "Soprano" { \VerseOne }
3859 \new Lyrics \lyricsto "Soprano" { \VerseTwo }
3860 \new Lyrics \lyricsto "Soprano" { \VerseThree }
3861 \new Lyrics \lyricsto "Soprano" { \VerseFour }
3865 \new Voice = "Tenor" { \voiceOne \TenorMusic }
3866 \new Voice = "Bass" { \voiceTwo \BassMusic }
3873 @node Feuilles de style
3874 @subsection Feuilles de style
3875 @translationof Style sheets
3877 La sortie que produit LilyPond peut être largement modifiée -- voir
3878 @ref{Retouche de partition} pour plus de détails. Mais que faire si
3879 vous avez beaucoup de fichiers auxquels vous souhaitez appliquer vos
3880 retouches ? Ou si vous souhaitez simplement séparer les retouches
3881 de la musique elle-même ? Rien de plus facile.
3883 Prenons un exemple. Ne vous inquiétez pas si vous ne comprenez pas
3884 les parties avec tous les @code{#()}. Celles-ci sont expliquées dans
3885 @ref{Retouches avancées avec Scheme}.
3887 @lilypond[quote,verbatim,ragged-right]
3889 #(make-dynamic-script
3891 #:translate '(5 . 0)
3892 #:line (#:dynamic "mp"
3893 #:text #:italic "dolce")))
3896 #(define-music-function
3897 (parser location string)
3902 'text (markup #:bold (#:box string))))
3906 a4.\mpdolce d8 cis4--\glissando a |
3910 g8(\! fis)-. e( d)-. cis2 |
3914 On peut faire quelque chose pour les définitions de @code{mpdolce}
3915 et @code{inst}. Elles produisent le résultat que nous désirons,
3916 mais nous pourrions aussi vouloir les utiliser dans une autre pièce.
3917 Il suffirait de les copier et coller au début de chaque
3918 fichier, mais c'est fastidieux. De plus, cela laisse les définitions
3919 dans nos fichiers de musique, et je trouve personnellement tous ces
3920 @code{#()} assez laids. Stockons-les dans un autre fichier :
3923 %%% enregistrez ceci dans un fichier nommé "definitions.ily"
3925 #(make-dynamic-script
3926 #@{ \markup @{ \hspace #0
3927 \translate #'(5 . 0)
3928 \line @{ \dynamic "mp"
3929 \text \italic "dolce" @} @}
3933 #(define-music-function
3934 (parser location string)
3936 #@{ ^\markup \bold \box #string #@})
3939 Nous rappellerons ce fichier par une simple commande @code{\include} au
3940 début de notre fichier de musique. Lui attribuer l'extension
3941 @code{.ily} nous permet de distinguer aisément qu'il s'agit d'un fichier
3942 voué à être inclus dans un fichier maître ; il n'est pas destiné à
3943 être compilé isolément.@*
3944 Maintenant, modifions notre musique (enregistrez ce fichier
3945 sous @file{musique.ly}).
3947 @c We have to do this awkward example/lilypond-non-verbatim
3948 @c because we can't do the \include stuff in the manual.
3951 \include "definitions.ily"
3955 a4.\mpdolce d8 cis4--\glissando a |
3959 g8(\! fis)-. e( d)-. cis2 |
3963 @lilypond[quote,ragged-right]
3965 #(make-dynamic-script
3966 #{ \markup { \hspace #0
3967 \translate #'(5 . 0)
3968 \line { \dynamic "mp"
3969 \text \italic "dolce" } }
3973 #(define-music-function
3974 (parser location string)
3976 #{ ^\markup \bold \box #string #})
3980 a4.\mpdolce d8 cis4--\glissando a |
3984 g8(\! fis)-. e( d)-. cis2 |
3988 C'est mieux, mais effectuons encore quelques retouches. Le glissando
3989 est peu visible, c'est pourquoi nous allons l'épaissir et le
3990 rapprocher des têtes de note. Déplaçons l'indication métronomique
3991 au-dessus de la clef, au lieu de la laisser au-dessus de la première
3992 note. Et pour finir, mon professeur de composition déteste les
3993 chiffrages de mesure en @qq{C}, nous allons donc le transformer en
3996 Cependant, ne changez pas le fichier @file{musique.ly}. Remplacez le
3997 fichier @file{definitions.ily} par ceci :
4002 #(make-dynamic-script
4003 #@{ \markup @{ \hspace #0
4004 \translate #'(5 . 0)
4005 \line @{ \dynamic "mp"
4006 \text \italic "dolce" @} @}
4010 #(define-music-function
4011 (parser location string)
4013 #@{ ^\markup \bold \box #string #@})
4018 \override MetronomeMark #'extra-offset = #'(-9 . 0)
4019 \override MetronomeMark #'padding = #'3
4023 \override TimeSignature #'style = #'numbered
4027 \override Glissando #'thickness = #3
4028 \override Glissando #'gap = #0.1
4033 @lilypond[quote,ragged-right]
4035 #(make-dynamic-script
4036 #{ \markup { \hspace #0
4037 \translate #'(5 . 0)
4038 \line { \dynamic "mp"
4039 \text \italic "dolce" } }
4043 #(define-music-function
4044 (parser location string)
4046 #{ ^\markup \bold \box #string #})
4051 \override MetronomeMark #'extra-offset = #'(-9 . 0)
4052 \override MetronomeMark #'padding = #'3
4056 \override TimeSignature #'style = #'numbered
4060 \override Glissando #'thickness = #3
4061 \override Glissando #'gap = #0.1
4067 a4.\mpdolce d8 cis4--\glissando a |
4071 g8(\! fis)-. e( d)-. cis2 |
4075 C'est encore mieux ! Mais supposons maintenant que je veuille
4076 publier cette pièce. Mon professeur de composition n'aime pas les
4077 chiffrages de mesure en @qq{C}, mais moi je les aime bien. Copions
4078 l'actuel @file{definitions.ily} dans le fichier
4079 @file{publication-web.ily}, et modifions ce dernier. Puisque la musique
4080 est destinée à produire un fichier PDF affiché sur écran, nous allons
4081 aussi augmenter la taille globale de police.
4086 #(make-dynamic-script
4087 #@{ \markup @{ \hspace #0
4088 \translate #'(5 . 0)
4089 \line @{ \dynamic "mp"
4090 \text \italic "dolce" @} @}
4094 #(define-music-function
4095 (parser location string)
4097 #@{ ^\markup \bold \box #string #@})
4099 #(set-global-staff-size 23)
4104 \override MetronomeMark #'extra-offset = #'(-9 . 0)
4105 \override MetronomeMark #'padding = #'3
4112 \override Glissando #'thickness = #3
4113 \override Glissando #'gap = #0.1
4118 @lilypond[quote,ragged-right]
4120 #(make-dynamic-script
4121 #{ \markup { \hspace #0
4122 \translate #'(5 . 0)
4123 \line { \dynamic "mp"
4124 \text \italic "dolce" } }
4128 #(define-music-function
4129 (parser location string)
4131 #{ ^\markup \bold \box #string #})
4133 #(set-global-staff-size 23)
4137 \override MetronomeMark #'extra-offset = #'(-9 . 0)
4138 \override MetronomeMark #'padding = #'3
4141 \override Glissando #'thickness = #3
4142 \override Glissando #'gap = #0.1
4148 a4.\mpdolce d8 cis4--\glissando a |
4152 g8(\! fis)-. e( d)-. cis2 |
4156 Il ne nous reste plus qu'à remplacer
4157 @code{\include "definitions.ily"} par
4158 @code{\include "publication-web.ily"} dans notre fichier de
4161 Il est possible, bien sûr, de rendre cela encore plus pratique. Nous
4162 pourrions créer un fichier @file{definitions.ily} qui ne contiendrait
4163 que les définitions de @code{mpdolce} et de @code{inst}, un
4164 fichier @file{publication-web.ily} qui ne contiendrait que la section
4165 @code{layout} décrite ci-dessus et un fichier @file{universite.ily} qui
4166 ne contiendrait que les retouches pour produire le résultat que mon
4167 professeur préfère. Le début du fichier @file{musique.ly} ressemblerait
4171 \include "definitions.ily"
4173 %%% Décommentez seulement une de ces deux lignes !
4174 \include "publication-web.ily"
4175 %\include "universite.ily"
4178 Cette approche peut être utile même si vous ne produisez qu'un seul
4179 jeu de partitions. J'utilise personnellement une demi-douzaine de
4180 fichiers de @qq{feuille de style} pour mes projets. Je commence
4181 chaque fichier de musique par @code{\include "../global.ily"} qui
4186 \version @w{"@version{}"}
4188 #(ly:set-option 'point-and-click #f)
4190 \include "../init/init-defs.ly"
4191 \include "../init/init-mise-en-page.ly"
4192 \include "../init/init-en-tetes.ly"
4193 \include "../init/init-papier.ly"
4197 @node Autres sources de documentation
4198 @subsection Autres sources de documentation
4199 @translationof Other sources of information
4201 La référence des propriétés internes contient beaucoup d'informations
4202 sur LilyPond. Cependant vous pouvez en découvrir encore plus en
4203 consultant les fichiers internes de LilyPond. Pour cela, il vous faut
4204 d'abord connaître le répertoire @emph{ad hoc} sur votre système.
4205 L'emplacement du répertoire dépend (a) du fait que, pour vous procurer
4206 LilyPond, vous avez téléchargé un paquet précompilé sur lilypond.org, ou
4207 vous l'avez installé grâce à votre gestionnaire de paquetages
4208 (c'est-à-dire distribué avec Linux ou installé avec fink ou cygwin), ou
4209 encore vous l'avez compilé directement à partir des sources ; et
4210 (b) du système d'exploitation sur lequel il tourne.
4212 @strong{Téléchargé depuis lilypond.org}
4218 @file{@var{INSTALLDIR}/lilypond/usr/@/share/lilypond/current/}
4224 @file{@var{INSTALLDIR}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
4227 Pour accéder à ce dossier, deux possibilités : soit, dans un
4228 Terminal, taper @code{cd} suivi du chemin complet ci-dessus ; soit
4229 Control-cliquer (ou clic droit) sur l'application LilyPond
4230 et sélectionner @qq{Afficher le contenu du paquet}.
4234 Dans l'Explorateur Windows, voir
4236 @file{@var{INSTALLDIR}/LilyPond/usr/@/share/lilypond/current/}
4241 @strong{Installé par un gestionnaire de paquetages ou compilé d'après
4244 @code{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, où
4245 @var{PREFIX} est déterminé par votre gestionnaire de paquetages ou par
4246 le script @code{configure}, et @var{X.Y.Z} est le numéro de version de
4251 Dans ce répertoire, deux sous-répertoires sont particulièrement
4255 @item @code{ly/} -- contient les fichiers en format LilyPond
4256 @item @code{scm/} -- contient les fichiers en format Scheme
4259 Commençons par examiner quelques fichiers contenus dans @file{ly/}.
4260 Nous ouvrons @file{ly/property-init.ly} dans un éditeur de texte --
4261 celui que vous avez l'habitude d'utiliser pour les fichiers @file{.ly}
4262 fera très bien l'affaire. Ce fichier contient les définitions de toutes
4263 les commandes standard prédéfinies de LilyPond, comme @code{\stemUp} et
4264 @code{\slurDotted}. Vous pouvez constater que ce n'est rien d'autre
4265 que des définitions de variables composées d'un ou plusieurs groupes
4266 de commandes @code{\override}. Par exemple, @code{\tieDotted}
4271 \override Tie #'dash-period = #0.75
4272 \override Tie #'dash-fraction = #0.1
4276 Si vous n'aimez pas les valeurs par défaut, les commandes prédéfinies
4277 peuvent être facilement redéfinies, comme n'importe quelle autre
4278 variable, en tête de votre fichier d'entrée.
4280 Voici les fichiers les plus utiles dans le répertoire @file{ly/} :
4282 @multitable @columnfractions .4 .6
4283 @headitem Nom de fichier
4285 @item @file{ly/engraver-init.ly}
4286 @tab Définitions des Contextes de graveurs
4287 @item @file{ly/paper-defaults-init.ly}
4288 @tab Réglages papier par défaut
4289 @item @file{ly/performer-init.ly}
4290 @tab Définitions des Contextes d'interprétation
4291 @item @file{ly/property-init.ly}
4292 @tab Définitions de toutes les commandes prédéfinies courantes
4293 @item @file{ly/spanner-init.ly}
4294 @tab Définitions des commandes prédéfinies pour les bandeaux
4297 Les autres réglages (comme les définitions de commandes @emph{markup})
4298 sont conservés comme fichiers @file{.scm} (Scheme). Le langage de
4299 programmation Scheme offre une interface programmable dans le
4300 processus interne de LilyPond. De plus amples explications sur ces
4301 fichiers dépasseraient le cadre de ce manuel dans la mesure où elles
4302 requièrent la connaissance du langage Scheme. Les utilisateurs qui
4303 souhaiteraient comprendre le fonctionnement de ces fichiers de
4304 configuration doivent être avertis que des connaissances techniques
4305 substantielles et beaucoup de temps sont nécessaires (voir le
4306 @rextend{Tutoriel Scheme}).
4308 Si c'est votre cas, les fichiers Scheme les plus utiles à connaître
4311 @multitable @columnfractions .4 .6
4312 @headitem Nom de fichier
4314 @item @file{scm/auto-beam.scm}
4315 @tab Règles par défaut des ligatures subalternes
4316 @item @file{scm/define-grobs.scm}
4317 @tab Réglages par défaut des propriétés de @emph{grobs}
4318 @item @file{scm/define-markup-commands.scm}
4319 @tab Spécification de toutes les commandes de @emph{markup}
4320 @item @file{scm/midi.scm}
4321 @tab Réglages par défaut pour les sorties MIDI
4322 @item @file{scm/output-lib.scm}
4323 @tab Réglages affectant l'apparence des frets, couleurs, altérations,
4324 barres de mesure etc.
4325 @item @file{scm/parser-clef.scm}
4326 @tab Définition des clefs prises en charge
4327 @item @file{scm/script.scm}
4328 @tab Réglages par défaut des articulations
4332 @node Retouches avancées avec Scheme
4333 @subsection Retouches avancées avec Scheme
4334 @translationof Advanced tweaks with Scheme
4336 Nous avons vu à quel point le résultat obtenu avec LilyPond peut
4337 être largement personnalisé à l'aide de commandes comme
4338 @code{\override} et @code{\tweak}. Et pourtant l'utilisation de
4339 Scheme ouvre des possibilités encore plus grandes.
4340 Le code écrit dans le langage de programmation Scheme peut être
4341 intégré directement dans le processus interne de LilyPond. Bien sûr,
4342 il faut pour cela connaître un minimum de programmation en langage
4343 Scheme. Pour des explications complètes là-dessus, consultez le
4344 @rextend{Tutoriel Scheme}.
4346 En guise d'illustration -- et ce n'est qu'une possibilité parmi tant
4347 d'autres -- nous allons attribuer à une propriété non pas une valeur
4348 préétablie mais une procédure Scheme qui sera lancée à chaque
4349 utilisation de la propriété par LilyPond. De cette façon, nous obtenons
4350 un réglage dynamique de la propriété par le simple fait d'invoquer la
4351 procédure. Dans cet exemple, nous colorons les têtes de notes en
4352 fonction de leur position sur la portée.
4355 @cindex x11-color, exemple d'utilisation de la fonction
4356 @cindex NoteHead, exemple de dérogation
4357 @cindex color, détermination de la propriété par une procédure Scheme
4359 @lilypond[quote,verbatim,ragged-right]
4360 #(define (color-notehead grob)
4361 "Color the notehead according to its position on the staff."
4362 (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
4365 ;; Return rainbow colors
4366 ((1) (x11-color 'red )) ; for C
4367 ((2) (x11-color 'orange )) ; for D
4368 ((3) (x11-color 'yellow )) ; for E
4369 ((4) (x11-color 'green )) ; for F
4370 ((5) (x11-color 'blue )) ; for G
4371 ((6) (x11-color 'purple )) ; for A
4372 ((0) (x11-color 'violet )) ; for B
4376 % Arrange to obtain color from color-notehead procedure
4377 \override NoteHead #'color = #color-notehead
4378 a2 b | c2 d | e2 f | g2 a |
4382 Vous trouverez dans @rextend{Fonctions de rappel} d'autres exemples
4383 d'utilisation de ces interfaces programmables.