1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
4 Translation of GIT committish: ab336761427b7214e133ff06b3592afa75eda1cf
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. For details, see the Contributors'
8 Guide, node Updating translation committishes..
13 @c Translators: Valentin Villenave, Nicolas Klutchnikoff, Damien Heurtebise
14 @c Translation checkers: Jean-Charles Malahieude, John Mandereau
15 @c Translation status: post-GDP
17 @node Retouche de partition
18 @chapter Retouche de partition
19 @translationof Tweaking output
21 Ce chapitre indique comment modifier le résultat obtenu.
22 LilyPond offre de nombreuses possibilités de réglages, permettant
23 théoriquement de modifier chaque élément de votre partition.
26 * Retouches élémentaires::
27 * Le manuel de référence des propriétés internes::
28 * Apparence des objets::
29 * Positionnement des objets::
30 * Espacement vertical::
31 * Collisions d'objets::
36 @node Retouches élémentaires
37 @section Retouches élémentaires
38 @translationof Tweaking basics
41 * Introduction aux retouches::
42 * Objets et interfaces::
43 * Conventions de nommage des objets et propriétés::
44 * Méthodes de retouche::
48 @node Introduction aux retouches
49 @subsection Introduction aux retouches
50 @translationof Introduction to tweaks
52 LilyPond regroupe sous le terme de @qq{retouches} (@emph{tweaks} en
53 anglais) les différents moyens dont dispose l'utilisateur pour
54 intervenir sur l'interprétation du fichier d'entrée et pour modifier
55 l'apparence du fichier de sortie. Certaines retouches sont très
56 simples à mettre en œuvre ; d'autres sont plus complexes. Mais
57 à elles toutes, elles permettent d'obtenir tout ce qu'on veut en matière
60 Dans ce chapitre, nous traitons des concepts de base nécessaires
61 pour comprendre l'art de la retouche. Puis nous présentons de
62 nombreuses commandes déjà prêtes, qu'il suffit de recopier pour
63 obtenir un résultat identique dans vos partitions ; nous en profitons
64 pour expliquer comment ces commandes ont été construites, si bien que
65 vous pouvez apprendre par la même occasion à développer vos propres
68 Avant de vous lancer dans ce chapitre, il peut être utile de revoir la
69 section @ref{Contextes et graveurs}, dans la mesure où les contextes,
70 graveurs et autres propriétés qui y sont décrits, sont indispensables
71 pour comprendre et construire les retouches.
74 @node Objets et interfaces
75 @subsection Objets et interfaces
76 @translationof Objects and interfaces
83 @cindex propriétés des objets
84 @cindex objet, propriétés
85 @cindex objet de rendu
86 @cindex rendu, objets de
88 Toute retouche implique que l'on modifie les opérations internes
89 et les structures du programme LilyPond. Nous allons donc, pour
90 commencer, présenter certains termes qui servent à décrire ces
91 opérations internes et ces structures.
93 Le terme @qq{Objet} est un terme générique qui fait référence à
94 une multitude de structures internes mises en place par LilyPond
95 durant la compilation d'un fichier d'entrée. Ainsi, quand une
96 commande du type @code{\new Staff} apparaît, un nouvel objet du type
97 @code{Staff} est créé. Cet objet @code{Staff} contient alors toutes les
98 propriétés associées à cette portée, par exemple son nom et son armure,
99 ainsi que le détail des graveurs qui ont été désignés pour fonctionner
100 dans ce contexte de portée. Certains objets peuvent contenir les
101 propriétés de tous les autres contextes, comme les objets @code{Voice},
102 les objets @code{Score}, les objets @code{Lyrics} ; d'autres se
103 rapportent à tous les éléments de notation, comme les barres de mesure,
104 les liaisons, les nuances, etc. Chaque objet dispose de son propre
105 échantillon de valeurs pour le réglage des propriétés.
107 Certains types d'objet portent des noms spécifiques. Les objets qui se
108 rapportent à des éléments de notation sur le fichier de sortie, comme
109 les notes, les hampes, les liaisons de phrasé ou de prolongation, les
110 doigtés, les clefs, etc. sont appelés @qq{Objets de rendu} ; ils sont
111 aussi connus sous le nom d'@qq{Objets graphiques} (en anglais :
112 @emph{Graphical objects} ou @emph{Grobs} pour faire court). Ce sont
113 bien des objets au sens générique ci-dessus et, en tant que tels, ils
114 reçoivent des propriétés qui leur sont associées, comme leur position,
115 leur taille, leur couleur etc.
117 Certains objets de rendu, comme les liaisons de phrasé, les soufflets
118 de crescendo, les marques d'octaviation et beaucoup d'autres
119 @emph{grobs}, ont pour particularité de ne pas se situer à un seul et
120 unique endroit -- ils ont un point de départ, un point d'arrivée, et
121 éventuellement d'autres propriétés relatives à leur forme. Ces objets
122 avec une forme étendue sont appelés des bandeaux (@emph{Spanners} en
125 Il reste à expliquer ce que sont les @qq{interfaces}. De nombreux
126 objets, qui peuvent être très différents les uns des autres, ont pour
127 point commun de devoir être compilés simultanément. Par exemple, tous
128 les @emph{grobs} ont une couleur, une taille, une position, etc. et
129 toutes ces propriétés sont compilées simultanément durant
130 l'interprétation du fichier d'entrée par LilyPond. Pour alléger ces
131 opérations internes, ces actions et propriétés communes sont regroupées
132 en un objet appelé @code{grob-interface}. Il existe beaucoup d'autres
133 regroupements de propriétés communes dans le genre de celui-ci, chacun
134 portant un nom qui se termine par @code{interface}. En tout, on en
135 compte plus d'une centaine. Nous verrons plus loin en quoi c'est
136 intéressant et utile pour l'utilisateur.
138 Ainsi s'achève le tour des principaux termes relatifs aux objets
139 que nous serons amenés à utiliser dans ce chapitre.
142 @node Conventions de nommage des objets et propriétés
143 @subsection Conventions de nommage des objets et propriétés
144 @translationof Naming conventions of objects and properties
146 @cindex conventions de nommage des objets
147 @cindex conventions de nommage des propriétés
148 @cindex objets, conventions de nommage
149 @cindex propriétés, conventions de nommage
151 Nous avons eu un aperçu, dans @ref{Contextes et graveurs}, de
152 la façon de nommer les objets. Voici maintenant une liste de
153 référence des types d'objets et de propriétés les plus courants,
154 avec leurs conventions de nommage et quelques exemples
155 de cas concrets. La lettre @var{A} représente n'importe quel
156 caractère alphabétique majuscule, et les lettres @var{aaa}
157 un nombre indéterminé de caractères alphabétiques minuscules.
158 Les autres caractères sont à prendre tels qu'ils se présentent.
160 @multitable @columnfractions .33 .33 .33
161 @headitem Type d'objet/propriété
162 @tab Convention de nommage
165 @tab Aaaa ou AaaaAaaaAaaa
166 @tab Staff, GrandStaff
167 @item Objets de rendu
168 @tab Aaaa ou AaaaAaaaAaaa
171 @tab Aaaa_aaa_engraver
172 @tab Clef_engraver, Note_heads_engraver
174 @tab aaa-aaa-interface
175 @tab grob-interface, break-aligned-interface
176 @item Propriétés de contexte
177 @tab aaa ou aaaAaaaAaaa
178 @tab alignAboveContext, skipBars
179 @item Propriétés d'objet de rendu
180 @tab aaa ou aaa-aaa-aaa
181 @tab direction, beam-thickness
184 Comme nous le verrons bientôt, les propriétés des différents
185 types d'objet sont modifiées par des commandes différentes, si bien
186 qu'il est bon de savoir reconnaître le type d'un objet ou d'une
187 propriété en fonction de son nom.
190 @node Méthodes de retouche
191 @subsection Méthodes de retouche
192 @translationof Tweaking methods
194 @cindex retouches, méthodologie
195 @cindex méthodes de retouche
198 * La commande override::
199 * La commande revert::
201 * La commande overrideProperty::
202 * La commande tweak::
206 @node La commande override
207 @unnumberedsubsubsec La commande @code{@bs{}override}
208 @translationof The override command
210 @cindex override, commande
211 @cindex override, syntaxe
216 Dans @ref{Modification des propriétés d'un contexte} et dans
217 @ref{Ajout et suppression de graveurs}, nous avons déjà rencontré les
218 commandes @code{\set} et @code{\with}, qui servent à changer les
219 propriétés des @strong{contextes} et à supprimer ou ajouter des
220 @strong{graveurs}. Voici maintenant d'autres commandes plus
223 La commande pour changer les propriétés des @strong{objets de rendu}
224 est @code{\override}. Du fait que cette commande modifie en profondeur
225 les propriétés internes de LilyPond, sa syntaxe n'est pas aussi simple
226 que pour les commandes vues précédemment. Elle a besoin de savoir avec
227 précision quelle est la propriété à modifier, pour quel objet et dans
228 quel contexte, et quelle doit être sa nouvelle valeur. Voyons de quoi
231 La syntaxe générale de cette commande est :
234 \override @var{Contexte}.@var{ObjetDeRendu}.@var{propriété-rendu} = #@var{valeur}
238 Elle attribue à la propriété appelée @var{propriété-rendu}, associée à
239 l'objet @var{ObjetDeRendu}, appartenant lui-même au contexte
240 @var{Contexte}, une valeur @var{valeur}.
242 Le contexte @var{Contexte} peut être omis (c'est généralement
243 le cas) quand il n'y a pas d'ambiguïté et qu'il s'agit d'un contexte
244 de très bas niveau, comme @code{Voice}, @code{ChordNames} ou
245 @code{Lyrics}. Dans les exemples qui suivent, le contexte sera très
246 souvent omis. Nous verrons plus tard dans quelles circonstances il doit
247 impérativement être indiqué.
249 Les sections ci-dessous traitent largement des propriétés et de leurs
250 valeurs -- voir @ref{Types de propriétés} -- mais, pour illustrer la
251 mise en forme et l'utilisation de ces commandes, nous nous limiterons à
252 n'employer que quelques propriétés et valeurs simples, facilement
255 Lilypond reconnaît comme expression primaire les éléments musicaux
256 tels que les notes, durées et annotations (les @emph{markups}).
257 D'autres expressions de base comme les nombres, chaînes de
258 caractères et listes sont gérées en « mode Scheme », mode appelé
259 en faisant précéder une valeur par un @samp{#}. Bien que
260 certaines valeurs puissent disposer d'une représentation tout à
261 fait valide dans le mode musical de LilyPond, les exemples de ce
262 manuel mentionnent un@samp{#} pour plus de clarté. Pour de plus
263 amples informations quant au mode Scheme, consultez
264 @rextend{Syntaxe Scheme dans LilyPond}.
266 La commande @code{\override} est la plus fréquemment utilisée pour
267 faire des retouches, et pratiquement tout le reste de ce chapitre
268 aura pour but de montrer, à travers des exemples, comment
269 l'utiliser. L'exemple ci-dessous change la couleur des têtes de
272 @cindex couleur,exemple d'utilisation de la propriété
273 @cindex NoteHead, exemple de dérogation
275 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
277 \override NoteHead.color = #red
279 \override NoteHead.color = #green
284 @node La commande revert
285 @unnumberedsubsubsec La commande @code{@bs{}revert}
286 @translationof The revert command
288 @cindex revert, commande
293 Une fois qu'elle a été modifiée, la propriété conserve sa nouvelle
294 valeur jusqu'à ce qu'elle soit à nouveau modifiée ou qu'elle rencontre
295 la commande @code{\revert}. La commande @code{\revert} obéit à
296 la syntaxe ci-dessous et ramène la valeur de la propriété à sa valeur
297 d'origine. Attention : dans le cas où plusieurs @code{\override}
298 ont été employés, il ne s'agit pas de la valeur précédente mais bien de
299 la valeur par défaut.
302 \revert @var{Contexte}.@var{ObjetDeRendu}.@var{propriété-de-rendu}
305 Tout comme pour la commande @code{\override}, la mention du
306 @var{Contexte} est souvent facultative. Elle sera omise dans de
307 nombreux exemples ci-dessous. Voici un exemple qui ramène la
308 couleur des deux dernières notes à leur valeur par défaut :
310 @cindex couleur,exemple d'utilisation de la propriété
311 @cindex NoteHead, exemple de dérogation
313 @lilypond[quote,verbatim,relative=1]
315 \override NoteHead.color = #red
317 \override NoteHead.color = #green
319 \revert NoteHead.color
324 @node Le préfixe once
325 @unnumberedsubsubsec Le préfixe @code{@bs{}once}
326 @translationof The once prefix
331 Les commandes @code{\override} et @code{\set} peuvent supporter
332 toutes les deux le préfixe @code{\once}. Celui-ci a pour fonction de
333 n'appliquer la commande @code{\override} ou @code{\set} qu'à
334 l'instant musical en cours, avant que la propriété ne reprenne
335 sa valeur antérieure -- qui n'est pas forcément la valeur par défaut
336 lorsqu'un autre @code{\override} est toujours effectif. Toujours à
337 partir du même exemple, il est possible de ne changer la couleur que
340 @cindex couleur,exemple d'utilisation de la propriété
341 @cindex NoteHead, exemple de dérogation
343 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
345 \override NoteHead.color = #red
347 \once \override NoteHead.color = #green
349 \revert NoteHead.color
353 Le préfixe @code{\once} peut s'utiliser avec de nombreuses
354 commandes prédéfinies pour en limiter les effets à un seul instant
357 @lilypond[quote,verbatim,relative=1]
366 Les commandes prédéfinies de la forme @code{\@dots{}Neutral},
367 @code{\@dots{}Off} et @code{\un@dots{}} font appel, en interne, à
368 une instruction @code{\revert} plutôt que @code{\override} ; les
369 préfixer d'un @code{\once} est donc sans effet.
372 @node La commande overrideProperty
373 @unnumberedsubsubsec La commande @code{@bs{}overrideProperty}
374 @translationof The overrideProperty command
376 @cindex overrideProperty, commande
378 @funindex \overrideProperty
379 @funindex overrideProperty
381 Il existe une autre forme de commande @code{\override},
382 @code{\overrideProperty}, qui est parfois utile. Nous la mentionnons
383 ici par souci d'exhaustivité ; pour le détail, voir
384 @rextend{Retouches complexes}.
386 @c Maybe explain in a later iteration -td
389 @node La commande tweak
390 @unnumberedsubsubsec La commande @code{@bs{}tweak}
391 @translationof The tweak command
393 @cindex tweak, commande
398 La dernière commande disponible pour les retouches est
399 @code{\tweak}. Elle sert à changer les propriétés d'objets qui
400 surviennent simultanément dans la musique, comme par exemple les
401 notes d'un accord. La commande @code{\override} modifierait toutes
402 les notes de l'accord, tandis que @code{\tweak} permet de ne modifier
403 que l'élément immédiatement suivant dans la chaîne de saisie.
405 Voici un exemple. Supposons que nous voulions changer la taille de
406 la tête de note du milieu (le mi) dans un accord de do majeur. Voyons
407 d'abord ce que donnerait @code{\once \override} :
409 @cindex font-size, exemple d'utilisation de la propriété
410 @cindex NoteHead, exemple de dérogation
412 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
414 \once \override NoteHead.font-size = #-3
419 Nous voyons que @code{\override} modifie @strong{toutes} les têtes
420 de notes de l'accord, car toutes les notes de l'accord surviennent au
421 même @strong{instant musical} et que la fonction de @code{\once}
422 est de faire porter la modification sur tous les objets du type spécifié
423 qui surviennent au même instant musical, comme le fait la commande
424 @code{\override} elle-même.
426 La commande @code{\tweak} opère différemment. Elle agit
427 sur l'élément immédiatement suivant dans la chaîne de saisie. Dans sa
428 forme la plus simple, elle ne fonctionne que sur les objets créés
429 directement à partir de l'élément suivant dans la chaîne de saisie,
430 c'est-à-dire essentiellement des têtes de notes et des articulations.
432 Pour reprendre notre exemple, la taille de la note du milieu d'un
433 accord peut être modifiée de cette manière :
435 @cindex font-size, exemple d'utilisation de la propriété
436 @cindex @code{\tweak}, exemple
438 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
440 <c \tweak font-size #-3 e g>4
443 Vous noterez que la syntaxe de @code{\tweak} est différente de
444 celle de la commande @code{\override}. Ni le contexte,
445 ni l'objet n'ont besoin d'être spécifiés ; au contraire, cela
446 produirait une erreur si on le faisait. Tous deux sont sous-entendus
447 par l'élément suivant dans la chaîne de saisie. Il n'est pareillement
448 pas nécessaire d'insérer un signe égal. La syntaxe générale
449 de la commande @code{\tweak} est donc, tout simplement :
452 \tweak @var{propriété-de-rendu} #@var{valeur}
455 La commande @code{\tweak} est aussi utilisée quand on veut, dans
456 une série d'articulations, n'en modifier qu'une seule. Ainsi :
458 @cindex couleur, exemple d'utilisation de la propriété
459 @cindex @code{\tweak}, exemple
461 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
463 -\tweak color #red ^"Red"
464 -\tweak color #green _"Green"
468 Attention : la commande @code{\tweak} doit être précédée d'une
469 marque d'articulation, comme si elle-même était une articulation. Dans
470 la cas de multiples positionnements forcés (@code{^} ou @code{_}), celui
471 le plus à gauche aura préséance puisqu'il sera appliqué en dernier.
473 @cindex @code{\tweak} et altération
474 @cindex @code{\tweak} et objet de rendu spécifique
476 Les objets tels que hampes et altérations seront créés postérieurement à
477 l'événement qui survient. L'utilisation de la commande @code{\tweak}
478 sur de tels objets indirectement créés peut se faire en nommant
479 explicitement l'objet de rendu, si tant est que LilyPond puisse remonter
480 jusqu'à l'événement originel :
482 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
483 <\tweak Accidental.color #red cis4
484 \tweak Accidental.color #green es
488 Cette forme développée de la commande @code{\tweak} correspond à :
490 \tweak @var{objet-de-rendu}.@var{propriété-de-rendu} @var{valeur}
493 @cindex nolets imbriqués
494 @cindex triolets imbriqués
495 @cindex crochet de nolet
496 @cindex nolet, crochet
497 @cindex triolet, crochet
499 @funindex TupletBracket
501 Quand plusieurs nolets sont imbriqués et commencent au même instant
502 musical, c'est encore la commande @code{\tweak} qui est utilisée pour
503 changer l'apparence de l'un d'entre eux. Dans l'exemple suivant, le
504 long crochet de nolet et le premier des trois crochets courts commencent
505 au même instant musical ; une commande @code{\override} s'appliquerait
506 donc à la fois aux deux. En revanche, @code{\tweak} permet de les
507 dissocier. La première commande @code{\tweak} indique que le long
508 crochet doit être placé au-dessus des notes, et la seconde indique que
509 le coefficient de nolet doit être imprimé en rouge sur le premier
510 crochet de triolet court.
512 @cindex @code{\tweak}, exemple
513 @cindex direction, exemple d'utilisation de la propriété
514 @cindex couleur, exemple d'utilisation de la propriété
516 @lilypond[quote,ragged-right,verbatim,fragment,relative=2]
520 \tuplet 3/2 { c8[ c c] }
521 \tuplet 3/2 { c8[ c c] }
522 \tuplet 3/2 { c8[ c c] }
526 Si les nolets imbriqués ne commencent pas au même moment,
527 leur apparence peut alors être modifiée de la façon habituelle,
528 avec la commande @code{\override} :
530 @cindex texte, exemple d'utilisation de la propriété
531 @cindex tuplet-number, exemple de fonction
532 @cindex transparence, exemple d'utilisation de la propriété
533 @cindex TupletNumber, exemple de dérogation
535 @lilypond[quote,ragged-right,verbatim,fragment,relative=1]
536 \tuplet 3/2 { c8[ c c] }
537 \once \override TupletNumber.text = #tuplet-number::calc-fraction-text
541 \once \override TupletNumber.transparent = ##t
542 \tuplet 3/2 { c8[ c c] }
543 \tuplet 3/2 { c8[ c c] }
549 @ruser{La commande d'affinage (@emph{tweak})}.
552 @node Le manuel de référence des propriétés internes
553 @section Le manuel de référence des propriétés internes
554 @translationof The Internals Reference manual
556 @cindex Références internes
559 * Propriétés des objets de rendu::
560 * Propriétés listées par interface::
561 * Types de propriétés::
565 @node Propriétés des objets de rendu
566 @subsection Propriétés des objets de rendu
567 @translationof Properties of layout objects
569 @cindex propriétés des objets de rendu
570 @cindex propriétés des objets graphiques (grobs)
571 @cindex grobs, propriétés
572 @cindex objets de rendu, propriétés
573 @cindex Manuel des références internes
575 Imaginons que votre partition contienne une liaison trop fine à votre
576 goût et que vous vouliez la rendre plus épaisse. Comment vous y
577 prendre ? Vous êtes convaincu, avec tout ce qui a été dit sur la
578 souplesse de LilyPond, qu'une telle retouche est réalisable et
579 vous vous dites qu'elle fera sans doute intervenir la commande
580 @code{\override}. Mais existe-t-il une propriété épaisseur qui
581 s'applique à une liaison et, dans l'affirmative, comment faire pour la
582 modifier ? C'est là qu'intervient la Référence des propriétés
583 internes. Elle contient toutes les informations dont vous avez besoin
584 pour construire n'importe quelle commande @code{\override}.
586 Avant de nous plonger dans la Référence des propriétés
587 internes, un mot d'avertissement. Il s'agit d'un document de
588 @strong{références}, de sorte qu'il ne contient pas ou peu
589 d'explications : son but est de présenter les informations de
590 façon précise et concise. Cela peut paraître décourageant
591 à première vue. Pas d'inquiétude ! Les conseils et les
592 explications fournis ici vous permettent de retrouver par vous-même les
593 informations dans la Référence des propriétés internes. Il
594 suffit d'un peu de pratique.
596 @cindex override, exemple
597 @cindex dérogation, exemple
598 @cindex Références internes, exemple d'utilisation
599 @cindex @code{\addlyrics} -- exemple
601 Prenons un exemple concret tiré d'un morceau de musique connu :
603 @c Mozart, Die Zauberflöte Nr.7 Duett
605 @lilypond[quote,verbatim,relative=2]
610 r4 bes8 bes[( g]) g |
611 g8[( es]) es d[( f]) as |
615 The man who | feels love's sweet e -- | mo -- tion
620 Admettons que nous voulions rendre les traits de liaison plus épais.
621 Est-ce possible ? Une liaison est assurément un objet de rendu, si
622 bien que la question est @qq{Existe-t-il une propriété attachée aux
623 liaisons et qui en contrôle l'épaisseur ?} Pour y répondre, nous
624 consultons la Référence des propriétés internes (ou RPI pour faire
627 Vous trouverez sur le site de LilyPond @uref{http://lilypond.org} la
628 RPI correspondant à votre version du programme. Allez sur la page
629 Documentation et cliquez sur Référence des propriétés internes.
630 Pour l'apprentissage, mieux vaut utiliser la version HTML standard,
631 et non la @qq{page unique en anglais} ou le PDF. Durant la lecture
632 des prochains paragraphes, il vous est conseillé de vous y reporter
633 réellement afin que les explications prennent tout leur sens.
635 En dessous du bandeau d'en-tête figurent cinq liens. Cliquez sur le
636 lien vers le @emph{Backend}, où se trouvent les informations sur les
637 objets de rendu. En dessous du titre @strong{Backend}, choisissez
638 alors le lien vers @emph{Tous les objets de rendu}. La page qui s'ouvre
639 énumère, dans l'ordre alphabétique, tous les objets utilisés dans votre
640 version de LilyPond. Cliquez sur Liaisons (@emph{Slurs} en anglais),
641 et les propriétés des liaisons apparaîtront.
643 Il existe un autre moyen de trouver cette page, à partir du Manuel de
644 notation. Une des pages qui traitent des liaisons contient un lien vers
645 la Référence des propriétés internes, qui mène directement à cette
646 page. Mais lorsque vous connaissez le nom de l'objet à retoucher, le
647 plus simple est de consulter la RPI.
649 La page de la RPI sur les liaisons commence par préciser que les objets
650 « Liaison » sont créés par le graveur Slur_engraver. Vient ensuite la
651 liste des réglages standard ; vous y trouverez la propriété susceptible
652 de contrôler l'épaisseur des traits de liaison.
655 @code{thickness} (nombre)
657 Épaisseur de ligne, généralement mesurée en @code{line-thickness}
660 Voilà qui semble approprié pour changer l'épaisseur (@emph{thickness} en
661 anglais). On apprend que la valeur de @code{thickness} est un simple
662 nombre (@emph{number}), qu'elle est par défaut définie à 1,2 et que
663 l'unité de mesure est fixée par une autre propriété appelée
664 @code{line-thickness}.
666 Comme il a été indiqué, on ne trouve que peu, voire pas du tout
667 d'explication dans la RPI, mais nous en savons assez pour essayer
668 de changer l'épaisseur de la liaison. Comme nous l'avons vu, le
669 nom de l'objet est @code{Slur}, le nom de la propriété à changer
670 est @code{thickness} et la nouvelle valeur sera un nombre supérieur
671 à @code{1.2} si l'on veut augmenter l'épaisseur du trait.
673 Pour construire la commande @code{\override}, il suffit donc de
674 remplacer les valeurs que nous avons trouvées en guise de noms, en
675 laissant de côté le contexte. Commençons par une valeur très élevée
676 dans un premier temps, pour nous assurer que la commande fonctionne.
680 \override Slur.thickness = #5.0
683 N'oublions pas le @code{#} qui doit précéder la nouvelle valeur.
685 La dernière question est : @qq{Où placer cette commande ?}
686 Tant qu'on n'est pas sûr de soi, la meilleure réponse est @qq{À
687 l'intérieur de l'expression musicale, avant la première liaison et
688 proche d'elle.} Essayons :
690 @cindex Slur, exemple de dérogation
691 @cindex thickness, exemple d'utilisation de la propriété
693 @lilypond[quote,verbatim,relative=2]
698 % Increase thickness of all following slurs from 1.2 to 5.0
699 \override Slur.thickness = #5.0
700 r4 bes8 bes[( g]) g |
701 g8[( es]) es d[( f]) as |
705 The man who | feels love's sweet e -- | mo -- tion
711 et nous constatons que le trait de liaison est beaucoup plus épais.
713 Telle est la façon normale de construire des commandes
714 @code{\override}. Comme nous aurons l'occasion de le voir
715 par la suite, le problème est parfois plus complexe. Dans
716 l'immédiat, nous en savons assez pour construire nos propres
717 commandes -- mais il faut encore s'exercer. Les exemples
718 suivants sont là dans cette intention.
721 @subsubsubheading Détermination du contexte adéquat
722 @c VO Finding the context
724 @cindex contexte, détermination du
725 @cindex contexte, identification correcte du
727 Tout d'abord, de quoi avions-nous besoin pour préciser le contexte ? À
728 quoi devait-il ressembler ? Gageons que les liaisons appartiennent au
729 contexte Voix, dans la mesure où elles sont étroitement liées à une
730 ligne mélodique, mais comment en être sûr ? Pour répondre à cette
731 question, revenons en haut de la page de la RPI consacrée aux liaisons ;
732 il est écrit : @qq{Les objets Liaison sont créés par le graveur
733 Slur_engraver}. Ainsi les liaisons seront créées dans n'importe quel
734 contexte où se trouve le @code{Slur_engraver}. Suivons le lien vers la
735 page @code{Slur_engraver}. Tout en bas, on lit que le
736 @code{Slur_engraver} est un élément appartenant à sept contextes Voix,
737 dont le contexte de voix standard, @code{Voice}. Notre hypothèse était
738 donc juste. Et parce que @code{Voice} est un contexte de très bas
739 niveau, qu'il est activé sans ambiguïté par le fait que l'on est
740 en train de saisir des notes, on peut ici ne pas le mentionner.
743 @subsubsubheading Redéfinition pour une seule occurrence
744 @c VO Overriding once only
746 @cindex dérogation pour une seule fois
747 @cindex usage unique, dérogation à
752 Dans le dernier exemple ci-dessus, @emph{toutes} les liaisons étaient
753 plus épaisses. Et si on veut épaissir uniquement la première liaison ?
754 On recourt alors à la commande @code{\once}. Placée juste avant la
755 commande @code{\override}, elle lui indique de ne changer que la liaison
756 commençant avec la note @strong{juste après}. Si la note juste après
757 n'ouvre pas une liaison, la commande sera sans aucun effet -- elle ne
758 reste pas en mémoire jusqu'à la prochaine liaison, elle est purement et
759 simplement ignorée. Il faut donc que la commande introduite par
760 @code{\once} soit insérée comme suit :
762 @cindex Slur, exemple de dérogation
763 @cindex thickness, exemple d'utilisation de la propriété
764 @cindex Liaison, exemple de dérogation
765 @cindex Épaisseur, exemple d'utilisation de la propriété
767 @lilypond[quote,verbatim,relative=2]
773 % Increase thickness of immediately following slur only
774 \once \override Slur.thickness = #5.0
776 g8[( es]) es d[( f]) as |
780 The man who | feels love's sweet e -- | mo -- tion
786 Alors seule la première liaison est rendue plus épaisse.
788 La commande @code{\once} peut aussi être utilisée devant la commande
792 @subsubsubheading Rétablissement
796 @cindex rétablissement
798 @cindex défaut, retour aux propriétés par
803 Et si l'on voulait que les deux premières liaisons soient plus
804 épaisses ? On pourrait bien sûr utiliser deux commandes, chacune
805 précédée de @code{\once} et placée juste avant la note par laquelle
808 @cindex liaison, exemple de dérogation
809 @cindex thickness, exemple d'utilisation de la propriété
810 @cindex épaisseur, exemple d'utilisation
812 @lilypond[quote,verbatim,relative=2]
818 % Increase thickness of immediately following slur only
819 \once \override Slur.thickness = #5.0
821 % Increase thickness of immediately following slur only
822 \once \override Slur.thickness = #5.0
823 g8[( es]) es d[( f]) as |
827 The man who | feels love's sweet e -- | mo -- tion
833 mais on peut aussi, au lieu de la commande @code{\once}, utiliser après
834 la seconde liaison la commande @code{\revert}, qui ramène la propriété
835 @code{thickness} à sa valeur par défaut :
837 @cindex Slur, exemple de dérogation
838 @cindex thickness, exemple d'utilisation de la propriété
839 @cindex liaison, exemple de dérogation
840 @cindex épaisseur, exemple d'utilisation
842 @lilypond[quote,verbatim,relative=2]
848 % Increase thickness of all following slurs from 1.2 to 5.0
849 \override Slur.thickness = #5.0
852 % Revert thickness of all following slurs to default of 1.2
853 \revert Slur.thickness
858 The man who | feels love's sweet e -- | mo -- tion
864 N'importe quelle propriété modifiée par @code{\override} peut ainsi
865 être ramenée, grâce à la commande @code{\revert}, à sa valeur par
868 Ici s'achève notre introduction à la RPI et aux retouches
869 simples. Vous trouverez d'autres exemples dans les prochaines
870 sections de ce chapitre ; ils vous permettront, d'une part,
871 d'apprendre à connaître un peu mieux la RPI et, d'autre part, de
872 vous entraîner un peu plus à y chercher les informations. Ces
873 exemples seront progressivement accompagnés d'explications et
874 introduiront des termes nouveaux.
877 @node Propriétés listées par interface
878 @subsection Propriétés listées par interface
879 @translationof Properties found in interfaces
882 @cindex interfaces, propriétés des
883 @cindex propriétés des interfaces
885 Supposons maintenant que nous voulions imprimer des paroles en italique.
886 Quelle formulation de la commande @code{\override} allons-nous
887 utiliser ? Nous consultons en premier lieu, comme précédemment, la
888 page de la RPI qui contient la liste @qq{Tous les objets de rendu}, et
889 recherchons un objet qui contrôle les paroles. Nous trouvons
890 @code{LyricText}, qui semble approprié. Nous cliquons dessus et nous
891 voyons apparaître les différentes propriétés des paroles, parmi
892 lesquelles @code{font-series} et @code{font-size}. Mais aucune ne
893 propose l'italique. Car la mise en forme des caractères est une
894 propriété commune à tous les objets d'écriture, si bien que, au lieu de
895 figurer dans tous les objets de rendu, elle est regroupée avec d'autres
896 propriétés semblables et placée dans une @strong{Interface}, la
897 @code{font-interface}.
899 Il nous faut donc apprendre à trouver les propriétés des interfaces
900 et découvrir les objets qui utilisent les propriétés de ces interfaces.
902 Retournons à la page de la RPI qui traite des paroles
903 (@emph{LyricText}). En bas de la page est dressée sous forme de liens
904 la liste des interfaces qui concernent LyricText. Cette liste comporte
905 plusieurs entrées, dont @code{font-interface}. En cliquant dessus, nous
906 voyons apparaître les différentes propriétés associées à cette
907 interface, qui sont en même temps les propriétés de tous les objets qui
908 s'y rapportent, parmi lesquels LyricText.
910 Nous avons alors sous les yeux tous les réglages des propriétés qui
911 contrôlent les polices de caractères, et notamment
912 @code{font-shape(symbole)}, où @code{symbole} peut prendre la valeur
913 @code{upright}, @code{italic} ou @code{caps}.
915 Vous remarquerez que @code{font-series} et @code{font-size} figurent
916 aussi dans la liste. La question qui ne manque pas de se poser
917 est : @qq{Comment se fait-il que les propriétés @code{font-series}
918 et @code{font-size} se retrouvent à la fois dans @code{LyricText} et
919 dans l'interface @code{font-interface} alors que ce n'est pas le cas
920 pour @code{font-shape} ?} La réponse est que lorsqu'un objet
921 @code{LyricText} est créé, les valeurs globales par défaut de
922 @code{font-series} et @code{font-size} sont modifiées, mais pas celles
923 de @code{font-shape}. Les possibilités de modification dans
924 @code{LyricText} ne concernent donc que les valeurs à appliquer à
925 @code{LyricText}. Les autres objets qui dépendent de
926 @code{font-interface} fixeront leurs propriétés différemment lorsqu'ils
929 Voyons maintenant si nous sommes en mesure de formuler la commande
930 @code{\override} pour mettre les paroles en italique. L'objet est
931 @code{LyricText}, la propriété est @code{font-shape} et la valeur est
932 @code{italic}. Comme auparavant, nous laissons de côté le contexte.
934 Signalons rapidement -- même si cette remarque est importante -- que
935 certaines valeurs de propriétés se présentent sous forme de
936 symboles, comme @code{italic}, et doivent donc être précédées
937 d'une simple apostrophe, Ces symboles seront alors interprétés
938 comme tels par LilyPond. À ne pas confondre avec les chaînes de
939 caractères libres qui se présentent comme @code{"un texte
940 libre"} ; pour plus de détails sur les symboles et les chaînes de
941 caractères, voir le @rextend{Tutoriel Scheme}.
943 Ainsi, la commande @code{\override} pour mettre les paroles en italique
947 \override LyricText.font-shape = #'italic
951 et doit être placée juste devant et tout près des paroles à modifier,
954 @cindex font-shape, exemple d'utilisation de la propriété
955 @cindex italic, exemple
956 @cindex LyricText, exemple de dérogation
957 @cindex @code{\addlyrics}, exemple
959 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
964 r4 bes8 bes[( g]) g |
965 g8[( es]) es d[( f]) as |
969 \override LyricText.font-shape = #'italic
970 The man who | feels love's sweet e -- | mo -- tion
976 et voilà les paroles en italiques.
978 @warning{Dans la saisie des paroles, pensez à toujours laisser une
979 espace entre la dernière syllabe et l'accolade fermante.}
983 @rextend{Tutoriel Scheme}.
986 @node Types de propriétés
987 @subsection Types de propriétés
988 @translationof Types of properties
990 @cindex propriété, types de
992 Nous avons vu jusqu'à maintenant deux types de propriétés :
993 @code{nombre} et @code{symbole}. Pour pouvoir fonctionner, la valeur
994 associée à une propriété doit correspondre au type attendu et suivre les
995 règles liées à ce type. Le type de propriété est toujours donné entre
996 parenthèses après le nom de propriété dans la RPI. Voici une liste des
997 différents types de propriétés, avec les règles qui les régissent et
998 quelques exemples d'utilisation. Il faut, bien sûr, toujours ajouter un
999 symbole @emph{hash} (@code{#}) devant ces valeurs lors de la saisie de
1000 la commande @code{\override}, ce même si cette valeur comporte
1001 déjà un @code{#} en premier caractère. Les exemples ici présentés
1002 ne sont que de simples illustrations ; l'utilisation de Scheme
1003 pour obtenir des valeurs fait l'objet de la rubrique
1004 @rextend{Scheme et les calculs}.
1006 @multitable @columnfractions .2 .45 .35
1007 @headitem Type de propriété
1010 @item Booléenne (@emph{Boolean} en anglais)
1011 @tab Vrai (@emph{true} en anglais) ou Faux (@emph{false} en anglais),
1012 sous la forme @code{#t} ou @code{#f}
1013 @tab @code{#t}, @code{#f}
1014 @item Dimension (en espaces de portée)
1015 @tab Un nombre décimal (en unités de lignes de portée)
1016 @tab @code{2.5}, @code{0.34}
1018 @tab Une direction valide ou son équivalent numérique (@code{0}
1019 ou @code{CENTER} indiquent une position neutre)
1020 @tab @code{LEFT}, @code{CENTER}, @code{UP}, @code{1}, @w{@code{-1}}
1021 @item Entier (@emph{Integer} en anglais)
1022 @tab Un nombre entier
1023 @tab @code{3}, @code{-1}
1025 @tab Une séquence de constantes ou symboles séparés par une
1026 espace, encadrées par des parenthèses et précédées par une apostrophe
1027 @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'()},
1028 @code{'(1.0 0.25 0.5)}
1029 @item Markup (ou étiquette)
1030 @tab Toute commande @code{\markup} valide
1031 @tab @code{\markup @{ \italic "cresc." @}}, @code{"bagpipe"}
1032 @item Durée (@emph{Moment} en anglais)
1033 @tab Une durée de note construite avec la fonction make-moment
1034 @tab @code{(ly:make-moment 1/4)}, @code{(ly:make-moment 3/8)}
1036 @tab Une valeur positive ou négative, qui peut être décimale
1037 @tab @code{3}, @w{@code{-2.45}}
1038 @item Paire (de nombres)
1039 @tab Deux nombres séparées par @qq{espace point espace}, encadrés
1040 par des parenthèses et précédés par une apostrophe
1041 @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
1043 @tab L'un des symboles autorisés pour cette propriété, précédé par une
1045 @tab @code{'italic}, @code{'inside}
1046 @item Inconnu (@emph{Unknown} en anglais)
1047 @tab Un processus, ou @code{#f} pour empêcher toute action
1048 @tab @code{bend::print}, @code{ly:text-interface::print}, @code{#f}
1050 @tab Des constantes encadrés par @code{#(}@dots{}@code{)}
1051 @tab @code{'#(#t #t #f)}
1055 Manuel d'extension :
1056 @rextend{Tutoriel Scheme}.
1059 @node Apparence des objets
1060 @section Apparence des objets
1061 @translationof Appearance of objects
1063 Il est temps de mettre en pratique les notions apprises précédemment
1064 pour modifier l'allure de la partition ; les exemples qui suivent
1065 montrent l'utilisation des différentes méthodes de retouche.
1068 * Visibilité et couleur des objets::
1069 * Taille des objets::
1070 * Longueur et épaisseur des objets::
1074 @node Visibilité et couleur des objets
1075 @subsection Visibilité et couleur des objets
1076 @translationof Visibility and color of objects
1078 Dans un but pédagogique, on peut être amené à masquer certains éléments
1079 d'une partition, que les élèves doivent ensuite compléter. Imaginons,
1080 par exemple, un exercice dans lequel il faudrait rétablir les barres de
1081 mesure dans un morceau de musique. En temps normal, les barres de
1082 mesure s'insèrent automatiquement. Comment faire pour les effacer de la
1085 Avant de nous y attaquer, souvenons-nous que les propriétés d'objets
1086 sont parfois groupées dans ce qu'on appelle des @emph{interfaces} --
1087 voir @ref{Propriétés listées par interface}. Cela permet de rapprocher
1088 toutes les propriétés susceptibles d'être utilisées ensemble pour
1089 modifier un objet graphique -- si l'une d'elles est choisie pour un
1090 objet, elle s'appliquera à tous les autres. Certains objets tirent
1091 alors leurs propriétés de telle ou telle interface, d'autres objets de
1092 telle ou telle autre interface. La liste des interfaces qui contiennent
1093 les propriétés liées à un objet graphique (@emph{grob}) figure dans la
1094 RPI, en bas de la page de description du @emph{grob} ; pour voir
1095 ces propriétés, il faut aller voir ces interfaces.
1097 Nous avons vu, dans @ref{Propriétés des objets de rendu}, comment
1098 trouver les informations sur les @emph{grobs}. Nous procédons de la
1099 même manière et consultons la RPI pour connaître l'objet chargé
1100 d'imprimer les barres de mesure. En cliquant sur @emph{Backend} puis
1101 sur @emph{Tous les objets de rendu}, nous trouvons un objet appelé
1102 @code{BarLine}. Parmi ses propriétés, deux d'entre elles déterminent
1103 son aspect visuel : @code{break-visibility} et @code{stencil}.
1104 L'objet @code{BarLine} est également lié à plusieurs interfaces, dont la
1105 @code{grob-interface} où figurent les propriétés @code{transparent} et
1106 @code{color}. Toutes peuvent modifier l'aspect visuel des barres de
1107 mesure -- et de beaucoup d'autres objets, bien sûr. Examinons chacune
1108 d'elles tour à tour.
1111 * La propriété stencil::
1112 * La propriété break-visibility::
1113 * La propriété transparent::
1114 * La propriété color::
1118 @node La propriété stencil
1119 @unnumberedsubsubsec La propriété @code{stencil}
1120 @translationof The stencil property
1122 @cindex stencil, propriété
1124 Cette propriété contrôle l'apparence des barres de mesure en précisant
1125 le type de symbole (glyphe) à imprimer. Comme pour de nombreuses
1126 autres propriétés, on peut lui indiquer de ne rien imprimer en lui
1127 attribuant la valeur @code{#f}. Essayons en laissant de côté, une fois
1128 encore, le contexte concerné (@code{Voice} en l'occurrence) :
1130 @cindex BarLine, exemple de dérogation
1131 @cindex stencil, exemple d'utilisation de la propriété
1133 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1136 \override BarLine.stencil = ##f
1138 g,8 a16 b8 c d4 e16 |
1143 Les barres de mesure sont encore là ! Pourquoi ? Retournons
1144 à la RPI et regardons de nouveau la page qui traite des propriétés de
1145 @code{BarLine}. En haut de la page, il est précisé que @qq{Les objets
1146 BarLine sont créés par le graveur Bar_engraver}. Allons à la page de
1147 @code{Bar_engraver}. Tout en bas se trouve la liste des contextes dans
1148 lesquels fonctionne ce graveur. Tous sont du type @code{Staff}, de
1149 sorte que, si la commande @code{\override} n'a pas fonctionné comme
1150 prévu, c'est parce que @code{Barline} n'appartient pas au contexte par
1151 défaut, @code{Voice}. Si le contexte spécifié est erroné, la commande
1152 ne fonctionne pas. Cela n'entraîne pas de message d'erreur, et rien
1153 n'apparaît dans le fichier @emph{log}. Essayons de corriger en
1154 mentionnant le bon contexte :
1156 @cindex BarLine, exemple de dérogation
1157 @cindex stencil, exemple d'utilisation de la propriété
1159 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1162 \override Staff.BarLine.stencil = ##f
1164 g,8 a16 b8 c d4 e16 |
1169 Cette fois, les barres de mesure ont disparu. Désactiver la
1170 propriété @code{stencil} est une opération tellement fréquente que
1171 LilyPond dispose d'un raccourci -- @code{\omit} (pour « oublier »)
1176 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1181 g,8 a16 b8 c d4 e16 |
1186 Vous remarquerez que l'affectation de la valeur @code{#f} à la propriété
1187 @code{stencil} déclenchera une erreur dès lors que l'objet en question se
1188 doit d'avoir des dimensions pour les nécessités du traitement. Ce sera
1189 le cas, par exemple, si vous effacez le @code{stencil} d'un objet
1190 @code{NoteHead}. Il vaut mieux, en pareil cas, utiliser la fonction
1191 @code{point-stencil} qui, quant à elle, attribue à l'objet une taille à
1194 @lilypond[quote,verbatim,relative=2]
1197 \once \override NoteHead.stencil = #point-stencil
1203 @node La propriété break-visibility
1204 @unnumberedsubsubsec La propriété @code{break-visibility}
1205 @translationof The break-visibility property
1207 @cindex break-visibility, propriété
1209 La RPI mentionne, à la page sur @code{BarLine}, que la propriété
1210 @code{break-visibility} attend comme argument un vecteur de trois
1211 booléens. Ceux-ci indiquent respectivement si les barres de mesure
1212 doivent être imprimées ou non à la fin de la ligne, à l'intérieur de la
1213 ligne et au début de la ligne. Dans notre cas, nous voulons que toutes
1214 les barres soient supprimées, si bien que la valeur dont nous avons
1215 besoin est @code{#(#f #f #f)}. Essayons, sans oublier d'ajouter le
1216 contexte @code{Staff}. Vous remarquerez que, en plus de cette valeur,
1217 nous ajoutons @code{##} devant la parenthèse ouvrante. Un second
1218 @code{#} est nécessaire car il fait partie intégrante de la valeur
1219 contenant un vecteur, et le premier @code{#} est là, comme
1220 toujours avec la commande @code{\override}, pour introduire la
1223 @cindex BarLine, exemple de dérogation
1224 @cindex break-visibility exemple d'utilisation de la propriété
1226 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1229 \override Staff.BarLine.break-visibility = #'#(#f #f #f)
1231 g,8 a16 b8 c d4 e16 |
1236 Comme on peut le constater, cette solution-là aussi supprime les barres
1240 @node La propriété transparent
1241 @unnumberedsubsubsec La propriété @code{transparent}
1242 @translationof The transparent property
1244 @cindex transparent, propriété
1245 @cindex transparence
1247 La RPI mentionne, à la page sur @code{grob-interface}, que la propriété
1248 @code{transparent} attend comme argument un booléen. Il faudrait donc
1249 mettre @code{#t} pour rendre l'objet transparent. Dans cet exemple,
1250 essayons de rendre transparente la métrique (@emph{time signature} en
1251 anglais) plutôt que les barres de mesure. Pour cela, il nous faut
1252 trouver le nom du @emph{grob} chargé de l'indication de mesure. De
1253 retour sur la page @qq{Tous les objets de rendu} de la RPI, nous
1254 cherchons les propriétés de l'objet @code{TimeSignature}. Celui-ci est
1255 géré par le graveur @code{Time_signature_engraver} qui, comme vous
1256 pouvez le constater, appartient au contexte @code{Staff} et peut se
1257 rattacher à la @code{grob-interface}. Dans ces conditions, la commande
1258 pour rendre la métrique transparente est :
1260 @cindex TimeSignature, exemple de dérogation
1261 @cindex transparent, exemple d'utilisation de la propriété
1263 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1266 \override Staff.TimeSignature.transparent = ##t
1268 g,8 a16 b8 c d4 e16 |
1274 L'utilisation de la propriété @code{transparent} étant
1275 relativement fréquent, LilyPond dispose d'un raccourci à cet
1276 effet : @code{\hide} (pour « masquer ».
1280 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1283 \hide Staff.TimeSignature
1285 g,8 a16 b8 c d4 e16 |
1291 La métrique a bien disparu dans les deux cas, mais la commande a
1292 laissé un blanc en lieu et place du chiffrage. Ce peut être
1293 souhaitable dans le cadre d'un exercice, afin que les élèves aient
1294 la place pour compléter, mais dans d'autres circonstances, ce peut
1295 être gênant. Pour y remédier, attribuons plutôt au stencil des
1296 métriques la valeur @code{#f} :
1298 @cindex TimeSignature, exemple de dérogation
1299 @cindex stencil, exemple d'utilisation de la propriété
1301 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1304 \override Staff.TimeSignature.stencil = ##f
1306 g,8 a16 b8 c d4 e16 |
1312 La différence est flagrante : le fait d'attribuer au stencil la
1313 valeur @code{#f} ou grâce à @code{\omit} supprime totalement
1314 l'objet, tandis que le fait de le rendre @code{transparent} -- ce
1315 qui s'obtient aussi par la commande @code{\hide} -- le laisse en
1316 place, mais de façon invisible.
1319 @node La propriété color
1320 @unnumberedsubsubsec La propriété @code{color}
1321 @translationof The color property
1323 @cindex color, propriété
1325 Essayons enfin de rendre les barres de mesure invisibles en les colorant
1326 en blanc. La difficulté est de savoir si les barres blanches vont
1327 couper ou non les lignes de la portée aux endroits où elles se
1328 croisent. Vous verrez dans les exemples ci-dessous que cela peut se
1329 produire, sans qu'on le sache à l'avance. Les explications de ce
1330 phénomène et les solutions pour y remédier sont exposées dans
1331 @ruser{Blanchiment des objets}. Pour le moment, acceptons cet
1332 inconvénient et concentrons-nous sur l'apprentissage de la gestion des
1335 La @code{grob-interface} indique que la valeur de la propriété
1336 @code{color} est une liste, sans plus d'explication. En fait, cette
1337 liste est une liste de valeurs en unités internes ; pour éviter
1338 d'avoir à chercher ce qu'il faut y mettre, il existe différents moyens
1339 d'indiquer la couleur. Le premier moyen consiste à utiliser l'une des
1340 couleurs @emph{normales} de la première @ruser{Liste des couleurs}.
1341 Pour mettre les barres de mesure en blanc, on écrit :
1343 @cindex BarLine, exemple de dérogation
1344 @cindex color, exemple d'utilisation de la propriété
1346 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1349 \override Staff.BarLine.color = #white
1351 g,8 a16 b8 c d4 e16 |
1357 et nous constatons que les barres de mesure sont une fois de plus
1358 invisibles. Attention : aucune apostrophe ne précède @code{white}
1359 -- il ne s'agit pas d'un symbole mais d'une @strong{variable}.
1360 Quand on l'invoque, elle fournit une liste de valeurs internes
1361 requises pour changer la couleur en blanc. Les autres couleurs
1362 aussi, dans la @qq{liste normale}, sont des variables. Pour en
1363 être certain, vous pouvez faire l'essai en choisissant une autre
1364 variable de la liste en guise de couleur.
1367 @cindex X11, couleurs
1371 Le deuxième moyen de changer la couleur consiste à utiliser la deuxième
1372 @ruser{Liste des couleurs}, dite noms de couleurs X11. Ceux-ci doivent
1373 obligatoirement être précédés d'une fonction, @code{x11-color},
1374 qui convertit les noms symboliques de couleur X11 en une liste de
1375 valeurs internes comme ceci :
1377 @cindex BarLine, exemple de dérogation
1378 @cindex color, exemple d'utilisation de la propriété
1380 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1383 \override Staff.BarLine.color = #(x11-color 'white)
1385 g,8 a16 b8 c d4 e16 |
1391 Vous noterez que, dans ce cas, la fonction @code{x11-color} admet un
1392 symbole comme argument ; il faut donc placer une apostrophe devant
1393 le symbole de telle sorte qu'il ne soit pas interprété comme une
1394 variable, et insérer l'appel à la fonction à l'intérieur de
1397 @cindex rgb, couleur
1398 @cindex couleurs rgb
1402 Il existe une autre fonction, chargée elle de convertir les
1403 valeurs RVB en couleurs internes -- la fonction @code{rgb-color}.
1404 Elle comporte trois arguments, donnant respectivement l'intensité
1405 du rouge, du vert et du bleu. Ces arguments prennent des valeurs
1406 comprises entre 0 et 1. Ainsi, pour choisir la couleur rouge, la
1407 valeur serait @code{(rgb-color 1 0 0)} ; pour le blanc, ce serait
1408 @code{(rgb-color 1 1 1)} :
1410 @cindex BarLine, exemple de dérogation
1411 @cindex color, exemple d'utilisation de la propriété
1413 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1416 \override Staff.BarLine.color = #(rgb-color 1 1 1)
1418 g,8 a16 b8 c d4 e16 |
1423 Enfin, il existe une échelle de gris parmi les possibilités de couleurs
1424 X11. Elle va du noir (@code{'grey0}) au blanc (@code{'grey100}), avec
1425 un pas de 1. Essayons de l'utiliser en attribuant à tous les objets de
1426 notre exemple différentes nuances de gris :
1428 @cindex StaffSymbol, exemple de dérogation
1429 @cindex TimeSignature, exemple de dérogation
1430 @cindex Clef, exemple de dérogation
1431 @cindex NoteHead, exemple de dérogation
1432 @cindex Stem, exemple de dérogation
1433 @cindex BarLine, exemple de dérogation
1434 @cindex color, exemple d'utilisation de la propriété
1435 @cindex x11-color, exemple d'utilisation
1437 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1440 \override Staff.StaffSymbol.color = #(x11-color 'grey30)
1441 \override Staff.TimeSignature.color = #(x11-color 'grey60)
1442 \override Staff.Clef.color = #(x11-color 'grey60)
1443 \override Voice.NoteHead.color = #(x11-color 'grey85)
1444 \override Voice.Stem.color = #(x11-color 'grey85)
1445 \override Staff.BarLine.color = #(x11-color 'grey10)
1447 g,8 a16 b8 c d4 e16 |
1453 Vous remarquerez le contexte associé à chacun des objets. Une erreur
1454 sur ce point empêcherait la commande de fonctionner. Souvenez-vous que
1455 le contexte est celui dans lequel est placé le graveur approprié. Pour
1456 chaque graveur, on peut trouver son contexte par défaut en partant de
1457 l'objet lui-même, puis en cherchant le graveur qui le produit ; la
1458 page du graveur dans la RPI nous indique alors le contexte dans lequel
1459 le graveur se trouve normalement.
1462 @node Taille des objets
1463 @subsection Taille des objets
1464 @translationof Size of objects
1466 @cindex modification de la taille des objets
1467 @cindex taille d'objets
1468 @cindex objets, taille
1469 @cindex objets, modification de taille
1471 Pour commencer, reprenons l'exemple qui se trouvait dans
1472 @ref{Expressions musicales imbriquées}, qui montrait comment créer une
1473 nouvelle portée temporaire, du type @rglos{ossia}.
1475 @cindex alignAboveContext, exemple d'utilisation de la propriété
1476 @cindex @code{\with}, exemple
1478 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1479 \new Staff ="main" {
1486 alignAboveContext = #"main" }
1494 Normalement, les ossias ne comportent ni clef ni indication de mesure,
1495 et elles sont imprimées légèrement plus petit que la portée principale.
1496 Nous avons déjà appris à enlever la clef et la métrique -- il suffit de
1497 régler le stencil de chacun sur @code{#f}, comme ceci :
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
1505 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1506 \new Staff ="main" {
1513 alignAboveContext = #"main"
1517 \omit Staff.TimeSignature
1527 La paire d'accolades ajoutée après la clause @code{\with} est nécessaire
1528 pour être sûr que les retouches (@code{\override}) ainsi que la musique
1529 qui se trouvent à l'intérieur soient bien appliquées à la portée
1532 Mais alors, quelle différence y a-t-il à modifier le contexte de portée
1533 au moyen de @code{\with} ou à modifier les stencils de la clef et de la
1534 métrique avec @code{\override} ou @code{\omit} comme ici ? La
1535 principale différence est que les changements opérés dans une
1536 clause @code{\with} sont réalisés au moment où le contexte est
1537 créé et restent par la suite les valeurs @strong{par défaut} aussi
1538 longtemps que ce contexte existe, tandis que les commandes
1539 @code{\set} ou @code{\override} insérées dans la musique sont
1540 dynamiques -- elles provoquent des changements synchronisés avec
1541 un point particulier de la musique. Si les changements sont annulés ou
1542 dés activés par @code{\unset} ou @code{\revert}, les réglages reprennent
1543 leurs valeurs par défaut, c'est-à-dire celles qui ont été fixées dans la
1544 clause @code{\with}, ou, en l'absence de celle-ci, les valeurs par
1547 Certaines propriétés de contexte ne peuvent être modifiées que dans une
1548 clause @code{\with}. Il s'agit des propriétés qu'on ne peut évidemment
1549 plus changer après que le contexte a été créé. C'est le cas de
1550 @code{alignAboveContext} et de son pendant, @code{alignBelowContext}
1551 -- une fois que la portée a été créée, son alignement est décidé et cela
1552 n'aurait aucun sens de vouloir le modifier par la suite.
1554 Dans une clause @code{\with}, on peut aussi régler les valeurs par
1555 défaut des propriétés d'un objet. Il suffit d'utiliser la commande
1556 @code{\override} normale, sans s'occuper du nom de contexte
1557 puisqu'il ne fait pas de doute qu'il s'agit du contexte en cours de
1558 modification par la clause @code{\with}. Il se produirait même une
1559 erreur si le contexte était précisé.
1561 Remplaçons donc l'exemple ci-dessus par celui-ci :
1563 @cindex alignAboveContext, exemple d'utilisation de la propriété
1564 @cindex @code{\with}, exemple
1565 @cindex Clef, exemple de dérogation
1566 @cindex TimeSignature, exemple de dérogation
1568 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1569 \new Staff ="main" {
1576 alignAboveContext = #"main"
1577 % Don't print clefs in this staff
1578 \override Clef.stencil = ##f
1579 % Don't print time signatures in this staff
1580 \override TimeSignature.stencil = ##f
1589 Nous pourrions tout aussi bien utiliser les raccourcis
1590 @code{\hide} et @code{\omit} pour activer la propriété
1591 @code{transparent} et désactiver le @code{stencil}, ce qui
1594 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1595 \new Staff ="main" {
1602 alignAboveContext = #"main"
1603 % Don't print clefs in this staff
1605 % Don't print time signatures in this staff
1615 Venons-en finalement au changement de taille des objets.
1617 Certains objets sont créés comme des glyphes choisis dans une police de
1618 caractères. C'est le cas des têtes de notes, des altérations, des
1619 @emph{markup}, des clefs, des métriques, des nuances et des paroles.
1620 Pour changer leur taille, on modifie la propriété @code{font-size},
1621 comme nous le verrons rapidement. D'autres objets, comme les liaisons
1622 de phrasé ou de prolongation -- en général les objets étendus -- sont
1623 dessinés à la demande, si bien qu'aucune @code{font-size} ne leur est
1624 associée. Ces objets tirent généralement leur dimension des objets
1625 auxquels ils sont rattachés, de sorte qu'on ne doit pas avoir à les
1626 redimensionner à la main. D'autres propriétés, comme la hauteur des
1627 hampes et des barres de mesure, l'épaisseur des ligatures et d'autres
1628 lignes, et l'écartement des lignes de portée, doivent encore être
1629 modifiées de façon particulière.
1631 Si l'on revient à l'exemple d'ossia, commençons par changer la taille de
1632 police. Nous pouvons employer deux méthodes. Soit nous changeons la
1633 taille de police de chaque type d'objet avec des commandes comme
1634 celle-ci pour les têtes de notes (@code{NoteHead}) :
1637 \override NoteHead.font-size = #-2
1640 soit nous changeons la taille de toutes les polices à la fois grâce à la
1641 propriété @code{fontSize}, en utilisant @code{\set} ou en l'insérant
1642 dans une clause @code{\with} (mais alors sans le @code{\set}).
1648 Chacune de ces méthodes réduira la taille de police de deux points par
1649 rapport à sa valeur précédente, sachant que chaque point réduit ou
1650 augmente la taille d'environ 12 %.
1652 Essayons sur l'exemple d'ossia :
1654 @cindex alignAboveContext, exemple d'utilisation de la propriété
1655 @cindex @code{\with}, exemple
1656 @cindex Clef, exemple de dérogation
1657 @cindex TimeSignature, exemple de dérogation
1658 @cindex fontSize, exemple d'utilisation de la propriété
1660 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1661 \new Staff ="main" {
1668 alignAboveContext = #"main"
1671 % Reduce all font sizes by ~24%
1681 Ce n'est pas encore parfait. Les têtes de notes et les crochets sont
1682 plus petits mais, proportionnellement, les hampes sont trop longues et
1683 les lignes de la portée trop espacées. Il faut donc les réduire dans
1684 les mêmes proportions que les polices de caractères. La prochaine
1685 sous-section montrera comment faire.
1688 @node Longueur et épaisseur des objets
1689 @subsection Longueur et épaisseur des objets
1690 @translationof Length and thickness of objects
1696 @cindex taille, modification
1697 @cindex hampe, modification de longueur
1698 @cindex écartement des lignes, modification
1700 Dans LilyPond, les écartements et longueurs sont généralement mesurés en
1701 @qq{intervalles de lignes} (@emph{staff-spaces} en anglais),
1702 c'est-à-dire l'écartement qui sépare deux lignes adjacentes dans la
1703 portée -- plus rarement, il est question de demi-intervalles de lignes.
1704 Les propriétés d'épaisseur (@code{thickness}), quant à elles, sont
1705 généralement mesurées en unités d'une propriété interne appelée
1706 @qq{épaisseur de ligne} (@code{line-thickness}). Par exemple, les
1707 lignes de (de)crescendo présentent par défaut une épaisseur d'une
1708 unité de @code{line-thickness}, alors que l'épaisseur d'une hampe
1709 est de 1,3. Toutefois, certaines propriétés d'épaisseur sont
1710 différentes : par exemple, l'épaisseur des ligature --
1711 @code{beam-thickness} -- se mesure en espaces de portée.
1713 Dans ces conditions, comment ajuster les longueurs à la taille des
1714 polices de caractères ? La solution consiste à utiliser une
1715 fonction spéciale appelée @code{magstep} -- pseudo facteur de zoom --,
1716 créée précisément dans ce but. Elle comporte un argument, le changement
1717 de taille de police (@code{#-2} dans l'exemple précédent), à partir
1718 duquel elle applique un facteur de mise à l'échelle qui réduit, ou
1719 augmente, les objets en question. Voici comment elle s'utilise :
1721 @cindex alignAboveContext, exemple d'utilisation de la propriété
1722 @cindex @code{\with}, exemple
1723 @cindex Clef, exemple de dérogation
1724 @cindex TimeSignature, exemple de dérogation
1725 @cindex fontSize , exemple d'utilisation de la propriété
1726 @cindex StaffSymbol, exemple de dérogation
1727 @cindex magstep, exemple d'utilisation de la fonction
1728 @cindex staff-space, exemple d'utilisation de la propriété
1729 @cindex stencil, exemple d'utilisation de la propriété
1731 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1732 \new Staff ="main" {
1739 alignAboveContext = #"main"
1743 % Reduce stem length and line spacing to match
1744 \override StaffSymbol.staff-space = #(magstep -2)
1754 Puisque la longueur des hampes et plusieurs autres propriétés de
1755 longueur sont calculées par rapport à la valeur de la propriété
1756 @code{staff-space}, elles sont automatiquement mises à l'échelle. Vous
1757 remarquerez que cela n'affecte que la dimension verticale de l'ossia --
1758 la dimension horizontale étant déterminée par les objets de la portée
1759 principale de façon à rester synchronisée vis-à-vis d'elle, elle n'est
1760 pas affectée par tous ces changements de taille. Bien sûr, si l'échelle
1761 de toute la portée principale était modifiée, tout le placement
1762 horizontal s'en trouverait affecté. Il en sera question plus bas dans
1765 Voilà qui complète la création d'une ossia. Les taille et longueur de
1766 tous les objets peuvent être modifiées de manière analogue.
1768 Pour de petits changements d'échelle, comme dans l'exemple ci-dessus, il
1769 n'est généralement pas utile d'ajuster l'épaisseur des différentes
1770 lignes telles que les barres de mesure, les ligatures, les soufflets de
1771 crescendo ou decrescendo, les liaisons, etc. Si l'épaisseur d'un objet
1772 en particulier doit être ajustée, le mieux est de modifier sa propriété
1773 @code{thickness}. Nous avons vu plus haut, dans
1774 @ref{Propriétés des objets de rendu}, un exemple de modification de
1775 l'épaisseur des liaisons. L'épaisseur de tous les objets tracés
1776 (c'est-à-dire ceux qui ne proviennent pas d'une police de caractère)
1777 peut être changée de la même manière.
1780 @node Positionnement des objets
1781 @section Positionnement des objets
1782 @translationof Placement of objects
1785 * Comportement automatique::
1786 * Objets inclus dans la portée::
1787 * Objets hors de la portée::
1791 @node Comportement automatique
1792 @subsection Comportement automatique
1793 @translationof Automatic behavior
1795 @cindex objets de la portée
1796 @cindex objets extérieurs à la portée
1797 @cindex portée, objets de la
1798 @cindex portée, objets extérieurs à la
1800 Dans la notation musicale, il y a des objets qui appartiennent à la
1801 portée et d'autres qui sont placés à l'extérieur de la portée. On les
1802 appelle respectivement les @qq{objets de la portée} (@emph{within-staff
1803 objects} en anglais) et les @qq{objets extérieurs à la portée}
1804 (@emph{outside-staff objects} en anglais).
1806 Les objets de la portée sont ceux qui sont placés sur la portée
1807 -- les têtes de notes et les hampes, les altérations, etc. Leur
1808 position est généralement déterminée par la musique elle-même -- ils
1809 sont placés verticalement sur des lignes spécifiques ou sont liés à
1810 d'autres objets placés de cette manière. Normalement, les collisions
1811 entre les têtes et queues de notes et les altérations dans des accords
1812 proches sont évitées automatiquement. Comme nous le verrons rapidement,
1813 il existe des commandes et des possibilités de retouche qui permettent
1814 de modifier ce comportement automatique.
1816 Parmi les objets extérieurs à la portée, on compte des éléments comme
1817 les marques de reprise, les indications de texte ou de nuance. Dans
1818 LilyPond, la règle est de placer verticalement ces objets extérieurs à
1819 la portée le plus près possible de la portée, tout en évitant la
1820 collision avec d'autres objets. LilyPond utilise la propriété
1821 @code{outside-staff-priority} pour déterminer l'ordre selon lequel
1822 placer ces objets, de la manière suivante :
1824 D'abord, LilyPond dresse la liste de tous les objets extérieurs à la
1825 portée. Puis ceux-ci sont classés suivant leur
1826 @code{outside-staff-priority}. Enfin, ils sont pris un par un, en
1827 commençant par les objets avec la @code{outside-staff-priority} la plus
1828 basse, et placés de façon à ne pas entrer en collision avec d'autres
1829 objets déjà placés. Cela signifie que, si deux @emph{grobs} extérieurs
1830 à la portée doivent occuper la même place, c'est celui qui a la
1831 @code{outside-staff-priority} la plus basse qui est placé le plus près
1832 de la portée. Et si deux objets ont la même
1833 @code{outside-staff-priority}, le premier rencontré sera placé au plus
1836 Dans l'exemple suivant, tous les @emph{markup} ont la même priorité,
1837 dans la mesure où rien n'est indiqué explicitement. Vous remarquerez
1838 que @code{Text3} est également positionné près de la portée, juste
1839 en-dessous de @code{Text2}.
1841 @cindex markup, exemple
1843 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1850 Les portées aussi sont positionnées, par défaut, le plus près possible
1851 les unes des autres, en ménageant tout de même une certaine séparation.
1852 Si des notes se rapprochent nettement d'une portée adjacente, elles ne
1853 forceront les portées à s'écarter que s'il y a un risque de
1856 @lilypond[quote,ragged-right,verbatim]
1859 \relative c' { c4 a, }
1862 \relative c'''' { c4 a, }
1868 @node Objets inclus dans la portée
1869 @subsection Objets inclus dans la portée
1870 @translationof Within-staff objects
1872 Nous avons vu que les commandes @code{\voiceXXX} jouent sur la
1873 direction des liaisons, des doigtés et sur tout autre élément lié à
1874 l'orientation des hampes. Ces commandes sont essentielles dans
1875 la musique polyphonique pour distinguer des lignes mélodiques
1876 entremêlées. Mais il arrive qu'on ait besoin de modifier ce
1877 comportement automatique. On peut le faire pour toutes les parties de
1878 la musique ou juste pour une note. La propriété qui contrôle ce
1879 comportement est la propriété @code{direction} de chaque objet.
1880 Expliquons d'abord ce qu'elle fait, puis nous présenterons un certain
1881 nombre de commandes déjà prêtes qui évitent, pour les modifications les
1882 plus courantes, d'avoir à encoder les retouches.
1884 Certains objets comme les traits des liaisons se recourbent tantôt
1885 vers le haut, tantôt vers le bas ; d'autres encore, comme les hampes et
1886 les crochets, peuvent se décaler vers la gauche ou vers la droite selon
1887 qu'ils pointent vers le haut ou vers le bas. Ce comportement est géré
1888 automatiquement dès lors que @code{direction} est activé.
1892 * La propriété direction::
1897 @node La propriété direction
1898 @unnumberedsubsubsec La propriété @code{direction}
1899 @translationof The direction property
1906 L'exemple ci-dessous montre dans la première mesure le comportement par
1907 défaut des hampes -- celles des notes les plus hautes pointant vers le
1908 bas et celles des notes les plus basses pointant vers le haut ;
1909 viennent ensuite quatre notes avec les hampes forcées vers le bas, puis
1910 quatre autres avec les hampes forcées vers le haut, et pour finir quatre
1911 notes de nouveau avec le comportement par défaut.
1913 @cindex Stem, exemple de dérogation
1914 @cindex direction, exemple d'utilisation de la propriété
1916 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1918 \override Stem.direction = #DOWN
1920 \override Stem.direction = #UP
1922 \revert Stem.direction
1926 Nous utilisons ici les directions @code{DOWN} et @code{UP}. Elles
1927 correspondent respectivement aux valeurs @code{-1} et @code{+1},
1928 que l'on peut utiliser à la place. La valeur @code{0} peut aussi être
1929 utilisée dans certains cas. Elle est interprétée comme un @code{UP}
1930 pour les hampes, et comme un @qq{centré} pour d'autres objets. Il
1931 existe une direction, @code{CENTER}, qui correspond à la
1934 Quoi qu'il en soit, ces retouches manuelles sont rarement utilisées car
1935 il existe des équivalents sous forme de commandes prédéfinies. Voici un
1936 tableau des plus courantes. Lorsque ce n'est pas évident, leur
1937 signification est précisée.
1939 @multitable @columnfractions .2 .2 .25 .35
1940 @headitem Bas/Gauche
1944 @item @code{\arpeggioArrowDown}
1945 @tab @code{\arpeggioArrowUp}
1946 @tab @code{\arpeggioNormal}
1947 @tab Flèche en bas, en haut, ou pas de flèche
1948 @item @code{\dotsDown}
1950 @tab @code{\dotsNeutral}
1951 @tab Déplacement des points pour éviter les lignes de portée
1952 @item @code{\dynamicDown}
1953 @tab @code{\dynamicUp}
1954 @tab @code{\dynamicNeutral}
1956 @item @code{\phrasingSlurDown}
1957 @tab @code{\phrasingSlurUp}
1958 @tab @code{\phrasingSlurNeutral}
1959 @tab Attention : à distinguer des commandes de liaison ci-dessous
1960 @item @code{\slurDown}
1962 @tab @code{\slurNeutral}
1964 @item @code{\stemDown}
1966 @tab @code{\stemNeutral}
1968 @item @code{\textSpannerDown}
1969 @tab @code{\textSpannerUp}
1970 @tab @code{\textSpannerNeutral}
1971 @tab Le texte saisi en tant qu'extension est au-dessous/au-dessus de
1973 @item @code{\tieDown}
1975 @tab @code{\tieNeutral}
1977 @item @code{\tupletDown}
1978 @tab @code{\tupletUp}
1979 @tab @code{\tupletNeutral}
1980 @tab Les nolets sont au-dessous/au-dessus des notes
1983 Les variantes @code{\xxxNeutral} et @code{\xxxNormal} de ces
1984 commandes sont implémentées à l'aide de @code{\revert} ; elles
1985 @strong{ne doivent pas} être précédées de @code{\once}. Pour
1986 limiter les effets des autres commandes prédéfinies (fonctionnant
1987 à base de @code{\override}) à une seule note, il faut les faire
1988 précéder d'un @code{\once}, comme pour toute dérogation.
1992 @unnumberedsubsubsec Doigtés
1993 @translationof Fingering
1995 @cindex doigtés, positionnement
1996 @cindex doigtés, accords
1998 Le placement des doigtés sur des notes simples peut aussi être contrôlé
1999 par la propriété @code{direction}, mais le changement de
2000 @code{direction} n'a pas d'effet sur les accords. Comme nous le
2001 verrons, il existe des commandes qui permettent de contrôler le doigté
2002 sur chaque note d'un accord, en plaçant l'indication de doigté
2003 au-dessus, en dessous, à gauche ou à droite de chaque note.
2005 Tout d'abord, voici l'effet de @code{direction} sur le doigté lié à une
2006 note simple. La première mesure montre le comportement par défaut, et
2007 les deux suivantes montrent l'effet lorsqu'on indique @code{DOWN} et
2010 @cindex doigtés, exemple de dérogation
2011 @cindex direction, exemple d'utilisation de la propriété
2013 @lilypond[quote,verbatim,relative=2]
2015 \override Fingering.direction = #DOWN
2017 \override Fingering.direction = #UP
2021 Le fait d'intervenir sur la propriété @code{direction} n'est sûrement
2022 pas la façon la plus simple de placer manuellement les doigtés au-dessus
2023 ou en dessous des notes ; mieux vaut utiliser @code{_} ou @code{^}
2024 devant le chiffre de doigté plutôt que @code{-}. Voici ce que donne
2025 l'exemple précédent avec cette méthode :
2027 @cindex doigtés, exemple
2029 @lilypond[quote,verbatim,relative=2]
2035 La propriété @code{direction} ne fonctionne pas pour les accords alors
2036 que les préfixes de direction, @code{_} et @code{^}, fonctionnent. Par
2037 défaut, le doigté est placé automatiquement à la fois au-dessus et
2038 au-dessous des notes d'un accord, comme ceci :
2040 @cindex doigtés, exemple
2042 @lilypond[quote,verbatim,relative=2]
2049 mais il est possible de forcer manuellement vers le haut ou vers le bas
2050 le placement de tous ou certains chiffres de doigté, comme ceci :
2052 @cindex doigtés, exemple
2054 @lilypond[quote,verbatim,relative=2]
2060 On peut aller encore plus loin dans le positionnement des doigtés pour
2061 chacune des notes d'un accord grâce à la commande
2062 @code{\set fingeringOrientations}. La syntaxe de cette commande est :
2065 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
2069 On utilise @code{\set} car @code{fingeringOrientations} est une
2070 propriété du contexte @code{Voice}, créée et utilisée par le graveur
2071 @code{New_fingering_engraver}.
2073 On peut attribuer à cette propriété une liste composée de une à trois
2074 valeurs. Celles-ci déterminent si l'indication de doigté doit être
2075 placée au-dessus (lorsque @code{up} apparaît dans la liste), au-dessous
2076 (lorsque @code{down} apparaît), à gauche (lorsque @code{left} apparaît)
2077 ou à droite (lorsque @code{right} apparaît). En revanche, si une valeur
2078 n'est pas dans la liste, aucun doigté n'ira à cet emplacement. LilyPond
2079 garde ces contraintes en mémoire et recherche le meilleur emplacement
2080 pour le doigté des notes des accords suivants. Vous remarquerez que
2081 @code{left} et @code{right} s'excluent l'un l'autre -- l'indication de
2082 doigté ne peut être placée que d'un côté ou de l'autre, pas des deux.
2084 @warning{Pour contrôler à l'aide de cette commande le placement du
2085 doigté sur une note simple, il faut la saisir comme un accord composé
2086 d'une note unique, en l'encadrant de chevrons.}
2088 Voici quelques exemples :
2090 @cindex doigtés, exemple
2091 @cindex @code{\set}, exemple d'utilisation
2092 @cindex fingeringOrientations, exemple d'utilisation de la propriété
2094 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2095 \set fingeringOrientations = #'(left)
2098 \set fingeringOrientations = #'(left)
2100 <c-1 e-2 g-3 b-5>4 |
2101 \set fingeringOrientations = #'(up left down)
2104 \set fingeringOrientations = #'(up left)
2106 <c-1 e-2 g-3 b-5>4 |
2107 \set fingeringOrientations = #'(right)
2113 Si les indications de doigtés paraissent un peu serrées, on peut
2114 toujours réduire la taille de police (@code{font-size}). La valeur
2115 par défaut donnée dans la RPI à la page de l'objet
2116 @code{Fingering} étant @code{-5}, essayons @w{@code{-7}} :
2118 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2119 \override Fingering.font-size = #-7
2120 \set fingeringOrientations = #'(left)
2123 \set fingeringOrientations = #'(left)
2125 <c-1 e-2 g-3 b-5>4 |
2126 \set fingeringOrientations = #'(up left down)
2129 \set fingeringOrientations = #'(up left)
2131 <c-1 e-2 g-3 b-5>4 |
2132 \set fingeringOrientations = #'(right)
2138 @node Objets hors de la portée
2139 @subsection Objets hors de la portée
2140 @translationof Outside-staff objects
2142 Les objets extérieurs à la portée sont placés automatiquement de façon à
2143 éviter les collisions. Il est toutefois possible, grâce à
2144 différentes méthodes, de rectifier un positionnement automatique
2145 qui se révèlerait ne pas être optimal.
2148 * La propriété outside-staff-priority::
2149 * La commande textLengthOn::
2150 * Positionnement des nuances::
2151 * Dimensionnement des objets graphiques::
2155 @node La propriété outside-staff-priority
2156 @unnumberedsubsubsec La propriété @code{outside-staff-priority}
2157 @translationof The outside-staff-priority property
2159 Les objets avec la plus petite valeur de la propriété
2160 @code{outside-staff-priority} sont placés au plus près de la
2161 portée, tandis que les autres sont écartés autant qu'il faut pour
2162 éviter les collisions. La @code{outside-staff-priority} est
2163 définie dans la @code{grob-interface} ; elle est donc une
2164 propriété commune à tous les objets de rendu. Par défaut, elle
2165 est réglée sur @code{#f} pour tous les objets de la portée, et
2166 porte une valeur numérique appropriée à chacun des objets
2167 extérieurs à la portée, à mesure qu'ils sont créés. Le tableau
2168 suivant montre la valeur numérique par défaut pour quelques-uns
2169 des objets extérieurs à la portée les plus courant.
2175 Vous noterez au passage certaines particularités quant au nom des
2176 objets. En effet, des objets à extension sont automatiquement créés
2177 dans le but de pouvoir contrôler le positionnement vertical des
2178 extrémités d'un @emph{grob} qui commencerait et se terminerait à des
2179 instants musicaux différents. C'est la raison pour laquelle modifier le
2180 @code{outside-staff-priority} du @emph{grob} sous-jacent n'aura aucun
2181 effet. C'est par exemple le cas lorsque vous modifiez l'alignement d'un
2182 objet @code{Hairpin} à l'aide de @code{outside-staff-priority} ;
2183 puisque le soufflet est associé à un objet @code{DynamicLineSpanner},
2184 c'est sur celui-ci que doit porter l'effet de
2185 @code{outside-staff-priority}. L'instruction dérogatoire se place au
2186 début du bandeau qui constitue une ligne de base susceptible de contenir
2187 plusieurs soufflets ou indications de nuance.
2189 @multitable @columnfractions .3 .3 .3
2190 @headitem Objet de rendu
2192 @tab Contrôle la position de :
2193 @item @code{RehearsalMark}
2196 @item @code{MetronomeMark}
2198 @tab Indication métronomique
2199 @item @code{VoltaBracketSpanner}
2201 @tab Bandeau de répétition
2202 @item @code{TextScript}
2204 @tab Texte des @emph{markup} (ou étiquettes)
2205 @item @code{MultiMeasureRestText}
2207 @tab Texte sur les silences qui couvrent des mesures entières
2208 @item @code{OttavaBracket}
2210 @tab Indication d'octaviation
2211 @item @code{TextSpanner}
2213 @tab Bandeau ou extension de texte
2214 @item @code{DynamicLineSpanner}
2216 @tab Toutes les marques de nuances
2217 @item @code{BarNumber}
2219 @tab Numéro de mesure
2220 @item @code{TrillSpanner}
2222 @tab Bandeau de trille
2225 Voici un exemple qui montre le placement par défaut de certains
2228 @cindex extension de texte
2229 @cindex indication d'octaviation
2231 @funindex \startTextSpan
2232 @funindex startTextSpan
2233 @funindex \stopTextSpan
2234 @funindex stopTextSpan
2236 @cindex TextSpanner, exemple de dérogation
2237 @cindex bound-details, exemple d'utilisation de la propriété
2239 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2240 % Set details for later Text Spanner
2241 \override TextSpanner.bound-details.left.text
2242 = \markup { \small \bold Slower }
2243 % Place dynamics above staff
2245 % Start Ottava Bracket
2248 % Add Dynamic Text and hairpin
2254 % Add Dynamic Text and terminate hairpin
2255 c4\ff c \stopTextSpan |
2256 % Stop Ottava Bracket
2261 Cet exemple montre comment créer des extensions de texte (@emph{Text
2262 Spanners} en anglais) -- texte avec des longues lignes au-dessus d'un
2263 passage musical. L'extension s'étend depuis la commande
2264 @code{\startTextSpan} jusqu'à la commande @code{\stopTextSpan} et le
2265 format de texte est défini par la commande @code{\override TextSpanner}.
2266 Pour de plus amples détails, voir
2267 @ruser{Indication textuelle avec extension}.
2269 Il montre aussi comment créer des marques d'octaviation.
2271 @cindex modification du positionnement des numéros de mesure
2272 @cindex numéros de mesure, modification du positionnement
2273 @cindex modification du positionnement des indications métronomiques
2274 @cindex indications métronomiques, modification du positionnement
2275 @cindex modification du positionnement des marques de repère
2276 @cindex marques de repère, modification du positionnement
2278 Si les valeurs de @code{outside-staff-priority} par défaut ne donnent
2279 pas les résultats escomptés, il suffit de modifier la priorité
2280 de l'un de ces objets. Supposons que vous vouliez placer l'indication
2281 d'octaviation sous le bandeau de texte, dans l'exemple précédent. Tout
2282 ce que nous devons faire, c'est regarder la priorité de
2283 @code{OttavaBracket} dans la Référence des propriétés internes ou dans
2284 le tableau plus haut, et la ramener à une valeur plus basse que celle de
2285 @code{TextSpanner}, en gardant à l'esprit que @code{OttavaBracket} est
2286 créé dans le contexte @code{Staff} :
2288 @cindex TextSpanner, exemple de dérogation
2289 @cindex bound-details, exemple d'utilisation de la propriété
2291 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2292 % Set details for later Text Spanner
2293 \override TextSpanner.bound-details.left.text
2294 = \markup { \small \bold Slower }
2295 % Place dynamics above staff
2297 % Place following Ottava Bracket below Text Spanners
2298 \once \override Staff.OttavaBracket.outside-staff-priority = #340
2299 % Start Ottava Bracket
2304 % Add Dynamic Line Spanner
2310 c4\ff c \stopTextSpan |
2311 % Stop Ottava Bracket
2316 N'oublions pas que certains objets, tels les numéros de mesure,
2317 indications métronomiques et marques-repères, sont par défaut attachés
2318 au contexte @code{Score}.
2320 @cindex liaisons et outside-staff-priority
2321 @cindex liaisons et articulations
2322 @cindex articulations et liaisons
2324 Les liaisons sont intrinsèquement des objets membres de la portée
2325 (@emph{within-staff objects}) bien qu'elles la surplombent lorsque les
2326 notes auxquelles elles se rattachent sont relativement hautes. Ceci
2327 peut avoir pour conséquence de remonter d'autant les objets externes
2328 (@emph{outside-staff objects}) tels les articulations. La propriété
2329 @code{avoid-slur} de l'articulation en question peut se voir déterminée
2330 à @code{'inside} dans le but de @qq{ramener} cette articulation à
2331 l'intérieur de la liaison. Cette propriété @code{avoid-slur} ne sera
2332 toutefois effective que dans la mesure où la
2333 @code{outside-staff-priority} est désactivée (valeur @code{#f}). Dans
2334 le même esprit, il est possible d'affecter une valeur numérique
2335 particulière à la propriété @code{outside-staff-priority} d'une
2336 liaison dans le but de regrouper la liaison avec les objets externes.
2337 L'exemple suivant illustre ces deux différentes méthodes.
2339 @lilypond[quote,verbatim,relative=2]
2340 c4( c^\markup { \tiny \sharp } d4.) c8 |
2342 \once \override TextScript.avoid-slur = #'inside
2343 \once \override TextScript.outside-staff-priority = ##f
2344 c4^\markup { \tiny \sharp } d4.) c8 |
2345 \once \override Slur.outside-staff-priority = #500
2346 c4( c^\markup { \tiny \sharp } d4.) c8 |
2349 Le fait de changer la @code{outside-staff-priority} peut aussi servir à
2350 contrôler le positionnement vertical des objets individuels, quoique le
2351 résultat ne soit pas toujours formidable. Imaginons que nous voulions
2352 placer @qq{Text3} au-dessus de @qq{Text4} dans l'exemple de la section
2353 @ref{Comportement automatique}, plus haut. Il nous suffit pour cela de
2354 regarder dans la Référence des propriétés internes ou dans le tableau
2355 plus haut la priorité de @code{TextScript}, et d'augmenter la priorité
2356 de @qq{Text3} jusqu'à une valeur très haute :
2358 @cindex TextScript, exemple de dérogation
2359 @cindex outside-staff-priority, exemple d'utilisation de la propriété
2361 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2364 \once \override TextScript.outside-staff-priority = #500
2369 S'il est vrai que cela place @qq{Text3} au-dessus de @qq{Text4}, ça le
2370 place aussi plus haut que @qq{Text2} tandis que @qq{Text4} dégringole.
2371 Ce n'est peut-être pas si bien que ça. En fait, ce que nous aimerions
2372 faire, c'est placer toutes les annotations à égale distance de la
2373 portée. Pour cela, nous avons besoin d'espacer horizontalement les
2374 notes pour laisser plus de place au texte. C'est possible grâce à la
2375 commande @code{textLengthOn}.
2378 @node La commande textLengthOn
2379 @unnumberedsubsubsec La commande @code{@bs{}textLengthOn}
2380 @translationof The textLengthOn command
2382 @cindex notes, répartition selon le texte
2384 @funindex \textLengthOn
2385 @funindex textLengthOn
2386 @funindex \textLengthOff
2387 @funindex textLengthOff
2389 Par défaut, l'espacement horizontal d'un texte produit sous forme de
2390 @emph{markup} (ou d'étiquette) n'est pas pris en compte, dans la mesure
2391 où ce qui est concerné n'entre pas dans la musique. La commande
2392 @code{\textLengthOn} inverse ce comportement, faisant en sorte que les
2393 notes soient espacées autant qu'il le faut pour s'adapter au texte :
2395 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2396 \textLengthOn % Cause notes to space out to accommodate text
2403 La commande qui permet de revenir au comportement par défaut est
2404 @code{\textLengthOff}. Alternativement, lorsque l'instruction
2405 @code{\textLengthOn} se limite à un seul instant musical, vous
2406 pouvez la préfixer d'un @code{\once}.@*
2407 LilyPond dispose de commandes équivalentes et dévolues au
2408 traitement des repères et indications de tempo :
2409 @code{\markLengthOn} et @code{\markLengthOff}.
2411 @cindex étiquette de texte et collision
2413 Les textes des @emph{markup} éviteront également les notes qui
2414 s'échappent au-dessus de la portée. Si ce n'est pas notre souhait, il
2415 est possible de supprimer ce déplacement automatique vers le haut en
2416 attribuant à la priorité la valeur @code{#f}. Voici un exemple qui
2417 montre comment les textes des @emph{markup} interagissent avec ces types
2420 @cindex TextScript, exemple de dérogation
2421 @cindex outside-staff-priority, exemple d'utilisation de la propriété
2423 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2424 % This markup is short enough to fit without collision
2428 % This is too long to fit, so it is displaced upwards
2432 % Turn off collision avoidance
2433 \once \override TextScript.outside-staff-priority = ##f
2434 c,,2^"Long Text " c'' |
2437 % Turn off collision avoidance
2438 \once \override TextScript.outside-staff-priority = ##f
2439 \textLengthOn % and turn on textLengthOn
2440 c,,2^"Long Text " % Spaces at end are honored
2445 @node Positionnement des nuances
2446 @unnumberedsubsubsec Positionnement des nuances
2447 @translationof Dynamics placement
2449 @cindex modification du positionnement des nuances
2450 @cindex nuances, modification du positionnement
2452 Les indications de nuance se placent normalement sous la portée, mais on
2453 peut les placer au-dessus avec la commande @code{\dynamicUp}. Elles se
2454 positionnent verticalement par rapport à la note à laquelle elles sont
2455 liées et se décalent vers le bas (ou le haut) en fonction des objets de
2456 la portée comme les liaisons de phrasé ou les numéros de mesure. Cela
2457 peut donner d'assez bons résultats, comme le montre cet exemple :
2459 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2464 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2465 ees,2.~\)\mf ees4 r8 |
2468 De toute façon, si les notes et les nuances qui leur sont liées sont
2469 trop proches, le positionnement automatique évitera les collisions en
2470 déplaçant davantage les nuances suivantes, mais le résultat peut ne
2471 pas être très satisfaisant, comme le montre cet exemple artificiel :
2473 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2479 Si une telle situation devait survenir dans de la musique @qq{réelle},
2480 il serait préférable d'espacer un peu plus les notes, de façon que les
2481 indications de nuance puissent toutes se situer à la même distance de la
2482 portée. S'il est possible de faire cela pour les textes de
2483 @emph{markup} grâce à la commande @code{\textLengthOn}, il n'existe
2484 pas d'équivalent pour les indications de nuance. Il nous faut donc
2485 chercher à faire cela avec la commande @code{\override}.
2488 @node Dimensionnement des objets graphiques
2489 @unnumberedsubsubsec Dimensionnement des objets graphiques
2490 @translationof Grob sizing
2492 @cindex grob, dimensionnement
2493 @cindex dimensionnement des grobs
2495 Tout d'abord, nous devons apprendre ce qui détermine la dimension des
2496 @emph{grobs}. Tous les @emph{grobs} portent en eux un point de référence
2497 qui est utilisé pour les positionner par rapport à leur objet parent. Ce
2498 point du @emph{grob} est placé à une distance horizontale,
2499 @code{X-offset}, et à une distance verticale, @code{Y-offset}, de son
2500 parent. L'étendue horizontale de l'objet est fixée par une paire de
2501 nombres, @code{X-extent}, qui donnent la position du coin
2502 gauche et du coin droit par rapport au point de référence. De
2503 même, l'amplitude verticale est fixée par une paire de nombres,
2504 @code{Y-extent}. Ce sont des propriétés communes à tous les
2505 @emph{grobs} et que gère la @code{grob-interface}.
2507 @cindex @code{extra-spacing-width}
2509 Par défaut, la largeur des objets extérieurs à la portée est donnée
2510 comme étant nulle, si bien qu'ils peuvent se chevaucher
2511 horizontalement. Pour remédier à cela, on a ajouté l'infini à
2512 l'extension gauche et moins l'infini à l'extension droite, en
2513 attribuant à @code{extra-spacing-width} la valeur
2514 @code{'(+inf.0 . -inf.0)}. Pour être sûr que les objets ne se
2515 chevaucheront pas horizontalement, nous devons donc corriger cette
2516 valeur de @code{extra-spacing-width} pour leur attribuer un peu
2517 d'espace supplémentaire. L'unité de base est ici la largeur
2518 séparant deux lignes de portée ; décaler le bord gauche d'une
2519 demie unité vers la gauche et le bord droit d'une demie unité vers
2520 la droite devrait suffire :
2523 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2527 Voyons si ça marche sur notre exemple précédent :
2529 @cindex DynamicText, exemple de dérogation
2530 @cindex extra-spacing-width, exemple d'utilisation de la propriété
2532 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2534 % Extend width by 1 staff space
2535 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2540 C'est mieux mais nous voulons peut-être aligner les indications de
2541 nuance sur une même ligne plutôt que de les voir monter et
2542 descendre avec les notes. La propriété qui gère cela est
2543 @code{staff-padding} -- voir @ref{Collisions d'objets}.
2546 @node Espacement vertical
2547 @section Espacement vertical
2548 @translationof Vertical spacing
2550 En règle générale, LilyPond est plutôt performant en matière
2551 d'espacement vertical des objets musicaux. Examinons ce qui se passe
2552 avec un chant simple à deux voix accompagnées au piano :
2554 @lilypond[quote,fragment,ragged-right]
2559 \new Voice = "music" {
2565 Here are some lyrics
2568 \clef bass e'2 f e c
2583 Il n'y a rien à redire quant à l'espacement vertical. Toutefois,
2584 partons du principe que nous travaillons avec un éditeur dont les
2585 exigences en matière d'espacement vertical sont les suivantes : les
2586 paroles doivent être clairement détachées des notes, l'accompagnement de
2587 piano séparé du chant et les portées de piano rapprochées l'une de
2588 l'autre. Commençons par les paroles.
2590 Les paroles résident dans un système ; les commandes dévolues à leur
2591 espacement sont donc mentionnées à la section
2592 @ruser{Espacement vertical au sein d'un système}. Nous y constatons que
2593 les paroles sont des lignes de non-portée (@code{non-staff lines}) ; les
2594 commandes qui gèrent leur espacement font donc référence à la propriété
2595 @code{nonstaff}. Les décaler de la portée à laquelle elles sont
2596 attachées (celle du haut) jouera sur la propriété @code{relatedstaff},
2597 les décaler de la ligne inférieure sur la propriété
2598 @code{unrelatedstaff}. Les parties vocales sont membre d'un
2599 @code{VerticalAxisGroup} ; ce sont donc les propriétés de ce groupe qui
2600 doivent être ajustées. Faisons un premier essai pour voir :
2602 @lilypond[quote,fragment,ragged-right,verbatim]
2607 \new Voice = "music" {
2612 \override VerticalAxisGroup.
2613 nonstaff-relatedstaff-spacing.padding = #5
2614 \override VerticalAxisGroup.
2615 nonstaff-unrelatedstaff-spacing.padding = #5
2618 Here are some lyrics
2621 \clef bass e'2 f e c
2636 L'espacement est maintenant quelque peu exagéré. Lorsque nous
2637 affectons 5 à la variable @code{padding}, LilyPond ajoute cinq espaces
2638 de portée à la distance séparant deux objets, ce qui est plus que
2639 généreux. Nous nous limiterons à 2.
2641 Occupons-nous à présent de séparer l'accompagnement du chant. La
2642 musique vocale fait l'objet d'un @code{ChoirStaff} ; il nous faut donc
2643 augmenter l'espace entre ce groupe et la portée de piano qui le suit.
2644 Nous y parviendrons en modifiant la variable @code{basic-distance} de
2645 l'élément @code{staffgroup-staff-spacing} du @code{StaffGrouper}.
2647 @lilypond[quote,fragment,ragged-right,verbatim]
2649 \new ChoirStaff \with {
2650 \override StaffGrouper.
2651 staffgroup-staff-spacing.basic-distance = #15
2655 \new Voice = "music" {
2660 \override VerticalAxisGroup.
2661 nonstaff-relatedstaff-spacing.padding = #2
2662 \override VerticalAxisGroup.
2663 nonstaff-unrelatedstaff-spacing.padding = #2
2666 Here are some lyrics
2669 \clef bass e'2 f e c
2684 Excellent. Ne reste plus qu'à répondre à la dernière exigence :
2685 resserrer les portées du piano. Pour y parvenir, nous ajusterons à
2686 nouveau les propriétés du @code{StaffGrouper}, ici en jouant à la fois
2687 sur la distance de base (@code{basic-distance}) et le décalage
2688 (@code{padding}) comme ci-dessous :
2690 @lilypond[quote,fragment,ragged-right,verbatim]
2692 \new ChoirStaff \with {
2693 \override StaffGrouper.
2694 staffgroup-staff-spacing.basic-distance = #15
2698 \new Voice = "music" {
2703 \override VerticalAxisGroup.
2704 nonstaff-relatedstaff-spacing.padding = #2
2705 \override VerticalAxisGroup.
2706 nonstaff-unrelatedstaff-spacing.padding = #2
2709 Here are some lyrics
2712 \clef bass e'2 f e c
2715 \new PianoStaff \with {
2716 \override StaffGrouper.staff-staff-spacing = #'(
2717 (basic-distance . 0)
2731 Les portées sont vraiment rapprochées, mais c'est ce que veut l'éditeur.
2732 On pourra toujours les écarter au besoin en jouant sur les éléments
2733 @code{padding} ou @code{basic-distance}.
2735 Il existe bien des manières de modifier l'espacement vertical. Le point
2736 crucial à ne pas oublier est que l'espacement des objets au sein d'un
2737 regroupement -- un @code{StaffGroup}, tels @code{GrandStaff} ou
2738 @code{PianoStaff} -- dépend des variables d'espacement d'un
2739 @code{StaffGrouper} ; l'espacement de portées non regroupées (comme
2740 @code{Lyrics} et @code{Staff}) dépend des variables d'un
2741 @code{VerticalAxisGroup}. Voir
2742 @ruser{Variables d'espacement vertical fluctuant} et
2743 @ruser{Espacement vertical au sein d'un système} pour de plus amples
2747 @node Collisions d'objets
2748 @section Collisions d'objets
2749 @translationof Collisions of objects
2752 * Déplacement d'objets::
2753 * Correction des collisions d'objets::
2758 @node Déplacement d'objets
2759 @subsection Déplacement d'objets
2760 @translationof Moving objects
2762 @cindex déplacement d'objets se chevauchant
2763 @cindex déplacement d'objets en collision
2764 @cindex déplacement de grobs en collision
2765 @cindex objets, évitement des collisions
2766 @cindex grobs, évitement des collisions
2768 Aussi surprenant que cela puisse paraître, LilyPond n'est pas parfait.
2769 Certains éléments sur la partition peuvent se chevaucher, ce qui est
2770 regrettable mais, le plus souvent, facile à corriger. En général, quand
2771 on déplace des objets, c'est pour des raisons de lisibilité ou
2772 d'esthétique -- ils rendraient mieux avec un peu plus ou un peu moins
2773 d'espace autour d'eux.
2775 Il y a trois façons de résoudre les problèmes de chevauchement. Il est
2776 préférable de les aborder dans l'ordre suivant :
2780 L'@strong{orientation} d'un objet qui en chevauche un autre peut être
2781 changée grâce aux commandes prédéfinies dont la liste a été donnée
2782 plus haut à propos des objets de portée (voir
2783 @ref{Objets inclus dans la portée}).
2784 Les queues de note, les liaisons de phrasé et de prolongation, les
2785 crochets, les nuances et les nolets peuvent facilement être
2786 repositionnés de cette manière. En contrepartie, vous n'avez le choix
2787 qu'entre deux positions, sans personnalisation possible.
2790 Les @strong{propriétés d'objet}, auxquelles LilyPond a recours pour
2791 positionner les objets, sont modifiables avec @code{\override}. Il y a
2792 deux avantages à changer ces propriétés : (a) d'autres objets
2793 pourront être déplacés automatiquement si nécessaire pour faire de la
2794 place, et (b) la même retouche peut s'appliquer à toutes les occurrences
2795 du même type d'objet. Ces propriétés sont :
2802 Ce point a déjà été traité en détails -- voir
2803 @ref{Objets inclus dans la portée}.
2807 @code{padding}, @code{right-padding}, @code{staff-padding}
2809 @cindex décalage (padding)
2810 @cindex padding, propriété
2811 @cindex right-padding, propriété
2812 @cindex staff-padding, propriété
2814 Au moment de positionner un objet, la valeur de sa propriété
2815 @code{padding} détermine l'espace à laisser libre entre celui-ci et le
2816 coin le plus proche de l'objet à côté duquel il est placé. Vous
2817 remarquerez que c'est la valeur @code{padding} de l'objet @strong{à
2818 placer} qui compte ; la valeur @code{padding} de l'objet déjà placé
2819 est ignorée. Les espaces libres déterminés par @code{padding}
2820 s'appliquent à tous les objets associés à la
2821 @code{side-position-interface}.
2823 Le positionnement de groupes d'altérations est contrôlé par
2824 @code{right-padding}, et non plus @code{padding}. Cette propriété
2825 appartient à l'objet @code{AccidentalPlacement} qui, vous le
2826 remarquerez, prend place dans le contexte @strong{Staff}. Dans le
2827 processus de composition, les têtes de notes sont disposées en premier,
2828 puis les altérations, s'il y en a, sont ajoutées à gauche des têtes de
2829 note suivant la propriété @code{right-padding} qui détermine
2830 l'espacement par rapport aux têtes de note. C'est pourquoi seule la
2831 propriété @code{right-padding} de l'objet @code{AccidentalPlacement}
2832 joue sur le positionnement des altérations.
2834 La propriété @code{staff-padding} est très proche de la propriété
2835 @code{padding} : @code{padding} contrôle l'espace minimum entre un
2836 objet qui accepte la @code{side-position-interface} et l'objet le plus
2837 proche (généralement une note ou une ligne de portée) ;
2838 @code{staff-padding} ne s'applique qu'aux objets qui sont toujours
2839 placés au-dehors de la portée -- il contrôle l'espace minimum à insérer
2840 entre la portée et l'objet extérieur. Attention : @code{staff-padding}
2841 concerne les objets positionnés par rapport à la portée et n'a aucun
2842 effet sur les objets qui sont positionnés par rapport à une note ; tout
2843 aménagement qui lui serait apporté ne provoquera pas d'eereur, mais sera
2846 Pour trouver quelle propriété @code{padding} employer pour l'objet que
2847 vous cherchez à repositionner, il vous faut consulter les propriétés de
2848 l'objet dans la Référence des propriétés internes. Prenez garde que les
2849 propriétés @code{padding} ne sont pas forcément traitées dans l'objet en
2850 question ; il faut alors regarder les objets qui semblent s'en
2853 Toutes les valeurs @code{padding} sont exprimées en espace de portée.
2854 Pour la plupart des objets, la valeur par défaut est aux alentours de
2855 1,0 et parfois moins (cela dépend de chaque objet). Il est possible de
2856 la modifier lorsqu'on a besoin d'un espace vide plus grand (ou plus
2861 @code{self-alignment-X}
2863 @cindex self-alignment-X, propriété
2865 Cette propriété sert à aligner les objets sur la gauche, sur la droite
2866 ou à les centrer par rapport au point de référence des objets parents.
2867 Elle peut être utilisée avec tous les objets qui acceptent la
2868 @code{self-alignment-interface}. Il s'agit, en général, des objets qui
2869 contiennent du texte. Les valeurs admises sont @code{LEFT},
2870 @code{RIGHT} et @code{CENTER}. On peut aussi attribuer à
2871 la place une valeur numérique entre @code{-1} et @code{+1},
2872 où @code{-1} signifie alignement sur la gauche, @code{+1}
2873 alignement sur la droite, et les nombres intermédiaires déplacent
2874 progressivement le texte de la gauche vers la droite. Des valeurs
2875 numériques supérieures à @code{1} sont également admises
2876 pour déplacer le texte encore plus loin vers la gauche, ou des
2877 valeurs inférieures à @code{-1} pour déplacer le texte encore
2878 plus loin vers la droite. Un écart de @code{1} en valeur
2879 correspond à un déplacement de la moitié de la longueur du
2884 @code{extra-spacing-width}
2886 @cindex extra-spacing-width, propriété
2888 Cette propriété est utilisée pour tous les objets qui acceptent la
2889 @code{item-interface}. Elle reçoit deux nombres, le premier étant
2890 ajouté au bord gauche et le second au bord droit. Des nombres
2891 négatifs déplacent le coin vers la gauche, des nombres positifs
2892 vers la droite, si bien que pour élargir un objet, le premier nombre
2893 doit être négatif et le second positif. Attention : tous les
2894 objets n'acceptent pas forcément les deux nombres. Par exemple, l'objet
2895 @code{Accidental} ne retient que le premier nombre (coin gauche).
2899 @code{staff-position}
2901 @cindex staff-position, propriété
2903 @code{staff-position} est une propriété de la
2904 @code{staff-symbol-referencer-interface}, qui s'applique aux objets
2905 positionnés par rapport à la portée. Elle indique, en demi-espace de
2906 portée, la position verticale des objets par rapport à la ligne médiane
2907 de la portée. C'est bien pratique pour résoudre des problèmes de
2908 collision entre des objets comme les silences valant mesure entière,
2909 les liaisons et les notes de différentes voix.
2913 @code{horizontal-shift}
2915 @cindex horizontal-shift, propriété
2916 @cindex notes, empilement
2917 @cindex empilement de notes
2918 @cindex notes, collisions
2919 @cindex collisions de notes
2920 @cindex shift, commandes
2927 @funindex \shiftOnnn
2930 Au sein d'une même voix, toutes les notes intervenant au même instant
2931 musical sont regroupées dans un empilement (une colonne) et est créé un
2932 objet @code{NoteColumn} afin de contrôler le positionnement horizontal
2933 de ce groupe de notes -- voir « Empilement de notes » dans
2934 @ref{Instanciation explicite des voix}. Si, et seulement si deux ou
2935 plusieurs empilements au sein d'un même contexte de portée ont une
2936 orientation de hampe identique et se produisent au même instant musical,
2937 les valeurs de leurs propriétés @code{horizontal-shift} permettront de
2938 les ordonner, les empilements de rang supérieur étant progressivement
2939 décalés pour éviter les chevauchements des têtes. Cette propriété est
2940 déterminée par les commandes @code{\voiceXXX} et peut se voir aménagée
2941 par une commande @code{\override} ou, plus habituellemnt, par les
2942 commandes @code{\shiftOn}. Notez bien que cette propriété ne fait
2943 qu'affecter un rang aux empilements pour leur décalage ; elle ne
2944 détermine en rien la magnitude du décalage, qui sera augmentera
2945 progressivement et selon un pas proprotionnel à la largeur des têtes de
2946 chaque rang. Le pas, généralement de la moitié de la largeur d'une
2947 tête, peut aller jusqu'à la pleine largeur de tête en cas de groupes
2953 @cindex force-hshift, propriété
2955 La propriété @code{force-hshift} appartient à @code{NoteColumn} (en
2956 réalité à la @code{note-column-interface}). Le fait de la modifier
2957 permet de déplacer un empilement dans le cas de chevauchement
2958 d'empilements. Notez bien qu'elle sera sans effet en l'absence de
2959 chevauchement. Elle s'exprime en unité appropriée aux colonnes
2960 de notes, à savoir la largeur des têtes de note de la première voix.
2961 Son utilisation est réservée à des situations complexes dans lesquelles
2962 les commandes habituelles @code{\shiftOn}
2963 (voir @ref{Instanciation explicite des voix}) ne suffisent plus à
2964 résoudre les conflits. Elle est alors préférable à l'utilisation de la
2965 propriété @code{extra-offset}, dans la mesure où on n'a pas besoin
2966 d'exprimer la distance en espace de portée et où le fait de déplacer
2967 les notes à l'intérieur ou à l'extérieur d'une @code{NoteColumn} affecte
2968 d'autres actions comme les fusions de notes.
2974 Pour terminer, quand toutes les autres méthodes ont échoué, il est
2975 possible de repositionner verticalement les objets à la main par rapport
2976 à la ligne médiane de la portée, ou en les déplaçant à une distance
2977 donnée vers une nouvelle position. Les inconvénients sont qu'il faut
2978 individuellement, pour chaque objet, trouver les valeurs correctes de
2979 repositionnement souvent par tâtonnement et que, puisque le
2980 mouvement est opéré après que LilyPond a placé tous les autres
2981 objets, c'est à l'utilisateur de résoudre tous les problèmes de
2982 collision qui pourraient survenir. Et le pire avec cette méthode est
2983 que, le jour où la musique est modifiée, il faut de nouveau rechercher
2984 les valeurs de repositionnement. Les propriétés à utiliser pour ce type
2985 de repositionnement manuel sont :
2991 @cindex extra-offset, propriété
2993 Cette propriété s'applique à tout objet acceptant la
2994 @code{grob-interface}. Elle reçoit une paire de nombres qui indiquent
2995 le déplacement supplémentaire dans le sens horizontal et vertical. Des
2996 nombres négatifs déplacent l'objet vers la gauche ou vers la droite.
2997 L'unité utilisée est l'espace de portée. Le déplacement supplémentaire
2998 intervient une fois que la composition des objets est achevée, si bien
2999 qu'un objet peut être repositionné à n'importe quel endroit sans
3000 perturber quoi que ce soit.
3004 @cindex positions, propriété
3006 Cette propriété est très utile pour ajuster manuellement l'inclinaison
3007 et la hauteur des barres de ligature, des liaisons et des nolets. Elle
3008 est suivie de deux nombres qui donnent la position des extrémités gauche
3009 et droite des barres, liaisons, etc. par rapport à la ligne médiane de
3010 la portée. L'unité de référence est l'intervalle de lignes de portée.
3011 Attention toutefois au fait que les liaisons et phrasés ne peuvent pas
3012 être repositionnés n'importe où. LilyPond commence par dresser la liste
3013 des emplacements possibles pour les liaisons et choisit par défaut la
3014 liaison qui @qq{semble la meilleure}. Si la propriété @code{positions}
3015 a été retouchée, la liaison la plus proche de la position demandée sera
3016 retenue dans la liste.
3021 Il est possible qu'un objet ne dispose pas de toutes ces propriétés. Il
3022 est donc nécessaire de consulter la RPI pour vérifier quelles sont les
3023 propriétés disponibles pour l'objet en question.
3025 Voici une liste d'objets les plus couramment impliqués dans les
3026 collisions, avec le nom de l'objet à consulter dans la RPI afin de
3027 trouver les propriétés à retoucher pour obtenir un déplacement.
3030 @multitable @columnfractions .5 .5
3031 @headitem Type d'objet @tab Nom d'objet
3032 @item Articulations @tab @code{Script}
3033 @item Barres de ligature @tab @code{Beam}
3034 @item Doigté @tab @code{Fingering}
3035 @item Liaisons de phrasé @tab @code{Slur}
3036 @item Liaisons de prolongation @tab @code{Tie}
3037 @item Nolets @tab @code{TupletBracket}
3038 @item Nuances (verticalement) @tab @code{DynamicLineSpanner}
3039 @item Nuances (horizontalement) @tab @code{DynamicText}
3040 @item Reprises / marques de texte @tab @code{RehearsalMark}
3041 @item Texte, par ex. @code{^"texte"} @tab @code{TextScript}
3045 @node Correction des collisions d'objets
3046 @subsection Correction des collisions d'objets
3047 @translationof Fixing overlapping notation
3049 Voyons maintenant comment les propriétés décrites dans la section
3050 précédente peuvent nous aider à résoudre les collisions.
3053 * La propriété padding::
3054 * La propriété right-padding::
3055 * La propriété staff-padding::
3056 * La propriété self-alignment-X::
3057 * La propriété staff-position::
3058 * La propriété extra-offset::
3059 * La propriété positions::
3060 * La propriété force-hshift::
3064 @node La propriété padding
3065 @unnumberedsubsubsec La propriété @code{padding}
3066 @translationof The padding property
3068 @cindex décalage (padding)
3069 @cindex résolution des chevauchements de notation
3070 @cindex chevauchement de notation
3072 En jouant sur la propriété @code{padding} (littéralement
3073 @qq{rembourrage}), on augmente (ou on diminue) la distance entre
3074 des symboles qui sont imprimés au-dessus ou en dessous des notes.
3076 @cindex Script, exemple de dérogation
3077 @cindex padding, exemple d'utilisation de la propriété
3079 @lilypond[quote,fragment,relative=1,verbatim]
3081 \override Script.padding = #3
3085 @cindex MetronomeMark, exemple de dérogation
3086 @cindex padding, exemple d'utilisation de la propriété
3088 @lilypond[quote,fragment,relative=1,verbatim]
3089 % This will not work, see below:
3090 \override MetronomeMark.padding = #3
3094 \override Score.MetronomeMark.padding = #3
3099 Vous remarquerez dans le second exemple à quel point il est important de
3100 préciser le nom du contexte qui contient l'objet. Puisque l'objet
3101 @code{MetronomeMark} appartient au contexte @code{Score}, le fait de
3102 modifier la propriété dans le contexte @code{Voice} passera inaperçu.
3103 Pour plus de détails, voir @ruser{Modification de propriétés}.
3105 Si on augmente la propriété @code{padding} d'un objet alors que celui-ci
3106 fait partie d'un ensemble d'objets positionnés en fonction de leur
3107 @code{outside-staff-priority}, cet objet sera déplacé, ainsi que tous
3108 les autres objets du groupe.
3111 @node La propriété right-padding
3112 @unnumberedsubsubsec La propriété @code{right-padding}
3113 @translationof The right-padding property
3115 @cindex right-padding, propriété
3117 La propriété @code{right-padding} joue sur l'espacement entre une
3118 altération et la note sur laquelle elle porte. On ne l'utilise pas
3119 souvent, mais l'espacement par défaut peut se révéler inadéquat avec
3120 certaines altérations ou certains glyphes utilisés en musique
3121 microtonale. Le stencil de l'altération devra alors être construit sous
3122 la forme d'un @code{markup} qui contiendra le ou les symboles requis,
3125 @cindex Accidental, exemple de dérogation
3126 @cindex text, exemple d'utilisation de la propriété
3127 @cindex stencil, exemple d'utilisation de la propriété
3128 @cindex AccidentalPlacement, exemple de dérogation
3129 @cindex right-padding, exemple d'utilisation de la propriété
3131 @lilypond[quote,ragged-right,verbatim]
3132 sesquisharp = \markup { \sesquisharp }
3135 % This prints a sesquisharp but the spacing is too small
3136 \once \override Accidental.stencil = #ly:text-interface::print
3137 \once \override Accidental.text = #sesquisharp
3139 % This improves the spacing
3140 \once \override Score.AccidentalPlacement.right-padding = #0.6
3141 \once \override Accidental.stencil = #ly:text-interface::print
3142 \once \override Accidental.text = #sesquisharp
3148 Cette méthode utilise, pour le stencil des altérations, une retouche
3149 qui ne sera pas reprise par la suite. Le type de stencil est
3150 obligatoirement une procédure, qui consiste ici à imprimer le contenu de
3151 la propriété @code{text} de @code{Accidental}, déclaré comme étant un
3152 signe sesqui-dièse. Celui-ci est ensuite repoussé devant la tête de
3153 note par la retouche de @code{right-padding}.
3156 @node La propriété staff-padding
3157 @unnumberedsubsubsec La propriété @code{staff-padding}
3158 @translationof The staff-padding property
3160 @cindex alignement d'objets sur une ligne de base
3161 @cindex objets, alignement sur une ligne de base
3163 @code{staff-padding} sert à aligner des objets tels que des nuances
3164 sur une ligne fictive à une distance donnée par rapport à la portée en
3165 l'absence d'autre élément de notation qui les repousserait. Ce n'est
3166 pas une propriété de @code{DynamicText} mais de
3167 @code{DynamicLineSpanner}, car la ligne fictive est destinée à
3168 s'appliquer autant à @strong{toutes} les nuances, notamment celles qui
3169 sont créées comme des bandeaux en longueur (en anglais @emph{Spanners}).
3170 Tel est donc le moyen d'aligner les indications de nuance, comme dans
3171 cet exemple repris de la section précédente :
3173 @cindex DynamicText, exemple de dérogation
3174 @cindex extra-spacing-width, exemple d'utilisation de la propriété
3175 @cindex DynamicLineSpanner, exemple de dérogation
3176 @cindex staff-padding, exemple d'utilisation de la propriété
3178 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
3179 \override DynamicLineSpanner.staff-padding = #3
3184 @node La propriété self-alignment-X
3185 @unnumberedsubsubsec La propriété @code{self-alignment-X}
3186 @translationof The self-alignment-X property
3188 L'exemple suivant montre comment ajuster le positionnement d'une
3189 indication de corde relativement à une hampe, en alignant le coin
3190 droit sur le point de référence de la note parente :
3192 @cindex StringNumber, exemple de dérogation
3193 @cindex self-alignment-X, exemple d'utilisation de la propriété
3195 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
3198 \once \override StringNumber.self-alignment-X = #RIGHT
3203 @node La propriété staff-position
3204 @unnumberedsubsubsec La propriété @code{staff-position}
3205 @translationof The staff-position property
3207 @cindex collision d'objets à l'intérieur d'une portée
3209 Dans une voix, un silence valant une mesure entière peut chevaucher les
3210 notes d'une autre voix. Vu que ces silences sont centrés entre les deux
3211 barres de mesure, il serait très compliqué de programmer LilyPond pour
3212 repérer ces risques de collision dans la mesure où, normalement, toutes
3213 les collisions entre notes ou entre notes et silences se produisent sur
3214 des notes et silences simultanés. Voici un exemple de collision de ce
3217 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
3218 << { c4 c c c } \\ { R1 } >>
3221 Ici, la meilleure solution consiste à déplacer le symbole de pause vers
3222 le bas -- puisque cette pause appartient à la voix deux. Par défaut,
3223 dans la @code{\voiceTwo} (c'est-à-dire dans la seconde voix d'une
3224 construction @code{<<@{ @dots{} @} \\ @{ @dots{} @}>>}), la propriété
3225 @code{staff-position} est réglée sur @code{-4} pour les
3226 @code{MultiMeasureRest} ; nous avons donc besoin de la déplacer, disons,
3227 de quatre demi-intervalles vers le bas, ce qui donne @code{-8}.
3229 @cindex MultiMeasureRest, exemple de dérogation
3230 @cindex staff-position, exemple d'utilisation de la propriété
3232 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
3236 \override MultiMeasureRest.staff-position = #-8
3241 C'est mieux que d'utiliser, par exemple, @code{extra-offset},
3242 car la ligne supplémentaire au-dessus du silence est insérée
3246 @node La propriété extra-offset
3247 @unnumberedsubsubsec La propriété @code{extra-offset}
3248 @translationof The extra-offset property
3250 @cindex positionnement des objets
3251 @cindex positionnement des grobs
3252 @cindex objets, positionnement
3253 @cindex grobs, positionnement
3255 La propriété @code{extra-offset} offre la possibilité de contrôler
3256 entièrement le placement d'un objet, aussi bien horizontalement que
3259 Dans l'exemple suivant, la seconde indication de doigté est déplacée
3260 légèrement vers la gauche et de 1,8 intervalle de lignes vers le bas :
3262 @cindex Fingering, exemple de dérogation
3263 @cindex extra-offset, exemple d'utilisation de la propriété
3265 @lilypond[quote,fragment,relative=1,verbatim]
3268 \once \override Fingering.extra-offset = #'(-0.3 . -1.8)
3273 @node La propriété positions
3274 @unnumberedsubsubsec La propriété @code{positions}
3275 @translationof The positions property
3277 @cindex contrôle des nolets, liaisons, phrasés et ligatures
3278 @cindex gestion manuelle des nolets, liaisons, phrasés et ligatures
3279 @cindex ligatures de nolet, gestion manuelle
3280 @cindex liaisons, gestion manuelle
3281 @cindex phrasés, gestion manuelle
3282 @cindex ligatures, gestion manuelle
3284 La propriété @code{positions} permet de contrôler manuellement la
3285 position et l'inclinaison des nolets, coulés, liaisons de phrasé et
3288 Voici un exemple où la liaison de phrasé recouvre la liaison
3291 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
3295 @cindex PhrasingSlur, exemple de dérogation
3296 @cindex positions, exemple d'utilisation de la propriété
3299 Nous pourrions envisager de remonter quelque peu les extrémités
3300 de la liaison de phrasé. Commençons par repositionner l'extrémité
3301 gauche à 2,5 espaces de portée au-dessus de la ligne médiane, et
3302 la droite à 4,5 ; LilyPond choisira la courbe dont les extrémités
3303 seront les plus approchantes de celle déterminées :
3305 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
3306 \once \override PhrasingSlur.positions = #'(2.5 . 4.5)
3310 C'est déjà mieux, mais ne pourrait-on pas maintenant abaisser un
3311 peu l'extrémité droite de la liaison d'articulation ? Vous
3312 constaterez qu'il n'est pas possible d'y arriver, tout simplement
3313 parce qu'il n'y a pas de meilleur candidat ; la propriété
3314 @code{positions} n'est alors d'aucune utilité. Les liaisons,
3315 aussi bien de tenue que d'articulation ou de phrasé, peuvent se
3316 positionner et se dessiner tout en finesse lorsque nécessaire --
3317 voir à ce sujet @ruser{Modification des liaisons}.
3319 Voici un autre exemple. Comme nous pouvons le constater, les barres de
3320 ligature chevauchent les liaisons de tenue :
3322 @lilypond[quote,verbatim,fragment,ragged-right]
3328 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
3333 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
3339 On peut y remédier en déplaçant manuellement vers le haut les deux
3340 extrémités des ligatures de croches, non plus à 1,81 intervalle
3341 au-dessous de la ligne médiane mais, disons, à 1 :
3343 @cindex Beam, exemple de dérogation
3344 @cindex positions, exemple d'utilisation de la propriété
3346 @lilypond[quote,verbatim,fragment,ragged-right]
3353 \override Beam.positions = #'(-1 . -1)
3354 e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g''
3360 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
3366 Vous remarquerez que la retouche continue de s'appliquer au
3367 second bloc de croches de la première voix mais qu'il ne s'applique
3368 à aucune mesure de la deuxième voix.
3371 @node La propriété force-hshift
3372 @unnumberedsubsubsec La propriété @code{force-hshift}
3373 @translationof The force-hshift property
3375 Maintenant, nous sommes prêts à appliquer les dernières corrections à
3376 l'exemple de Chopin présenté à la fin de @ref{J'entends des Voix}, que
3377 nous avions laissé dans cet état :
3379 @lilypond[quote,verbatim,fragment,ragged-right]
3380 \new Staff \relative c'' {
3395 La note intermédiaire du premier accord, le la bémol à la quatrième
3396 voix, doit rester dans le même empilement que la note haute. Pour y
3397 remédier, nous pourrions utiliser @code{\shiftOff}, ce qui
3398 malheureusement générera des avertissements au sujet d'empilements qui
3399 se chevauchent. Nous préférons régler le @code{force-hshift} -- qui est
3400 une propriété de @code{NoteColumn} -- de cette note sur zéro.
3402 Quant au second accord, il serait préférable que le fa s'aligne avec le
3403 la et que la note la plus basse se positionne un peu plus sur la droite
3404 pour éviter que les hampes se chevauchent. Pour cela, nous réglons le
3405 @code{force-hshift} au niveau du @code{NoteColumn} du ré bémol de telle
3406 sorte qu'il se déplace de la moitié d'un espace de portée vers la
3407 droite et le @code{force-hshift} du fa sur zéro. Vous noterez la
3408 présence du @code{\once} qui évite la propagation de ces réglages
3409 au-delà de cet instantn musical particulier -- bien que la présence du
3410 @code{\once} et du second @code{\override} de la quatrième voix ne
3411 soient pas indispensables dans ce court extrait, ce ne serait pas
3412 montrer l'exemple que de les omettre.
3414 Et voici le résultat final :
3416 @cindex NoteColumn, exemple de dérogation
3417 @cindex force-hshift, exemple d'utilisation de la propriété
3419 @lilypond[quote,verbatim,fragment,ragged-right]
3420 \new Staff \relative c'' {
3425 { <ees, c>2 \once \override NoteColumn.force-hshift = #0.5 des }
3428 { \once \override NoteColumn.force-hshift = 0 aes'2
3429 \once \override NoteColumn.force-hshift = 0 f4 fes }
3436 @node Exemple concret
3437 @subsection Exemple concret
3438 @translationof Real music example
3440 Pour terminer ce chapitre consacré aux retouches, voici, étape par
3441 étape, la mise en forme d'un exemple concret nécessitant un certain
3442 nombre de retouches jusqu'à l'obtention du résultat attendu. Cet
3443 exemple a été choisi en raison des problèmes inhabituels de notation
3444 qu'il soulevait et pour vous apprendre à les résoudre grâce au Manuel de
3445 notation. Il n'est pas représentatif d'une opération normale de
3446 gravure ; que ces difficultés ne vous découragent donc pas ! Des
3447 difficultés comme celles-ci ne sont, heureusement, pas courantes !
3449 Cet exemple est tiré de la Première Ballade de Chopin, Op. 23, mesures
3450 6 à 9 ; cela correspond à la transition entre le Lento d'ouverture
3451 et le Moderato. Voici, pour commencer, ce à quoi nous voulons que la
3452 partition ressemble ; pour limiter les complications, nous n'avons
3453 pas fait apparaître les indications de nuance, de doigté ni de pédale.
3456 @c The following should appear as music without code
3457 @c This example should not be indexed
3458 @c line-width ensures no break
3459 @lilypond[quote,ragged-right,line-width=6\in]
3460 rhMusic = \relative c'' {
3463 \once \override Tie.staff-position = #3.5
3467 \mergeDifferentlyHeadedOn
3468 \mergeDifferentlyDottedOn
3469 bes2.\tempo "Moderato" r8
3475 % Reposition the c2 to the right of the merged note
3476 \once \override NoteColumn.force-hshift = #1.0
3477 % Move the c2 out of the main note column
3478 % so the merge will work
3485 % Stem on the d2 must be down to permit merging
3487 % Stem on the d2 should be invisible
3488 \tweak Flag.transparent ##t
3496 \mergeDifferentlyHeadedOff
3497 \mergeDifferentlyDottedOff
3502 lhMusic = \relative c' {
3504 <d g, d>1)\arpeggio |
3511 \new Staff = "RH" <<
3515 \new Staff = "LH" <<
3524 Nous constatons tout d'abord que, dans la troisième mesure, la main
3525 droite compte quatre voix. Ce sont les cinq croches avec une barre,
3526 le do avec liaison, le ré blanche qui se fond avec le ré croche, et le
3527 fa dièse noire pointée qui se fond lui aussi avec la croche de même
3528 hauteur. Tout le reste se réduit à une seule voix. Le plus simple est
3529 donc de créer temporairement ces trois voix supplémentaires au moment
3530 opportun. Si vous avez oublié comment faire, reportez-vous à
3531 @ref{J'entends des Voix} et @ref{Instanciation explicite des voix}.
3532 Nous opterons ici pour une déclaration explicite des voix du passage
3533 polyphonique, puisque LilyPond est alors plus performant en matière
3534 d'évitement des collisions.
3536 Commençons par saisir les notes comme appartenant à deux variables,
3537 mettons en place l'ossature des portées dans un bloc @code{\Score} et
3538 voyons ce que LilyPond propose par défaut :
3540 @c line-width ensures no break
3541 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3542 rhMusic = \relative c'' {
3548 % Start polyphonic section of four voices
3550 { c,8 d fis bes a } % continuation of main voice
3564 g2. % continuation of main voice
3568 lhMusic = \relative c' {
3577 \new Staff = "RH" <<
3581 \new Staff = "LH" <<
3590 Toutes les notes sont correctes mais l'allure générale est loin d'être
3591 satisfaisante. La liaison se heurte à l'indication de mesure lors du
3592 changement de métrique, la ligature des croches n'est pas bonne dans la
3593 troisième mesure, les notes ne sont pas fusionnées et il manque
3594 plusieurs éléments de notation. Commençons par le plus simple. Nous
3595 pouvons corriger la ligature des croches en la créant manuellement et
3596 nous pouvons facilement ajouter les limites droite et gauche de la
3597 liaison de phrasé, puisque tout cela a déjà été traité dans le tutoriel.
3600 @c line-width ensures no break
3601 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3602 rhMusic = \relative c'' {
3608 % Start polyphonic section of four voices
3610 { c,8 d fis bes a } % continuation of main voice
3624 g2.\) % continuation of main voice
3628 lhMusic = \relative c' {
3637 \new Staff = "RH" <<
3641 \new Staff = "LH" <<
3650 La première mesure est maintenant correcte. La seconde contient un
3651 arpège et doit se terminer par une double barre. Comment faire, puisque
3652 cela n'a pas été traité dans le Manuel d'initiation ? C'est alors
3653 qu'il faut nous reporter au Manuel de notation. Quand on cherche
3654 @qq{arpège} et @qq{barre de mesure} dans l'index, on voit aisément qu'il
3655 faut ajouter @code{\arpeggio} à un accord pour produire un arpège et
3656 qu'une double barre est le résultat de la commande @code{\bar "||"}.
3657 Rien de plus facile ! Nous devons ensuite corriger la collision entre
3658 la liaison et l'indication de mesure. Le mieux est de déplacer la
3659 liaison vers le haut. La méthode pour déplacer les objets a déjà été
3660 présentée dans @ref{Déplacement d'objets}, et l'on sait que, pour des
3661 objets positionnés par rapport à la portée, il nous faut modifier leur
3662 propriété @code{staff-position}, exprimée en demi-intervalles de lignes
3663 par rapport à la ligne médiane de la portée. Voici donc la retouche à
3664 insérer juste devant la première note liée ; elle est censée déplacer la
3665 liaison vers le haut de 3,5 demi-intervalles de lignes au-dessus de la
3668 @code{\once \override Tie.staff-position = #3.5}
3670 Cela s'adjoint à la deuxième mesure, pour donner :
3672 @c line-width ensures no break
3673 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3674 rhMusic = \relative c'' {
3677 \once \override Tie.staff-position = #3.5
3682 % Start polyphonic section of four voices
3684 { c,8 d fis bes a } % continuation of main voice
3698 g2.\) % continuation of main voice
3702 lhMusic = \relative c' {
3704 <d g, d>1)\arpeggio |
3711 \new Staff = "RH" <<
3715 \new Staff = "LH" <<
3724 Venons-en à la troisième mesure et au début de la section Moderato.
3725 Dans le Tutoriel, il est indiqué comment insérer une indication de tempo
3726 à l'aide de la commande @code{\tempo} ; pas de problème, du coup, pour
3727 ajouter @qq{Moderato}. Mais comment faire pour fusionner les notes de
3728 différentes voix ? C'est là que le Manuel de notation peut nous venir
3729 en aide. Une recherche sur @qq{fusionnement de notes} dans l'index nous
3730 renvoie au chapitre @ruser{Résolution des collisions}, et plus
3731 précisément aux commandes permettant de fusionner des notes en fonction
3732 de leur type et selon qu'elles sont pointées ou non. Dans notre exemple,
3733 pour la durée de la polyphonie de la troisième mesure, nous avons besoin
3734 de fusionner deux types de notes ; grâce aux informations trouvées dans
3735 le Manuel de notation, nous ajoutons
3738 \mergeDifferentlyHeadedOn
3739 \mergeDifferentlyDottedOn
3743 au début de cette section et
3746 \mergeDifferentlyHeadedOff
3747 \mergeDifferentlyDottedOff
3751 à la fin, ce qui donne :
3753 @c line-width ensures no break
3754 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3755 rhMusic = \relative c'' {
3758 \once \override Tie.staff-position = #3.5
3762 bes2.\tempo "Moderato" r8
3763 \mergeDifferentlyHeadedOn
3764 \mergeDifferentlyDottedOn
3765 % Start polyphonic section of four voices
3767 { c,8 d fis bes a } % continuation of main voice
3781 \mergeDifferentlyHeadedOff
3782 \mergeDifferentlyDottedOff
3783 g2.\) % continuation of main voice
3787 lhMusic = \relative c' {
3789 <d g, d>1)\arpeggio |
3796 \new Staff = "RH" <<
3800 \new Staff = "LH" <<
3809 Ces retouches ont permis de fusionner les deux fa dièse mais pas les
3810 deux ré. Pourquoi ? La réponse se trouve dans la même section du
3811 Manuel de notation : les notes à fusionner doivent avoir des hampes
3812 dans des directions opposées et deux notes ne peuvent pas être
3813 fusionnées s'il y a une troisième note dans la même colonne. Ici, les
3814 deux ré ont leur hampe orientée vers le haut et il y a une troisième
3815 note, do. Nous savons changer l'orientation de la hampe avec
3816 @code{\stemDown} et le Manuel de notation nous indique également comment
3817 déplacer le do -- en produisant un décalage grâce à l'une des commandes
3818 @code{\shift}. Mais laquelle ? Le do appartient à la deuxième
3819 voix et n'est pas décalé ; les deux ré appartiennent respectivement
3820 à la première et à la troisième voix, et l'un n'est pas décalé tandis
3821 que l'autre l'est. Il nous faut donc décaler largement le do avec la
3822 commande @code{\shiftOnn} pour éviter une interférence avec les deux ré.
3823 Voici ce que donnent ces modifications :
3825 @cindex Tie, exemple de dérogation
3826 @cindex staff-position, exemple d'utilisation de la propriété
3828 @c line-width ensures no break
3829 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3830 rhMusic = \relative c'' {
3833 \once \override Tie.staff-position = #3.5
3837 bes2.\tempo "Moderato" r8
3838 \mergeDifferentlyHeadedOn
3839 \mergeDifferentlyDottedOn
3840 % Start polyphonic section of four voices
3842 { c,8 d fis bes a } % continuation of main voice
3845 % Move the c2 out of the main note column
3846 % so the merge will work
3851 % Stem on the d2 must be down to permit merging
3859 \mergeDifferentlyHeadedOff
3860 \mergeDifferentlyDottedOff
3861 g2.\) % continuation of main voice
3865 lhMusic = \relative c' {
3867 <d g, d>1)\arpeggio |
3874 \new Staff = "RH" <<
3878 \new Staff = "LH" <<
3887 Pas loin ! Il ne reste plus que deux problèmes : les ré une
3888 fois fusionnés ne devraient plus avoir de hampe vers le bas, et le do
3889 serait mieux à la droite des ré. Nous savons remédier à ces deux
3890 problèmes grâce aux retouches précédentes : nous allons rendre la
3891 hampe transparente et déplacer le do avec la propriété
3892 @code{force-hshift}. Et voici le résultat final :
3894 @cindex NoteColumn, exemple de dérogation
3895 @cindex force-hshift, exemple d'utilisation de la propriété
3896 @cindex Stem, exemple de dérogation
3897 @cindex transparent, exemple d'utilisation de la propriété
3899 @c line-width ensures no break
3900 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3901 rhMusic = \relative c'' {
3904 \once \override Tie.staff-position = #3.5
3908 bes2.\tempo "Moderato" r8
3909 \mergeDifferentlyHeadedOn
3910 \mergeDifferentlyDottedOn
3911 % Start polyphonic section of four voices
3913 { c,8 d fis bes a } % continuation of main voice
3917 % Reposition the c2 to the right of the merged note
3918 \once \override NoteColumn.force-hshift = #1.0
3919 % Move the c2 out of the main note column
3920 % so the merge will work
3927 % Stem on the d2 must be down to permit merging
3929 % Stem on the d2 should be invisible
3930 \tweak Flag.transparent ##t
3938 \mergeDifferentlyHeadedOff
3939 \mergeDifferentlyDottedOff
3940 g2.\) % continuation of main voice
3944 lhMusic = \relative c' {
3946 <d g, d>1)\arpeggio |
3953 \new Staff = "RH" <<
3957 \new Staff = "LH" <<
3967 @node Autres retouches
3968 @section Autres retouches
3969 @translationof Further tweaking
3972 * Autres utilisations des retouches::
3973 * Utilisation de variables dans les retouches::
3974 * Feuilles de style::
3975 * Autres sources de documentation::
3976 * Retouches avancées avec Scheme::
3980 @node Autres utilisations des retouches
3981 @subsection Autres utilisations des retouches
3982 @translationof Other uses for tweaks
3985 * Liaison entre plusieurs voix::
3986 * Rendu MIDI d'un point d'orgue::
3989 @cindex transparent, utilisation de la propriété
3990 @cindex création d'objet invisible
3991 @cindex suppression d'objets
3992 @cindex objets, suppression d'
3993 @cindex masquage d'objets
3994 @cindex objets, masquage d'
3995 @cindex invisibles, objets
3996 @cindex objets, invisibles
3997 @cindex liaison de tenue avec changement de voix
4000 @node Liaison entre plusieurs voix
4001 @unnumberedsubsubsec Liaison entre plusieurs voix
4002 @translationof Tying notes across voices
4004 Voici un exemple qui montre comment créer une liaison de
4005 prolongation entre des notes appartenant à des voix différentes. En
4006 temps normal, seules deux notes appartenant à une même voix
4007 peuvent être ainsi liées. La solution consiste à utiliser deux voix,
4008 dont l'une avec les notes liées
4010 @lilypond[quote,fragment,relative=2]
4011 << { b8~ 8\noBeam } \\ { b8[ g] } >>
4015 et à rendre transparente la première hampe de cette voix ;
4016 on a alors l'impression que la liaison couvre les deux voix.
4018 @cindex Stem, exemple de dérogation
4019 @cindex transparent, exemple d'utilisation de la propriété
4021 @lilypond[quote,fragment,relative=2,verbatim]
4024 \tweak Flag.transparent ##t
4032 Pour être sûr que la hampe que nous avons rendue transparente
4033 n'empiète pas trop sur le trait de liaison, nous pouvons l'allonger en
4034 réglant la longueur (@code{length}) sur @code{8},
4036 @lilypond[quote,fragment,relative=2,verbatim]
4039 \tweak Flag.transparent ##t
4040 \tweak Stem.length #8
4050 @cindex affinage généré par une dérogation
4052 Nous aurions pu, pour déroger à la transparence d'un objet
4053 graphique, utiliser le raccourci @code{\omit} que nous avons vu
4054 plus haut. L'affinage constitue une opération différente en ceci
4055 qu'il n'affecte que les propriétés générées par une expression
4056 musicale unique. Nous pourrions tout à fait convertir des
4057 dérogations en affinages à l'aide d'un @code{\single} et ré-écrire
4058 l'exemple précédent de cette manière :
4060 @lilypond[quote,fragment,relative=2,verbatim]
4065 \tweak Stem.length #8
4073 Dans ce cas particulier, la différence avec un @code{\once \hide}
4074 n'est pas flagrante. Elle prend cependant toute son importance
4075 lorsque plusieurs objets de retrouvent au même instant musical --
4076 comme les têtes des notes d'un accord. En effet, la présence d'un
4077 @code{\once} sera répercutée à tous les objets, alors qu'un
4078 @code{\single} n'affectera, lui, qu'un seul objet, celui généré
4079 par l'expression musicale qui le suit directement.
4082 @node Rendu MIDI d'un point d'orgue
4083 @unnumberedsubsubsec Rendu MIDI d'un point d'orgue
4084 @translationof Simulating a fermata in MIDI
4086 @cindex stencil, utilisation de la propriété
4087 @cindex point d'orgue, rendu en MIDI
4089 En ce qui concerne les objets extérieurs à la portée, quand on veut les
4090 faire disparaître de la partition imprimée, il est généralement
4091 préférable de modifier leur propriété @code{stencil} plutôt que leur
4092 propriété @code{transparent}. Le fait d'attribuer à la propriété
4093 @code{stencil} d'un objet la valeur @code{#f} supprimera entièrement
4094 celui-ci de la partition. Il ne risquera donc pas de gêner le placement
4097 Par exemple, si nous voulons changer le réglage de métronome pour
4098 simuler un point d'orgue dans le fichier MIDI, nous ne voulons surtout
4099 pas que cette indication métronomique apparaisse sur la partition ni
4100 qu'elle influence l'espacement entre les deux systèmes ou la position
4101 des annotations voisines sur la portée. Le fait d'attribuer à la
4102 propriété @code{stencil} la valeur @code{#f} est donc la bonne solution.
4103 Nous montrons ci-dessous le résultat des deux méthodes :
4105 @cindex MetronomeMark, exemple de dérogation
4106 @cindex transparent, exemple d'utilisation de la propriété
4108 @lilypond[quote,verbatim,ragged-right]
4111 % Visible tempo marking
4114 \once \hide Score.MetronomeMark
4115 % Invisible tempo marking to lengthen fermata in MIDI
4118 % New tempo for next section
4127 @cindex MetronomeMark, exemple de dérogation
4128 @cindex stencil, exemple d'utilisation de la propriété
4130 @lilypond[quote,verbatim,ragged-right]
4133 % Visible tempo marking
4136 \once \omit Score.MetronomeMark
4137 % Invisible tempo marking to lengthen fermata in MIDI
4140 % New tempo for next section
4150 Les deux méthodes permettent d'enlever l'indication métronomique qui
4151 allonge le point d'orgue de la partition, et toutes deux modifient le
4152 rythme MIDI comme souhaité mais, dans la première, l'indication
4153 métronomique transparente repousse vers le haut l'indication de tempo,
4154 contrairement à la seconde (avec le stencil désactivé) qui la laisse à
4158 Glossaire musicologique :
4159 @rglosnamed{system,système}.
4162 @node Utilisation de variables dans les retouches
4163 @subsection Utilisation de variables dans les retouches
4164 @translationof Using variables for layout adjustments
4166 @cindex variables, utilisation dans les retouches
4167 @cindex utilisation de variables dans les retouches
4168 @cindex retouches et utilisation de variables
4170 Les commandes de retouche sont souvent longues et pénibles à
4171 taper, et ne tolèrent pas la moindre erreur. Lorsqu'on a besoin de
4172 faire plusieurs fois les mêmes retouches, il est préférable de
4173 définir des variables qui les contiennent.
4175 Imaginons que nous voulions accentuer certains mots dans des paroles en
4176 les mettant en italique. Au lieu des commandes @code{\italic} et
4177 @code{\bold}, qui ne fonctionnent dans les paroles que si elles sont
4178 enchâssées dans un @code{\markup} -- ce qui les rend pénibles à saisir
4179 -- pouvons-nous employer les commandes @code{\override} et
4183 @code{\override Lyrics.LyricText.font-shape = #'italic}
4184 @code{\override Lyrics.LyricText.font-series = #'bold}
4186 @code{\revert Lyrics.LyricText.font-shape}
4187 @code{\revert Lyrics.LyricText.font-series}
4190 Là encore, ce serait extrêmement pénible à saisir, surtout s'il y avait
4191 beaucoup de mots à retoucher de cette façon. Plutôt que cette
4192 solution, nous déclarons ces commandes comme étant deux variables,
4193 et les utilisons comme ci-après -- quoique on choisirait sans doute pour
4194 les variables des noms plus courts pour simplifier la frappe. Par
4195 ailleurs, le fait de recourir à une variable ne nous expose plus à
4196 l'oubli des espaces entourant les points lorsqu'explicités au beau
4197 milieu d'un bloc @code{\lyricmode} !
4199 @cindex LyricText, exemple de dérogation
4200 @cindex font-shape, exemple d'utilisation de la propriété
4201 @cindex font-series, exemple d'utilisation de la propriété
4203 @lilypond[quote,verbatim]
4205 \override Lyrics.LyricText.font-shape = #'italic
4206 \override Lyrics.LyricText.font-series = #'bold
4210 \revert Lyrics.LyricText.font-shape
4211 \revert Lyrics.LyricText.font-series
4214 global = { \key c \major \time 4/4 \partial 4 }
4216 SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g }
4217 AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e }
4218 TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
4219 BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
4221 VerseOne = \lyrics {
4222 E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
4225 VerseTwo = \lyricmode {
4226 O | \emphasize Christ, \normal whose voice the | wa -- ters heard,
4229 VerseThree = \lyricmode {
4230 O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
4233 VerseFour = \lyricmode {
4234 O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
4241 \new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
4242 \new Voice = "Alto" { \voiceTwo \AltoMusic }
4243 \new Lyrics \lyricsto "Soprano" { \VerseOne }
4244 \new Lyrics \lyricsto "Soprano" { \VerseTwo }
4245 \new Lyrics \lyricsto "Soprano" { \VerseThree }
4246 \new Lyrics \lyricsto "Soprano" { \VerseFour }
4250 \new Voice = "Tenor" { \voiceOne \TenorMusic }
4251 \new Voice = "Bass" { \voiceTwo \BassMusic }
4258 @node Feuilles de style
4259 @subsection Feuilles de style
4260 @translationof Style sheets
4262 La sortie que produit LilyPond peut être largement modifiée -- voir
4263 @ref{Retouche de partition} pour plus de détails. Mais que faire si
4264 vous avez beaucoup de fichiers auxquels vous souhaitez appliquer vos
4265 retouches ? Ou si vous souhaitez simplement séparer les retouches
4266 de la musique elle-même ? Rien de plus facile.
4268 Prenons un exemple. Ne vous inquiétez pas si vous ne comprenez pas
4269 les parties avec tous les @code{#()}. Celles-ci sont expliquées dans
4270 @ref{Retouches avancées avec Scheme}.
4272 @lilypond[quote,verbatim,ragged-right]
4274 \tweak self-alignment-X #-0.6
4275 #(make-dynamic-script
4276 #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4279 #(define-music-function
4280 (parser location string)
4282 #{ <>^\markup \bold \box #string #})
4286 a4.\mpdolce d8 cis4--\glissando a |
4290 g8(\! fis)-. e( d)-. cis2 |
4294 On peut faire quelque chose pour les définitions de @code{mpdolce}
4295 et @code{inst}. Elles produisent le résultat que nous désirons,
4296 mais nous pourrions aussi vouloir les utiliser dans une autre pièce.
4297 Il suffirait de les copier et coller au début de chaque
4298 fichier, mais c'est fastidieux. De plus, cela laisse les définitions
4299 dans nos fichiers de musique, et je trouve personnellement tous ces
4300 @code{#()} assez laids. Stockons-les dans un autre fichier :
4303 %%% enregistrez ceci dans un fichier nommé "definitions.ily"
4305 \tweak self-alignment-X #-0.6
4306 #(make-dynamic-script
4307 #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4310 #(define-music-function
4311 (parser location string)
4313 #@{ <>^\markup \bold \box #string #@})
4316 Nous rappellerons ce fichier par une simple commande @code{\include} au
4317 début de notre fichier de musique. Lui attribuer l'extension
4318 @code{.ily} nous permet de distinguer aisément qu'il s'agit d'un fichier
4319 voué à être inclus dans un fichier maître ; il n'est pas destiné à
4320 être compilé isolément.@*
4321 Maintenant, modifions notre musique (enregistrez ce fichier
4322 sous @file{musique.ly}).
4324 @c We have to do this awkward example/lilypond-non-verbatim
4325 @c because we can't do the \include stuff in the manual.
4328 \include "definitions.ily"
4332 a4.\mpdolce d8 cis4--\glissando a |
4336 g8(\! fis)-. e( d)-. cis2 |
4340 @lilypond[quote,ragged-right]
4342 \tweak self-alignment-X #-0.6
4343 #(make-dynamic-script
4344 #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4347 #(define-music-function
4348 (parser location string)
4350 #{ <>^\markup \bold \box #string #})
4354 a4.\mpdolce d8 cis4--\glissando a |
4358 g8(\! fis)-. e( d)-. cis2 |
4362 C'est mieux, mais effectuons encore quelques retouches. Le glissando
4363 est peu visible, c'est pourquoi nous allons l'épaissir et le
4364 rapprocher des têtes de note. Déplaçons l'indication métronomique
4365 au-dessus de la clef, au lieu de la laisser au-dessus de la première
4366 note. Et pour finir, mon professeur de composition déteste les
4367 chiffrages de mesure en @qq{C}, nous allons donc le transformer en
4370 Cependant, ne changez pas le fichier @file{musique.ly}. Remplacez le
4371 fichier @file{definitions.ily} par ceci :
4376 \tweak self-alignment-X #-0.6
4377 #(make-dynamic-script
4378 #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4381 #(define-music-function
4382 (parser location string)
4384 #@{ <>^\markup \bold \box #string #@})
4389 \override MetronomeMark.extra-offset = #'(-5 . 0)
4390 \override MetronomeMark.padding = #'3
4394 \override TimeSignature.style = #'numbered
4398 \override Glissando.thickness = #3
4399 \override Glissando.gap = #0.1
4404 @lilypond[quote,ragged-right]
4406 \tweak self-alignment-X #-0.6
4407 #(make-dynamic-script
4408 #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4411 #(define-music-function
4412 (parser location string)
4414 #{ <>^\markup \bold \box #string #})
4419 \override MetronomeMark.extra-offset = #'(-5 . 0)
4420 \override MetronomeMark.padding = #'3
4424 \override TimeSignature.style = #'numbered
4428 \override Glissando.thickness = #3
4429 \override Glissando.gap = #0.1
4435 a4.\mpdolce d8 cis4--\glissando a |
4439 g8(\! fis)-. e( d)-. cis2 |
4443 C'est encore mieux ! Mais supposons maintenant que je veuille
4444 publier cette pièce. Mon professeur de composition n'aime pas les
4445 chiffrages de mesure en @qq{C}, mais moi je les aime bien. Copions
4446 l'actuel @file{definitions.ily} dans le fichier
4447 @file{publication-web.ily}, et modifions ce dernier. Puisque la musique
4448 est destinée à produire un fichier PDF affiché sur écran, nous allons
4449 aussi augmenter la taille globale de police.
4454 \tweak self-alignment-X #-0.6
4455 #(make-dynamic-script
4456 #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4459 #(define-music-function
4460 (parser location string)
4462 #@{ <>^\markup \bold \box #string #@})
4464 #(set-global-staff-size 23)
4469 \override MetronomeMark.extra-offset = #'(-5 . 0)
4470 \override MetronomeMark.padding = #'3
4477 \override Glissando.thickness = #3
4478 \override Glissando.gap = #0.1
4483 @lilypond[quote,ragged-right]
4485 \tweak self-alignment-X #-0.6
4486 #(make-dynamic-script
4487 #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4490 #(define-music-function
4491 (parser location string)
4493 #{ <>^\markup \bold \box #string #})
4495 #(set-global-staff-size 23)
4499 \override MetronomeMark.extra-offset = #'(-5 . 0)
4500 \override MetronomeMark.padding = #'3
4503 \override Glissando.thickness = #3
4504 \override Glissando.gap = #0.1
4510 a4.\mpdolce d8 cis4--\glissando a |
4514 g8(\! fis)-. e( d)-. cis2 |
4518 Il ne nous reste plus qu'à remplacer
4519 @code{\include "definitions.ily"} par
4520 @code{\include "publication-web.ily"} dans notre fichier de
4523 Il est possible, bien sûr, de rendre cela encore plus pratique. Nous
4524 pourrions créer un fichier @file{definitions.ily} qui ne contiendrait
4525 que les définitions de @code{mpdolce} et de @code{inst}, un fichier
4526 @file{publication-web.ily} qui ne contiendrait que la section
4527 @code{layout} décrite ci-dessus et un fichier @file{universite.ily} qui
4528 ne contiendrait que les retouches pour produire le résultat que mon
4529 professeur préfère. Le début du fichier @file{musique.ly} ressemblerait
4533 \include "definitions.ily"
4535 %%% Décommentez seulement une de ces deux lignes !
4536 \include "publication-web.ily"
4537 %\include "universite.ily"
4540 Cette approche peut être utile même si vous ne produisez qu'un seul
4541 jeu de partitions. J'utilise personnellement une demi-douzaine de
4542 fichiers de @qq{feuille de style} pour mes projets. Je commence
4543 chaque fichier de musique par @code{\include "../global.ily"} qui
4548 \version @w{"@version{}"}
4550 #(ly:set-option 'point-and-click #f)
4552 \include "../init/init-defs.ly"
4553 \include "../init/init-mise-en-page.ly"
4554 \include "../init/init-en-tetes.ly"
4555 \include "../init/init-papier.ly"
4559 @node Autres sources de documentation
4560 @subsection Autres sources de documentation
4561 @translationof Other sources of information
4563 La référence des propriétés internes contient beaucoup d'informations
4564 sur LilyPond. Cependant vous pouvez en découvrir encore plus en
4565 consultant les fichiers internes de LilyPond. Pour cela, il vous faut
4566 d'abord connaître le répertoire @emph{ad hoc} sur votre système.
4567 L'emplacement du répertoire dépend (a) du fait que, pour vous procurer
4568 LilyPond, vous avez téléchargé un paquet précompilé sur lilypond.org ou
4569 vous l'avez installé grâce à votre gestionnaire de paquetages
4570 (c'est-à-dire distribué avec GNU/Linux ou installé avec fink ou cygwin), ou
4571 encore vous l'avez compilé directement à partir des sources ; et
4572 (b) du système d'exploitation sur lequel il tourne.
4575 @subsubsubheading Téléchargé depuis lilypond.org
4581 @file{@var{INSTALLDIR}/lilypond/usr/@/share/lilypond/current/}
4587 @file{@var{INSTALLDIR}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
4590 Pour accéder à ce dossier, deux possibilités : soit, dans un
4591 Terminal, taper @code{cd} suivi du chemin complet ci-dessus ; soit
4592 Control-cliquer (ou clic droit) sur l'application LilyPond
4593 et sélectionner @qq{Afficher le contenu du paquet}.
4597 Dans l'Explorateur Windows, voir
4599 @file{@var{INSTALLDIR}/LilyPond/usr/@/share/lilypond/current/}
4605 @subsubsubheading Installé par un gestionnaire de paquetages ou compilé d'après les sources
4607 @code{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, où
4608 @var{PREFIX} est déterminé par votre gestionnaire de paquetages ou par
4609 le script @code{configure}, et @var{X.Y.Z} représente le numéro de
4610 version de LilyPond.
4614 Dans ce répertoire, deux sous-répertoires sont particulièrement
4618 @item @code{ly/} -- contient les fichiers en format LilyPond
4619 @item @code{scm/} -- contient les fichiers en format Scheme
4622 Commençons par examiner quelques fichiers contenus dans @file{ly/}.
4623 Nous ouvrons @file{ly/property-init.ly} dans un éditeur de texte --
4624 celui que vous avez l'habitude d'utiliser pour les fichiers @file{.ly}
4625 fera très bien l'affaire. Ce fichier contient les définitions de toutes
4626 les commandes standard prédéfinies de LilyPond, comme @code{\stemUp} et
4627 @code{\slurDotted}. Vous pouvez constater que ce n'est rien d'autre
4628 que des définitions de variables composées d'un ou plusieurs groupes
4629 de commandes @code{\override}. Par exemple, @code{\tieDotted}
4634 \override Tie.dash-period = #0.75
4635 \override Tie.dash-fraction = #0.1
4639 Si vous n'aimez pas les valeurs par défaut, les commandes prédéfinies
4640 peuvent être facilement redéfinies, comme n'importe quelle autre
4641 variable, en tête de votre fichier d'entrée.
4643 Voici les fichiers les plus utiles dans le répertoire @file{ly/} :
4645 @multitable @columnfractions .4 .6
4646 @headitem Nom de fichier
4648 @item @file{ly/engraver-init.ly}
4649 @tab Définition des contextes de graveurs
4650 @item @file{ly/paper-defaults-init.ly}
4651 @tab Réglages papier par défaut
4652 @item @file{ly/performer-init.ly}
4653 @tab Définition des contextes d'interprétation
4654 @item @file{ly/property-init.ly}
4655 @tab Définition de toutes les commandes prédéfinies courantes
4656 @item @file{ly/spanner-init.ly}
4657 @tab Définition des commandes prédéfinies pour les bandeaux
4660 Les autres réglages (comme les définitions de commandes @emph{markup})
4661 sont conservés comme fichiers @file{.scm} (Scheme). Le langage de
4662 programmation Scheme offre une interface programmable dans le
4663 processus interne de LilyPond. De plus amples explications sur ces
4664 fichiers dépasseraient le cadre de ce manuel dans la mesure où elles
4665 requièrent la connaissance du langage Scheme. Les utilisateurs qui
4666 souhaiteraient comprendre le fonctionnement de ces fichiers de
4667 configuration doivent être avertis que des connaissances techniques
4668 substantielles et beaucoup de temps sont nécessaires (voir le
4669 @rextend{Tutoriel Scheme}).
4671 Si c'est votre cas, les fichiers Scheme les plus utiles à connaître
4674 @multitable @columnfractions .4 .6
4675 @headitem Nom de fichier
4677 @item @file{scm/auto-beam.scm}
4678 @tab Règles par défaut des ligatures subalternes
4679 @item @file{scm/define-grobs.scm}
4680 @tab Réglages par défaut des propriétés de @emph{grobs}
4681 @item @file{scm/define-markup-commands.scm}
4682 @tab Spécification de toutes les commandes de @emph{markup}
4683 @item @file{scm/midi.scm}
4684 @tab Réglages par défaut pour les sorties MIDI
4685 @item @file{scm/output-lib.scm}
4686 @tab Réglages affectant l'apparence des frets, couleurs, altérations,
4687 barres de mesure, etc.
4688 @item @file{scm/parser-clef.scm}
4689 @tab Définition des clefs prises en charge
4690 @item @file{scm/script.scm}
4691 @tab Réglages par défaut des articulations
4695 @node Retouches avancées avec Scheme
4696 @subsection Retouches avancées avec Scheme
4697 @translationof Advanced tweaks with Scheme
4699 Nous avons vu à quel point le résultat obtenu avec LilyPond peut
4700 être largement personnalisé à l'aide de commandes comme
4701 @code{\override} et @code{\tweak}. Et pourtant l'utilisation de
4702 Scheme ouvre des possibilités encore plus grandes.
4703 Le code écrit dans le langage de programmation Scheme peut être
4704 intégré directement dans le processus interne de LilyPond. Bien sûr,
4705 il faut pour cela connaître un minimum de programmation en langage
4706 Scheme. Pour des explications complètes là-dessus, consultez le
4707 @rextend{Tutoriel Scheme}.
4709 En guise d'illustration -- et ce n'est qu'une possibilité parmi tant
4710 d'autres -- nous allons attribuer à une propriété non pas une valeur
4711 préétablie mais une procédure Scheme qui sera lancée à chaque
4712 utilisation de la propriété par LilyPond. De cette façon, nous obtenons
4713 un réglage dynamique de la propriété par le simple fait d'invoquer la
4714 procédure. Dans cet exemple, nous colorons les têtes de notes en
4715 fonction de leur position sur la portée.
4717 @cindex x11-color, exemple d'utilisation de la fonction
4718 @cindex NoteHead, exemple de dérogation
4719 @cindex color, détermination de la propriété par une procédure Scheme
4721 @lilypond[quote,verbatim,ragged-right]
4722 #(define (color-notehead grob)
4723 "Color the notehead according to its position on the staff."
4724 (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
4727 ;; Return rainbow colors
4728 ((1) (x11-color 'red )) ; for C
4729 ((2) (x11-color 'orange )) ; for D
4730 ((3) (x11-color 'yellow )) ; for E
4731 ((4) (x11-color 'green )) ; for F
4732 ((5) (x11-color 'blue )) ; for G
4733 ((6) (x11-color 'purple )) ; for A
4734 ((0) (x11-color 'violet )) ; for B
4738 % Arrange to obtain color from color-notehead procedure
4739 \override NoteHead.color = #color-notehead
4740 a2 b | c2 d | e2 f | g2 a |
4744 Vous trouverez dans @rextend{Fonctions de rappel} d'autres exemples
4745 d'utilisation de ces interfaces programmables.