1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
4 Translation of GIT committish: 785441aeb8cc557217d1b0658ef88d058f58eeb4
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 * Collisions d'objets::
35 @node Retouches élémentaires
36 @section Retouches élémentaires
37 @translationof Tweaking basics
40 * Introduction aux retouches::
41 * Objets et interfaces::
42 * Conventions de nommage des objets et propriétés::
43 * Méthodes de retouche::
47 @node Introduction aux retouches
48 @subsection Introduction aux retouches
49 @translationof Introduction to tweaks
51 LilyPond regroupe sous le terme de @qq{retouches} (@emph{tweaks} en
52 anglais) les différents moyens dont dispose l'utilisateur pour
53 intervenir sur l'interprétation du fichier d'entrée et pour modifier
54 l'apparence du fichier de sortie. Certaines retouches sont très
55 simples à mettre en œuvre ; d'autres sont plus complexes. Mais
56 à elles toutes, elles permettent d'obtenir tout ce qu'on veut en matière
59 Dans ce chapitre, nous traitons des concepts de base nécessaires
60 pour comprendre l'art de la retouche. Puis nous présentons de
61 nombreuses commandes déjà prêtes, qu'il suffit de recopier pour
62 obtenir un résultat identique dans vos partitions ; nous en profitons
63 pour expliquer comment ces commandes ont été construites, si bien que
64 vous pouvez apprendre par la même occasion à développer vos propres
67 Avant de vous lancer dans ce chapitre, il peut être utile de revoir la
68 section @ref{Contextes et graveurs}, dans la mesure où les contextes,
69 graveurs et autres propriétés qui y sont décrits, sont indispensables
70 pour comprendre et construire les retouches.
73 @node Objets et interfaces
74 @subsection Objets et interfaces
75 @translationof Objects and interfaces
82 @cindex propriétés des objets
83 @cindex objet, propriétés
84 @cindex objet de rendu
85 @cindex rendu, objets de
87 Toute retouche implique que l'on modifie les opérations internes
88 et les structures du programme LilyPond. Nous allons donc, pour
89 commencer, présenter certains termes qui servent à décrire ces
90 opérations internes et ces structures.
92 Le terme @qq{Objet} est un terme générique qui fait référence à
93 une multitude de structures internes mises en place par LilyPond
94 durant la compilation d'un fichier d'entrée. Ainsi, quand une
95 commande du type @code{\new Staff} apparaît, un nouvel objet du type
96 @code{Staff} est créé. Cet objet @code{Staff} contient alors toutes les
97 propriétés associées à cette portée, par exemple son nom et son armure,
98 ainsi que le détail des graveurs qui ont été désignés pour fonctionner
99 dans ce contexte de portée. Certains objets peuvent contenir les
100 propriétés de tous les autres contextes, comme les objets @code{Voice},
101 les objets @code{Score}, les objets @code{Lyrics} ; d'autres se
102 rapportent à tous les éléments de notation, comme les barres de mesure,
103 les liaisons, les nuances, etc. Chaque objet dispose de son propre
104 échantillon de valeurs pour le réglage des propriétés.
106 Certains types d'objet portent des noms spécifiques. Les objets qui se
107 rapportent à des éléments de notation sur le fichier de sortie, comme
108 les notes, les hampes, les liaisons de phrasé ou de prolongation, les
109 doigtés, les clefs, etc. sont appelés @qq{Objets de rendu} ; ils sont
110 aussi connus sous le nom d'@qq{Objets graphiques} (en anglais :
111 @emph{Graphical objects} ou @emph{Grobs} pour faire court). Ce sont
112 bien des objets au sens générique ci-dessus et, en tant que tels, ils
113 reçoivent des propriétés qui leur sont associées, comme leur position,
114 leur taille, leur couleur etc.
116 Certains objets de rendu, comme les liaisons de phrasé, les soufflets
117 de crescendo, les marques d'octaviation et beaucoup d'autres
118 @emph{grobs}, ont pour particularité de ne pas se situer à un seul et
119 unique endroit -- ils ont un point de départ, un point d'arrivée, et
120 éventuellement d'autres propriétés relatives à leur forme. Ces objets
121 avec une forme étendue sont appelés des bandeaux (@emph{Spanners} en
124 Il reste à expliquer ce que sont les @qq{interfaces}. De nombreux
125 objets, qui peuvent être très différents les uns des autres, ont pour
126 point commun de devoir être compilés simultanément. Par exemple, tous
127 les @emph{grobs} ont une couleur, une taille, une position, etc. et
128 toutes ces propriétés sont compilées simultanément durant
129 l'interprétation du fichier d'entrée par LilyPond. Pour alléger ces
130 opérations internes, ces actions et propriétés communes sont regroupées
131 en un objet appelé @code{grob-interface}. Il existe beaucoup d'autres
132 regroupements de propriétés communes dans le genre de celui-ci, chacun
133 portant un nom qui se termine par @code{interface}. En tout, on en
134 compte plus d'une centaine. Nous verrons plus loin en quoi c'est
135 intéressant et utile pour l'utilisateur.
137 Ainsi s'achève le tour des principaux termes relatifs aux objets
138 que nous serons amenés à utiliser dans ce chapitre.
141 @node Conventions de nommage des objets et propriétés
142 @subsection Conventions de nommage des objets et propriétés
143 @translationof Naming conventions of objects and properties
145 @cindex conventions de nommage des objets
146 @cindex conventions de nommage des propriétés
147 @cindex objets, conventions de nommage
148 @cindex propriétés, conventions de nommage
150 Nous avons eu un aperçu, dans @ref{Contextes et graveurs}, de
151 la façon de nommer les objets. Voici maintenant une liste de
152 référence des types d'objets et de propriétés les plus courants,
153 avec leurs conventions de nommage et quelques exemples
154 de cas concrets. La lettre @var{A} représente n'importe quel
155 caractère alphabétique majuscule, et les lettres @var{aaa}
156 un nombre indéterminé de caractères alphabétiques minuscules.
157 Les autres caractères sont à prendre tels qu'ils se présentent.
159 @multitable @columnfractions .33 .33 .33
160 @headitem Type d'objet/propriété
161 @tab Convention de nommage
164 @tab Aaaa ou AaaaAaaaAaaa
165 @tab Staff, GrandStaff
166 @item Objets de rendu
167 @tab Aaaa ou AaaaAaaaAaaa
170 @tab Aaaa_aaa_engraver
171 @tab Clef_engraver, Note_heads_engraver
173 @tab aaa-aaa-interface
174 @tab grob-interface, break-aligned-interface
175 @item Propriétés de contexte
176 @tab aaa ou aaaAaaaAaaa
177 @tab alignAboveContext, skipBars
178 @item Propriétés d'objet de rendu
179 @tab aaa ou aaa-aaa-aaa
180 @tab direction, beam-thickness
183 Comme nous le verrons bientôt, les propriétés des différents
184 types d'objet sont modifiées par des commandes différentes, si bien
185 qu'il est bon de savoir reconnaître le type d'un objet ou d'une
186 propriété en fonction de son nom.
189 @node Méthodes de retouche
190 @subsection Méthodes de retouche
191 @translationof Tweaking methods
193 @cindex retouches, méthodologie
194 @cindex méthodes de retouche
197 * La commande \override::
198 * La commande \revert::
200 * La commande \overrideProperty::
201 * La commande \tweak::
205 @node La commande \override
206 @unnumberedsubsubsec La commande @code{\override}
207 @translationof The \override command
209 @cindex override, commande
210 @cindex override, syntaxe
215 Dans @ref{Modification des propriétés d'un contexte} et dans
216 @ref{Ajout et suppression de graveurs}, nous avons déjà rencontré les
217 commandes @code{\set} et @code{\with}, qui servent à changer les
218 propriétés des @strong{contextes} et à supprimer ou ajouter des
219 @strong{graveurs}. Voici maintenant d'autres commandes plus
222 La commande pour changer les propriétés des @strong{objets de rendu}
223 est @code{\override}. Du fait que cette commande modifie en profondeur
224 les propriétés internes de LilyPond, sa syntaxe n'est pas aussi simple
225 que pour les commandes vues précédemment. Elle a besoin de savoir avec
226 précision quelle est la propriété à modifier, pour quel objet et dans
227 quel contexte, et quelle doit être sa nouvelle valeur. Voyons de quoi
230 La syntaxe générale de cette commande est :
233 \override @var{Contexte}.@var{ObjetDeRendu}.@var{propriété-rendu} = #@var{valeur}
237 Elle attribue à la propriété appelée @var{propriété-rendu}, associée à
238 l'objet @var{ObjetDeRendu}, appartenant lui-même au contexte
239 @var{Contexte}, une valeur @var{valeur}.
241 Le contexte @var{Contexte} peut être omis (c'est généralement
242 le cas) quand il n'y a pas d'ambiguïté et qu'il s'agit d'un contexte
243 de très bas niveau, comme @code{Voice}, @code{ChordNames} ou
244 @code{Lyrics}. Dans les exemples qui suivent, le contexte sera très
245 souvent omis. Nous verrons plus tard dans quelles circonstances il doit
246 impérativement être indiqué.
248 Les sections ci-dessous traitent largement des propriétés et de leurs
249 valeurs -- voir @ref{Types de propriétés} -- mais, pour illustrer la
250 mise en forme et l'utilisation de ces commandes, nous nous limiterons à
251 n'employer que quelques propriétés et valeurs simples, facilement
254 Lilypond reconnaît comme expression primaire les éléments musicaux
255 tels que les notes, durées et annotations (les @emph{markups}).
256 D'autres expressions de base comme les nombres, chaînes de
257 caractères et listes sont gérées en « mode Scheme », mode appelé
258 en faisant précéder une valeur par un @samp{#}. Bien que
259 certaines valeurs puissent disposer d'une représentation tout à
260 fait valide dans le mode musical de LilyPond, les exemples de ce
261 manuel mentionnent un@samp{#} pour plus de clarté. Pour de plus
262 amples informations quant au mode Scheme, consultez
263 @rextend{Syntaxe Scheme dans LilyPond}.
265 La commande @code{\override} est la plus fréquemment utilisée pour
266 faire des retouches, et pratiquement tout le reste de ce chapitre
267 aura pour but de montrer, à travers des exemples, comment
268 l'utiliser. L'exemple ci-dessous change la couleur des têtes de
271 @cindex couleur,exemple d'utilisation de la propriété
272 @cindex NoteHead, exemple de dérogation
274 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
276 \override NoteHead.color = #red
278 \override NoteHead.color = #green
283 @node La commande \revert
284 @unnumberedsubsubsec La commande @code{\revert}
285 @translationof The \revert command
287 @cindex revert, commande
292 Une fois qu'elle a été modifiée, la propriété conserve sa nouvelle
293 valeur jusqu'à ce qu'elle soit à nouveau modifiée ou qu'elle rencontre
294 la commande @code{\revert}. La commande @code{\revert} obéit à
295 la syntaxe ci-dessous et ramène la valeur de la propriété à sa valeur
296 d'origine. Attention : dans le cas où plusieurs @code{\override}
297 ont été employés, il ne s'agit pas de la valeur précédente mais bien de
298 la valeur par défaut.
301 \revert @var{Contexte}.@var{ObjetDeRendu}.@var{propriété-de-rendu}
304 Tout comme pour la commande @code{\override}, la mention du
305 @var{Contexte} est souvent facultative. Elle sera omise dans de
306 nombreux exemples ci-dessous. Voici un exemple qui ramène la
307 couleur des deux dernières notes à leur valeur par défaut :
309 @cindex couleur,exemple d'utilisation de la propriété
310 @cindex NoteHead, exemple de dérogation
312 @lilypond[quote,verbatim,relative=1]
314 \override NoteHead.color = #red
316 \override NoteHead.color = #green
318 \revert NoteHead.color
323 @node Le préfixe \once
324 @unnumberedsubsubsec Le préfixe @code{\once}
325 @translationof The \once prefix
330 Les commandes @code{\override} et @code{\set} peuvent supporter
331 toutes les deux le préfixe @code{\once}. Celui-ci a pour fonction de
332 n'appliquer la commande @code{\override} ou @code{\set} qu'à
333 l'instant musical en cours, avant que la propriété ne reprenne
334 sa valeur antérieure -- qui n'est pas forcément la valeur par défaut
335 lorsqu'un autre @code{\override} est toujours effectif. Toujours à
336 partir du même exemple, il est possible de ne changer la couleur que
339 @cindex couleur,exemple d'utilisation de la propriété
340 @cindex NoteHead, exemple de dérogation
342 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
344 \override NoteHead.color = #red
346 \once \override NoteHead.color = #green
348 \revert NoteHead.color
352 Le préfixe @code{\once} peut s'utiliser avec de nombreuses
353 commandes prédéfinies pour en limiter les effets à un seul instant
356 @lilypond[quote,verbatim,relative=1]
365 Les commandes prédéfinies de la forme @code{\...Neutral},
366 @code{\...Off} et @code{\un...} font appel, en interne, à une
367 instruction @code{\revert} plutôt que @code{\override} ; les
368 préfixer d'un @code{\once} est donc sans effet.
371 @node La commande \overrideProperty
372 @unnumberedsubsubsec La commande @code{\overrideProperty}
373 @translationof The \overrideProperty command
375 @cindex overrideProperty, commande
377 @funindex \overrideProperty
378 @funindex overrideProperty
380 Il existe une autre forme de commande @code{\override},
381 @code{\overrideProperty}, qui est parfois utile. Nous la mentionnons
382 ici par souci d'exhaustivité ; pour le détail, voir
383 @rextend{Retouches complexes}.
385 @c Maybe explain in a later iteration -td
388 @node La commande \tweak
389 @unnumberedsubsubsec La commande @code{\tweak}
390 @translationof The \tweak command
392 @cindex tweak, commande
397 La dernière commande disponible pour les retouches est
398 @code{\tweak}. Elle sert à changer les propriétés d'objets qui
399 surviennent simultanément dans la musique, comme par exemple les
400 notes d'un accord. La commande @code{\override} modifierait toutes
401 les notes de l'accord, tandis que @code{\tweak} permet de ne modifier
402 que l'élément immédiatement suivant dans la chaîne de saisie.
404 Voici un exemple. Supposons que nous voulions changer la taille de
405 la tête de note du milieu (le mi) dans un accord de do majeur. Voyons
406 d'abord ce que donnerait @code{\once \override} :
408 @cindex font-size, exemple d'utilisation de la propriété
409 @cindex NoteHead, exemple de dérogation
411 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
413 \once \override NoteHead.font-size = #-3
418 Nous voyons que @code{\override} modifie @strong{toutes} les têtes
419 de notes de l'accord, car toutes les notes de l'accord surviennent au
420 même @strong{instant musical} et que la fonction de @code{\once}
421 est de faire porter la modification sur tous les objets du type spécifié
422 qui surviennent au même instant musical, comme le fait la commande
423 @code{\override} elle-même.
425 La commande @code{\tweak} opère différemment. Elle agit
426 sur l'élément immédiatement suivant dans la chaîne de saisie. Dans sa
427 forme la plus simple, elle ne fonctionne que sur les objets créés
428 directement à partir de l'élément suivant dans la chaîne de saisie,
429 c'est-à-dire essentiellement des têtes de notes et des articulations.
431 Pour reprendre notre exemple, la taille de la note du milieu d'un
432 accord peut être modifiée de cette manière :
434 @cindex font-size, exemple d'utilisation de la propriété
435 @cindex @code{\tweak}, exemple
437 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
439 <c \tweak font-size #-3 e g>4
442 Vous noterez que la syntaxe de @code{\tweak} est différente de
443 celle de la commande @code{\override}. Ni le contexte,
444 ni l'objet n'ont besoin d'être spécifiés ; au contraire, cela
445 produirait une erreur si on le faisait. Tous deux sont sous-entendus
446 par l'élément suivant dans la chaîne de saisie. Il n'est pareillement
447 pas nécessaire d'insérer un signe égal. La syntaxe générale
448 de la commande @code{\tweak} est donc, tout simplement :
451 \tweak @var{propriété-de-rendu} #@var{valeur}
454 La commande @code{\tweak} est aussi utilisée quand on veut, dans
455 une série d'articulations, n'en modifier qu'une seule. Ainsi :
457 @cindex couleur, exemple d'utilisation de la propriété
458 @cindex @code{\tweak}, exemple
460 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
462 -\tweak color #red ^"Red"
463 -\tweak color #green _"Green"
467 Attention : la commande @code{\tweak} doit être précédée d'une
468 marque d'articulation, comme si elle-même était une articulation. Dans
469 la cas de multiples positionnements forcés (@code{^} ou @code{_}), celui
470 le plus à gauche aura préséance puisqu'il sera appliqué en dernier.
472 @cindex @code{\tweak} et altération
473 @cindex @code{\tweak} et objet de rendu spécifique
475 Les objets tels que hampes et altérations seront créés postérieurement à
476 l'événement qui survient. L'utilisation de la commande @code{\tweak}
477 sur de tels objets indirectement créés peut se faire en nommant
478 explicitement l'objet de rendu, si tant est que LilyPond puisse remonter
479 jusqu'à l'événement originel :
481 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
482 <\tweak Accidental.color #red cis4
483 \tweak Accidental.color #green es
487 Cette forme développée de la commande @code{\tweak} correspond à :
489 \tweak @var{objet-de-rendu}.@var{propriété-de-rendu} @var{valeur}
492 @cindex nolets imbriqués
493 @cindex triolets imbriqués
494 @cindex crochet de nolet
495 @cindex nolet, crochet
496 @cindex triolet, crochet
498 @funindex TupletBracket
500 Quand plusieurs nolets sont imbriqués et commencent au même instant
501 musical, c'est encore la commande @code{\tweak} qui est utilisée pour
502 changer l'apparence de l'un d'entre eux. Dans l'exemple suivant, le
503 long crochet de nolet et le premier des trois crochets courts commencent
504 au même instant musical ; une commande @code{\override} s'appliquerait
505 donc à la fois aux deux. En revanche, @code{\tweak} permet de les
506 dissocier. La première commande @code{\tweak} indique que le long
507 crochet doit être placé au-dessus des notes, et la seconde indique que
508 le coefficient de nolet doit être imprimé en rouge sur le premier
509 crochet de triolet court.
511 @cindex @code{\tweak}, exemple
512 @cindex direction, exemple d'utilisation de la propriété
513 @cindex couleur, exemple d'utilisation de la propriété
515 @lilypond[quote,ragged-right,verbatim,fragment,relative=2]
519 \tuplet 3/2 { c8[ c c] }
520 \tuplet 3/2 { c8[ c c] }
521 \tuplet 3/2 { c8[ c c] }
525 Si les nolets imbriqués ne commencent pas au même moment,
526 leur apparence peut alors être modifiée de la façon habituelle,
527 avec la commande @code{\override} :
529 @cindex texte, exemple d'utilisation de la propriété
530 @cindex tuplet-number, exemple de fonction
531 @cindex transparence, exemple d'utilisation de la propriété
532 @cindex TupletNumber, exemple de dérogation
534 @lilypond[quote,ragged-right,verbatim,fragment,relative=1]
535 \tuplet 3/2 { c8[ c c] }
536 \once \override TupletNumber.text = #tuplet-number::calc-fraction-text
540 \once \override TupletNumber.transparent = ##t
541 \tuplet 3/2 { c8[ c c] }
542 \tuplet 3/2 { c8[ c c] }
548 @ruser{La commande d'affinage (@emph{tweak})}.
551 @node Le manuel de référence des propriétés internes
552 @section Le manuel de référence des propriétés internes
553 @translationof The Internals Reference manual
555 @cindex Références internes
558 * Propriétés des objets de rendu::
559 * Propriétés listées par interface::
560 * Types de propriétés::
564 @node Propriétés des objets de rendu
565 @subsection Propriétés des objets de rendu
566 @translationof Properties of layout objects
568 @cindex propriétés des objets de rendu
569 @cindex propriétés des objets graphiques (grobs)
570 @cindex grobs, propriétés
571 @cindex objets de rendu, propriétés
572 @cindex Manuel des références internes
574 Imaginons que votre partition contienne une liaison trop fine à votre
575 goût et que vous vouliez la rendre plus épaisse. Comment vous y
576 prendre ? Vous êtes convaincu, avec tout ce qui a été dit sur la
577 souplesse de LilyPond, qu'une telle retouche est réalisable et
578 vous vous dites qu'elle fera sans doute intervenir la commande
579 @code{\override}. Mais existe-t-il une propriété épaisseur qui
580 s'applique à une liaison et, dans l'affirmative, comment faire pour la
581 modifier ? C'est là qu'intervient la Référence des propriétés
582 internes. Elle contient toutes les informations dont vous avez besoin
583 pour construire n'importe quelle commande @code{\override}.
585 Avant de nous plonger dans la Référence des propriétés
586 internes, un mot d'avertissement. Il s'agit d'un document de
587 @strong{références}, de sorte qu'il ne contient pas ou peu
588 d'explications : son but est de présenter les informations de
589 façon précise et concise. Cela peut paraître décourageant
590 à première vue. Pas d'inquiétude ! Les conseils et les
591 explications fournis ici vous permettent de retrouver par vous-même les
592 informations dans la Référence des propriétés internes. Il
593 suffit d'un peu de pratique.
595 @cindex override, exemple
596 @cindex dérogation, exemple
597 @cindex Références internes, exemple d'utilisation
598 @cindex @code{\addlyrics} -- exemple
600 Prenons un exemple concret tiré d'un morceau de musique connu :
602 @c Mozart, Die Zauberflöte Nr.7 Duett
604 @lilypond[quote,verbatim,relative=2]
609 r4 bes8 bes[( g]) g |
610 g8[( es]) es d[( f]) as |
614 The man who | feels love's sweet e -- | mo -- tion
619 Admettons que nous voulions rendre les traits de liaison plus épais.
620 Est-ce possible ? Une liaison est assurément un objet de rendu, si
621 bien que la question est @qq{Existe-t-il une propriété attachée aux
622 liaisons et qui en contrôle l'épaisseur ?} Pour y répondre, nous
623 consultons la Référence des propriétés internes (ou RPI pour faire
626 Vous trouverez sur le site de LilyPond @uref{http://lilypond.org} la
627 RPI correspondant à votre version du programme. Allez sur la page
628 Documentation et cliquez sur Référence des propriétés internes.
629 Pour l'apprentissage, mieux vaut utiliser la version HTML standard,
630 et non la @qq{page unique en anglais} ou le PDF. Durant la lecture
631 des prochains paragraphes, il vous est conseillé de vous y reporter
632 réellement afin que les explications prennent tout leur sens.
634 En dessous du bandeau d'en-tête figurent cinq liens. Cliquez sur le
635 lien vers le @emph{Backend}, où se trouvent les informations sur les
636 objets de rendu. En dessous du titre @strong{Backend}, choisissez
637 alors le lien vers @emph{Tous les objets de rendu}. La page qui s'ouvre
638 énumère, dans l'ordre alphabétique, tous les objets utilisés dans votre
639 version de LilyPond. Cliquez sur Liaisons (@emph{Slurs} en anglais),
640 et les propriétés des liaisons apparaîtront.
642 Il existe un autre moyen de trouver cette page, à partir du Manuel de
643 notation. Une des pages qui traitent des liaisons contient un lien vers
644 la Référence des propriétés internes, qui mène directement à cette
645 page. Mais lorsque vous connaissez le nom de l'objet à retoucher, le
646 plus simple est de consulter la RPI.
648 La page de la RPI sur les liaisons commence par préciser que les objets
649 « Liaison » sont créés par le graveur Slur_engraver. Vient ensuite la
650 liste des réglages standard ; vous y trouverez la propriété susceptible
651 de contrôler l'épaisseur des traits de liaison.
654 @code{thickness} (nombre)
656 Épaisseur de ligne, généralement mesurée en @code{line-thickness}
659 Voilà qui semble approprié pour changer l'épaisseur (@emph{thickness} en
660 anglais). On apprend que la valeur de @code{thickness} est un simple
661 nombre (@emph{number}), qu'elle est par défaut définie à 1,2 et que
662 l'unité de mesure est fixée par une autre propriété appelée
663 @code{line-thickness}.
665 Comme il a été indiqué, on ne trouve que peu, voire pas du tout
666 d'explication dans la RPI, mais nous en savons assez pour essayer
667 de changer l'épaisseur de la liaison. Comme nous l'avons vu, le
668 nom de l'objet est @code{Slur}, le nom de la propriété à changer
669 est @code{thickness} et la nouvelle valeur sera un nombre supérieur
670 à @code{1.2} si l'on veut augmenter l'épaisseur du trait.
672 Pour construire la commande @code{\override}, il suffit donc de
673 remplacer les valeurs que nous avons trouvées en guise de noms, en
674 laissant de côté le contexte. Commençons par une valeur très élevée
675 dans un premier temps, pour nous assurer que la commande fonctionne.
679 \override Slur.thickness = #5.0
682 N'oublions pas le @code{#} qui doit précéder la nouvelle valeur.
684 La dernière question est : @qq{Où placer cette commande ?}
685 Tant qu'on n'est pas sûr de soi, la meilleure réponse est @qq{À
686 l'intérieur de l'expression musicale, avant la première liaison et
687 proche d'elle.} Essayons :
689 @cindex Slur, exemple de dérogation
690 @cindex thickness, exemple d'utilisation de la propriété
692 @lilypond[quote,verbatim,relative=2]
697 % Increase thickness of all following slurs from 1.2 to 5.0
698 \override Slur.thickness = #5.0
699 r4 bes8 bes[( g]) g |
700 g8[( es]) es d[( f]) as |
704 The man who | feels love's sweet e -- | mo -- tion
710 et nous constatons que le trait de liaison est beaucoup plus épais.
712 Telle est la façon normale de construire des commandes
713 @code{\override}. Comme nous aurons l'occasion de le voir
714 par la suite, le problème est parfois plus complexe. Dans
715 l'immédiat, nous en savons assez pour construire nos propres
716 commandes -- mais il faut encore s'exercer. Les exemples
717 suivants sont là dans cette intention.
720 @subsubsubheading Détermination du contexte adéquat
721 @c VO Finding the context
723 @cindex contexte, détermination du
724 @cindex contexte, identification correcte du
726 Tout d'abord, de quoi avions-nous besoin pour préciser le contexte ? À
727 quoi devait-il ressembler ? Gageons que les liaisons appartiennent au
728 contexte Voix, dans la mesure où elles sont étroitement liées à une
729 ligne mélodique, mais comment en être sûr ? Pour répondre à cette
730 question, revenons en haut de la page de la RPI consacrée aux liaisons ;
731 il est écrit : @qq{Les objets Liaison sont créés par le graveur
732 Slur_engraver}. Ainsi les liaisons seront créées dans n'importe quel
733 contexte où se trouve le @code{Slur_engraver}. Suivons le lien vers la
734 page @code{Slur_engraver}. Tout en bas, on lit que le
735 @code{Slur_engraver} est un élément appartenant à sept contextes Voix,
736 dont le contexte de voix standard, @code{Voice}. Notre hypothèse était
737 donc juste. Et parce que @code{Voice} est un contexte de très bas
738 niveau, qu'il est activé sans ambiguïté par le fait que l'on est
739 en train de saisir des notes, on peut ici ne pas le mentionner.
742 @subsubsubheading Redéfinition pour une seule occurrence
743 @c VO Overriding once only
745 @cindex dérogation pour une seule fois
746 @cindex usage unique, dérogation à
751 Dans le dernier exemple ci-dessus, @emph{toutes} les liaisons étaient
752 plus épaisses. Et si on veut épaissir uniquement la première liaison ?
753 On recourt alors à la commande @code{\once}. Placée juste avant la
754 commande @code{\override}, elle lui indique de ne changer que la liaison
755 commençant avec la note @strong{juste après}. Si la note juste après
756 n'ouvre pas une liaison, la commande sera sans aucun effet -- elle ne
757 reste pas en mémoire jusqu'à la prochaine liaison, elle est purement et
758 simplement ignorée. Il faut donc que la commande introduite par
759 @code{\once} soit insérée comme suit :
761 @cindex Slur, exemple de dérogation
762 @cindex thickness, exemple d'utilisation de la propriété
763 @cindex Liaison, exemple de dérogation
764 @cindex Épaisseur, exemple d'utilisation de la propriété
766 @lilypond[quote,verbatim,relative=2]
772 % Increase thickness of immediately following slur only
773 \once \override Slur.thickness = #5.0
775 g8[( es]) es d[( f]) as |
779 The man who | feels love's sweet e -- | mo -- tion
785 Alors seule la première liaison est rendue plus épaisse.
787 La commande @code{\once} peut aussi être utilisée devant la commande
791 @subsubsubheading Rétablissement
795 @cindex rétablissement
797 @cindex défaut, retour aux propriétés par
802 Et si l'on voulait que les deux premières liaisons soient plus
803 épaisses ? On pourrait bien sûr utiliser deux commandes, chacune
804 précédée de @code{\once} et placée juste avant la note par laquelle
807 @cindex liaison, exemple de dérogation
808 @cindex thickness, exemple d'utilisation de la propriété
809 @cindex épaisseur, exemple d'utilisation
811 @lilypond[quote,verbatim,relative=2]
817 % Increase thickness of immediately following slur only
818 \once \override Slur.thickness = #5.0
820 % Increase thickness of immediately following slur only
821 \once \override Slur.thickness = #5.0
822 g8[( es]) es d[( f]) as |
826 The man who | feels love's sweet e -- | mo -- tion
832 mais on peut aussi, au lieu de la commande @code{\once}, utiliser après
833 la seconde liaison la commande @code{\revert}, qui ramène la propriété
834 @code{thickness} à sa valeur par défaut :
836 @cindex Slur, exemple de dérogation
837 @cindex thickness, exemple d'utilisation de la propriété
838 @cindex liaison, exemple de dérogation
839 @cindex épaisseur, exemple d'utilisation
841 @lilypond[quote,verbatim,relative=2]
847 % Increase thickness of all following slurs from 1.2 to 5.0
848 \override Slur.thickness = #5.0
851 % Revert thickness of all following slurs to default of 1.2
852 \revert Slur.thickness
857 The man who | feels love's sweet e -- | mo -- tion
863 N'importe quelle propriété modifiée par @code{\override} peut ainsi
864 être ramenée, grâce à la commande @code{\revert}, à sa valeur par
867 Ici s'achève notre introduction à la RPI et aux retouches
868 simples. Vous trouverez d'autres exemples dans les prochaines
869 sections de ce chapitre ; ils vous permettront, d'une part,
870 d'apprendre à connaître un peu mieux la RPI et, d'autre part, de
871 vous entraîner un peu plus à y chercher les informations. Ces
872 exemples seront progressivement accompagnés d'explications et
873 introduiront des termes nouveaux.
876 @node Propriétés listées par interface
877 @subsection Propriétés listées par interface
878 @translationof Properties found in interfaces
881 @cindex interfaces, propriétés des
882 @cindex propriétés des interfaces
884 Supposons maintenant que nous voulions imprimer des paroles en italique.
885 Quelle formulation de la commande @code{\override} allons-nous
886 utiliser ? Nous consultons en premier lieu, comme précédemment, la
887 page de la RPI qui contient la liste @qq{Tous les objets de rendu}, et
888 recherchons un objet qui contrôle les paroles. Nous trouvons
889 @code{LyricText}, qui semble approprié. Nous cliquons dessus et nous
890 voyons apparaître les différentes propriétés des paroles, parmi
891 lesquelles @code{font-series} et @code{font-size}. Mais aucune ne
892 propose l'italique. Car la mise en forme des caractères est une
893 propriété commune à tous les objets d'écriture, si bien que, au lieu de
894 figurer dans tous les objets de rendu, elle est regroupée avec d'autres
895 propriétés semblables et placée dans une @strong{Interface}, la
896 @code{font-interface}.
898 Il nous faut donc apprendre à trouver les propriétés des interfaces
899 et découvrir les objets qui utilisent les propriétés de ces interfaces.
901 Retournons à la page de la RPI qui traite des paroles
902 (@emph{LyricText}). En bas de la page est dressée sous forme de liens
903 la liste des interfaces qui concernent LyricText. Cette liste comporte
904 plusieurs entrées, dont @code{font-interface}. En cliquant dessus, nous
905 voyons apparaître les différentes propriétés associées à cette
906 interface, qui sont en même temps les propriétés de tous les objets qui
907 s'y rapportent, parmi lesquels LyricText.
909 Nous avons alors sous les yeux tous les réglages des propriétés qui
910 contrôlent les polices de caractères, et notamment
911 @code{font-shape(symbole)}, où @code{symbole} peut prendre la valeur
912 @code{upright}, @code{italic} ou @code{caps}.
914 Vous remarquerez que @code{font-series} et @code{font-size} figurent
915 aussi dans la liste. La question qui ne manque pas de se poser
916 est : @qq{Comment se fait-il que les propriétés @code{font-series}
917 et @code{font-size} se retrouvent à la fois dans @code{LyricText} et
918 dans l'interface @code{font-interface} alors que ce n'est pas le cas
919 pour @code{font-shape} ?} La réponse est que lorsqu'un objet
920 @code{LyricText} est créé, les valeurs globales par défaut de
921 @code{font-series} et @code{font-size} sont modifiées, mais pas celles
922 de @code{font-shape}. Les possibilités de modification dans
923 @code{LyricText} ne concernent donc que les valeurs à appliquer à
924 @code{LyricText}. Les autres objets qui dépendent de
925 @code{font-interface} fixeront leurs propriétés différemment lorsqu'ils
928 Voyons maintenant si nous sommes en mesure de formuler la commande
929 @code{\override} pour mettre les paroles en italique. L'objet est
930 @code{LyricText}, la propriété est @code{font-shape} et la valeur est
931 @code{italic}. Comme auparavant, nous laissons de côté le contexte.
933 Signalons rapidement -- même si cette remarque est importante -- que
934 certaines valeurs de propriétés se présentent sous forme de
935 symboles, comme @code{italic}, et doivent donc être précédées
936 d'une simple apostrophe, Ces symboles seront alors interprétés
937 comme tels par LilyPond. À ne pas confondre avec les chaînes de
938 caractères libres qui se présentent comme @code{"un texte
939 libre"} ; pour plus de détails sur les symboles et les chaînes de
940 caractères, voir le @rextend{Tutoriel Scheme}.
942 Ainsi, la commande @code{\override} pour mettre les paroles en italique
946 \override LyricText.font-shape = #'italic
950 et doit être placée juste devant et tout près des paroles à modifier,
953 @cindex font-shape, exemple d'utilisation de la propriété
954 @cindex italic, exemple
955 @cindex LyricText, exemple de dérogation
956 @cindex @code{\addlyrics}, exemple
958 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
963 r4 bes8 bes[( g]) g |
964 g8[( es]) es d[( f]) as |
968 \override LyricText.font-shape = #'italic
969 The man who | feels love's sweet e -- | mo -- tion
975 et voilà les paroles en italiques.
977 @warning{Dans la saisie des paroles, pensez à toujours laisser une
978 espace entre la dernière syllabe et l'accolade fermante.}
982 @rextend{Tutoriel Scheme}.
985 @node Types de propriétés
986 @subsection Types de propriétés
987 @translationof Types of properties
989 @cindex propriété, types de
991 Nous avons vu jusqu'à maintenant deux types de propriétés :
992 @code{nombre} et @code{symbole}. Pour pouvoir fonctionner, la valeur
993 associée à une propriété doit correspondre au type attendu et suivre les
994 règles liées à ce type. Le type de propriété est toujours donné entre
995 parenthèses après le nom de propriété dans la RPI. Voici une liste des
996 différents types de propriétés, avec les règles qui les régissent et
997 quelques exemples d'utilisation. Il faut, bien sûr, toujours ajouter un
998 symbole @emph{hash} (@code{#}) devant ces valeurs lors de la saisie de
999 la commande @code{\override}, ce même si cette valeur comporte
1000 déjà un @code{#} en premier caractère. Les exemples ici présentés
1001 ne sont que de simples illustrations ; l'utilisation de Scheme
1002 pour obtenir des valeurs fait l'objet de la rubrique
1003 @rextend{Scheme et les calculs}.
1005 @multitable @columnfractions .2 .45 .35
1006 @headitem Type de propriété
1009 @item Booléenne (@emph{Boolean} en anglais)
1010 @tab Vrai (@emph{true} en anglais) ou Faux (@emph{false} en anglais),
1011 sous la forme @code{#t} ou @code{#f}
1012 @tab @code{#t}, @code{#f}
1013 @item Dimension (en espaces de portée)
1014 @tab Un nombre décimal (en unités de lignes de portée)
1015 @tab @code{2.5}, @code{0.34}
1017 @tab Une direction valide ou son équivalent numérique (@code{0}
1018 ou @code{CENTER} indiquent une position neutre)
1019 @tab @code{LEFT}, @code{CENTER}, @code{UP}, @code{1}, @w{@code{-1}}
1020 @item Entier (@emph{Integer} en anglais)
1021 @tab Un nombre entier
1022 @tab @code{3}, @code{-1}
1024 @tab Une séquence de constantes ou symboles séparés par une
1025 espace, encadrées par des parenthèses et précédées par une apostrophe
1026 @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'()},
1027 @code{'(1.0 0.25 0.5)}
1028 @item Markup (ou étiquette)
1029 @tab Toute commande @code{\markup} valide
1030 @tab @code{\markup @{ \italic "cresc." @}}, @code{"bagpipe"}
1031 @item Durée (@emph{Moment} en anglais)
1032 @tab Une durée de note construite avec la fonction make-moment
1033 @tab @code{(ly:make-moment 1/4)}, @code{(ly:make-moment 3/8)}
1035 @tab Une valeur positive ou négative, qui peut être décimale
1036 @tab @code{3}, @w{@code{-2.45}}
1037 @item Paire (de nombres)
1038 @tab Deux nombres séparées par @qq{espace point espace}, encadrés
1039 par des parenthèses et précédés par une apostrophe
1040 @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
1042 @tab L'un des symboles autorisés pour cette propriété, précédé par une
1044 @tab @code{'italic}, @code{'inside}
1045 @item Inconnu (@emph{Unknown} en anglais)
1046 @tab Un processus, ou @code{#f} pour empêcher toute action
1047 @tab @code{bend::print}, @code{ly:text-interface::print}, @code{#f}
1049 @tab Des constantes encadrés par @code{#(}@dots{}@code{)}
1050 @tab @code{'#(#t #t #f)}
1054 Manuel d'extension :
1055 @rextend{Tutoriel Scheme}.
1058 @node Apparence des objets
1059 @section Apparence des objets
1060 @translationof Appearance of objects
1062 Il est temps de mettre en pratique les notions apprises précédemment
1063 pour modifier l'allure de la partition ; les exemples qui suivent
1064 montrent l'utilisation des différentes méthodes de retouche.
1067 * Visibilité et couleur des objets::
1068 * Taille des objets::
1069 * Longueur et épaisseur des objets::
1073 @node Visibilité et couleur des objets
1074 @subsection Visibilité et couleur des objets
1075 @translationof Visibility and color of objects
1077 Dans un but pédagogique, on peut être amené à masquer certains éléments
1078 d'une partition, que les élèves doivent ensuite compléter. Imaginons,
1079 par exemple, un exercice dans lequel il faudrait rétablir les barres de
1080 mesure dans un morceau de musique. En temps normal, les barres de
1081 mesure s'insèrent automatiquement. Comment faire pour les effacer de la
1084 Avant de nous y attaquer, souvenons-nous que les propriétés d'objets
1085 sont parfois groupées dans ce qu'on appelle des @emph{interfaces} --
1086 voir @ref{Propriétés listées par interface}. Cela permet de rapprocher
1087 toutes les propriétés susceptibles d'être utilisées ensemble pour
1088 modifier un objet graphique -- si l'une d'elles est choisie pour un
1089 objet, elle s'appliquera à tous les autres. Certains objets tirent
1090 alors leurs propriétés de telle ou telle interface, d'autres objets de
1091 telle ou telle autre interface. La liste des interfaces qui contiennent
1092 les propriétés liées à un objet graphique (@emph{grob}) figure dans la
1093 RPI, en bas de la page de description du @emph{grob} ; pour voir
1094 ces propriétés, il faut aller voir ces interfaces.
1096 Nous avons vu, dans @ref{Propriétés des objets de rendu}, comment
1097 trouver les informations sur les @emph{grobs}. Nous procédons de la
1098 même manière et consultons la RPI pour connaître l'objet chargé
1099 d'imprimer les barres de mesure. En cliquant sur @emph{Backend} puis
1100 sur @emph{Tous les objets de rendu}, nous trouvons un objet appelé
1101 @code{BarLine}. Parmi ses propriétés, deux d'entre elles déterminent
1102 son aspect visuel : @code{break-visibility} et @code{stencil}.
1103 L'objet @code{BarLine} est également lié à plusieurs interfaces, dont la
1104 @code{grob-interface} où figurent les propriétés @code{transparent} et
1105 @code{color}. Toutes peuvent modifier l'aspect visuel des barres de
1106 mesure -- et de beaucoup d'autres objets, bien sûr. Examinons chacune
1107 d'elles tour à tour.
1110 * La propriété stencil::
1111 * La propriété break-visibility::
1112 * La propriété transparent::
1113 * La propriété color::
1117 @node La propriété stencil
1118 @unnumberedsubsubsec La propriété @code{stencil}
1119 @translationof The stencil property
1121 @cindex stencil, propriété
1123 Cette propriété contrôle l'apparence des barres de mesure en précisant
1124 le type de symbole (glyphe) à imprimer. Comme pour de nombreuses
1125 autres propriétés, on peut lui indiquer de ne rien imprimer en lui
1126 attribuant la valeur @code{#f}. Essayons en laissant de côté, une fois
1127 encore, le contexte concerné (@code{Voice} en l'occurrence) :
1129 @cindex BarLine, exemple de dérogation
1130 @cindex stencil, exemple d'utilisation de la propriété
1132 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1135 \override BarLine.stencil = ##f
1137 g,8 a16 b8 c d4 e16 |
1142 Les barres de mesure sont encore là ! Pourquoi ? Retournons
1143 à la RPI et regardons de nouveau la page qui traite des propriétés de
1144 @code{BarLine}. En haut de la page, il est précisé que @qq{Les objets
1145 BarLine sont créés par le graveur Bar_engraver}. Allons à la page de
1146 @code{Bar_engraver}. Tout en bas se trouve la liste des contextes dans
1147 lesquels fonctionne ce graveur. Tous sont du type @code{Staff}, de
1148 sorte que, si la commande @code{\override} n'a pas fonctionné comme
1149 prévu, c'est parce que @code{Barline} n'appartient pas au contexte par
1150 défaut, @code{Voice}. Si le contexte spécifié est erroné, la commande
1151 ne fonctionne pas. Cela n'entraîne pas de message d'erreur, et rien
1152 n'apparaît dans le fichier @emph{log}. Essayons de corriger en
1153 mentionnant le bon contexte :
1155 @cindex BarLine, exemple de dérogation
1156 @cindex stencil, exemple d'utilisation de la propriété
1158 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1161 \override Staff.BarLine.stencil = ##f
1163 g,8 a16 b8 c d4 e16 |
1168 Cette fois, les barres de mesure ont disparu. Désactiver la
1169 propriété @code{stencil} est une opération tellement fréquente que
1170 LilyPond dispose d'un raccourci -- @code{\omit} (pour « oublier »)
1175 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1180 g,8 a16 b8 c d4 e16 |
1185 Vous remarquerez que l'affectation de la valeur @code{#f} à la propriété
1186 @code{stencil} déclenchera une erreur dès lors que l'objet en question se
1187 doit d'avoir des dimensions pour les nécessités du traitement. Ce sera
1188 le cas, par exemple, si vous effacez le @code{stencil} d'un objet
1189 @code{NoteHead}. Il vaut mieux, en pareil cas, utiliser la fonction
1190 @code{point-stencil} qui, quant à elle, attribue à l'objet une taille à
1193 @lilypond[quote,verbatim,relative=2]
1196 \once \override NoteHead.stencil = #point-stencil
1202 @node La propriété break-visibility
1203 @unnumberedsubsubsec La propriété @code{break-visibility}
1204 @translationof The break-visibility property
1206 @cindex break-visibility, propriété
1208 La RPI mentionne, à la page sur @code{BarLine}, que la propriété
1209 @code{break-visibility} attend comme argument un vecteur de trois
1210 booléens. Ceux-ci indiquent respectivement si les barres de mesure
1211 doivent être imprimées ou non à la fin de la ligne, à l'intérieur de la
1212 ligne et au début de la ligne. Dans notre cas, nous voulons que toutes
1213 les barres soient supprimées, si bien que la valeur dont nous avons
1214 besoin est @code{#(#f #f #f)}. Essayons, sans oublier d'ajouter le
1215 contexte @code{Staff}. Vous remarquerez que, en plus de cette valeur,
1216 nous ajoutons @code{##} devant la parenthèse ouvrante. Un second
1217 @code{#} est nécessaire car il fait partie intégrante de la valeur
1218 contenant un vecteur, et le premier @code{#} est là, comme
1219 toujours avec la commande @code{\override}, pour introduire la
1222 @cindex BarLine, exemple de dérogation
1223 @cindex break-visibility exemple d'utilisation de la propriété
1225 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1228 \override Staff.BarLine.break-visibility = #'#(#f #f #f)
1230 g,8 a16 b8 c d4 e16 |
1235 Comme on peut le constater, cette solution-là aussi supprime les barres
1239 @node La propriété transparent
1240 @unnumberedsubsubsec La propriété @code{transparent}
1241 @translationof The transparent property
1243 @cindex transparent, propriété
1244 @cindex transparence
1246 La RPI mentionne, à la page sur @code{grob-interface}, que la propriété
1247 @code{transparent} attend comme argument un booléen. Il faudrait donc
1248 mettre @code{#t} pour rendre l'objet transparent. Dans cet exemple,
1249 essayons de rendre transparente la métrique (@emph{time signature} en
1250 anglais) plutôt que les barres de mesure. Pour cela, il nous faut
1251 trouver le nom du @emph{grob} chargé de l'indication de mesure. De
1252 retour sur la page @qq{Tous les objets de rendu} de la RPI, nous
1253 cherchons les propriétés de l'objet @code{TimeSignature}. Celui-ci est
1254 géré par le graveur @code{Time_signature_engraver} qui, comme vous
1255 pouvez le constater, appartient au contexte @code{Staff} et peut se
1256 rattacher à la @code{grob-interface}. Dans ces conditions, la commande
1257 pour rendre la métrique transparente est :
1259 @cindex TimeSignature, exemple de dérogation
1260 @cindex transparent, exemple d'utilisation de la propriété
1262 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1265 \override Staff.TimeSignature.transparent = ##t
1267 g,8 a16 b8 c d4 e16 |
1273 L'utilisation de la propriété @code{transparent} étant
1274 relativement fréquent, LilyPond dispose d'un raccourci à cet
1275 effet : @code{\hide} (pour « masquer ».
1279 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1282 \hide Staff.TimeSignature
1284 g,8 a16 b8 c d4 e16 |
1290 La métrique a bien disparu dans les deux cas, mais la commande a
1291 laissé un blanc en lieu et place du chiffrage. Ce peut être
1292 souhaitable dans le cadre d'un exercice, afin que les élèves aient
1293 la place pour compléter, mais dans d'autres circonstances, ce peut
1294 être gênant. Pour y remédier, attribuons plutôt au stencil des
1295 métriques la valeur @code{#f} :
1297 @cindex TimeSignature, exemple de dérogation
1298 @cindex stencil, exemple d'utilisation de la propriété
1300 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1303 \override Staff.TimeSignature.stencil = ##f
1305 g,8 a16 b8 c d4 e16 |
1311 La différence est flagrante : le fait d'attribuer au stencil la
1312 valeur @code{#f} ou grâce à @code{\omit} supprime totalement
1313 l'objet, tandis que le fait de le rendre @code{transparent} -- ce
1314 qui s'obtient aussi par la commande @code{\hide} -- le laisse en
1315 place, mais de façon invisible.
1318 @node La propriété color
1319 @unnumberedsubsubsec La propriété @code{color}
1320 @translationof The color property
1322 @cindex color, propriété
1324 Essayons enfin de rendre les barres de mesure invisibles en les colorant
1325 en blanc. La difficulté est de savoir si les barres blanches vont
1326 couper ou non les lignes de la portée aux endroits où elles se
1327 croisent. Vous verrez dans les exemples ci-dessous que cela peut se
1328 produire, sans qu'on le sache à l'avance. Les explications de ce
1329 phénomène et les solutions pour y remédier sont exposées dans
1330 @ruser{Blanchiment des objets}. Pour le moment, acceptons cet
1331 inconvénient et concentrons-nous sur l'apprentissage de la gestion des
1334 La @code{grob-interface} indique que la valeur de la propriété
1335 @code{color} est une liste, sans plus d'explication. En fait, cette
1336 liste est une liste de valeurs en unités internes ; pour éviter
1337 d'avoir à chercher ce qu'il faut y mettre, il existe différents moyens
1338 d'indiquer la couleur. Le premier moyen consiste à utiliser l'une des
1339 couleurs @emph{normales} de la première @ruser{Liste des couleurs}.
1340 Pour mettre les barres de mesure en blanc, on écrit :
1342 @cindex BarLine, exemple de dérogation
1343 @cindex color, exemple d'utilisation de la propriété
1345 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1348 \override Staff.BarLine.color = #white
1350 g,8 a16 b8 c d4 e16 |
1356 et nous constatons que les barres de mesure sont une fois de plus
1357 invisibles. Attention : aucune apostrophe ne précède @code{white}
1358 -- il ne s'agit pas d'un symbole mais d'une @strong{variable}.
1359 Quand on l'invoque, elle fournit une liste de valeurs internes
1360 requises pour changer la couleur en blanc. Les autres couleurs
1361 aussi, dans la @qq{liste normale}, sont des variables. Pour en
1362 être certain, vous pouvez faire l'essai en choisissant une autre
1363 variable de la liste en guise de couleur.
1366 @cindex X11, couleurs
1370 Le deuxième moyen de changer la couleur consiste à utiliser la deuxième
1371 @ruser{Liste des couleurs}, dite noms de couleurs X11. Ceux-ci doivent
1372 obligatoirement être précédés d'une fonction, @code{x11-color},
1373 qui convertit les noms symboliques de couleur X11 en une liste de
1374 valeurs internes comme ceci :
1376 @cindex BarLine, exemple de dérogation
1377 @cindex color, exemple d'utilisation de la propriété
1379 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1382 \override Staff.BarLine.color = #(x11-color 'white)
1384 g,8 a16 b8 c d4 e16 |
1390 Vous noterez que, dans ce cas, la fonction @code{x11-color} admet un
1391 symbole comme argument ; il faut donc placer une apostrophe devant
1392 le symbole de telle sorte qu'il ne soit pas interprété comme une
1393 variable, et insérer l'appel à la fonction à l'intérieur de
1396 @cindex rgb, couleur
1397 @cindex couleurs rgb
1401 Il existe une autre fonction, chargée elle de convertir les
1402 valeurs RVB en couleurs internes -- la fonction @code{rgb-color}.
1403 Elle comporte trois arguments, donnant respectivement l'intensité
1404 du rouge, du vert et du bleu. Ces arguments prennent des valeurs
1405 comprises entre 0 et 1. Ainsi, pour choisir la couleur rouge, la
1406 valeur serait @code{(rgb-color 1 0 0)} ; pour le blanc, ce serait
1407 @code{(rgb-color 1 1 1)} :
1409 @cindex BarLine, exemple de dérogation
1410 @cindex color, exemple d'utilisation de la propriété
1412 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1415 \override Staff.BarLine.color = #(rgb-color 1 1 1)
1417 g,8 a16 b8 c d4 e16 |
1422 Enfin, il existe une échelle de gris parmi les possibilités de couleurs
1423 X11. Elle va du noir (@code{'grey0}) au blanc (@code{'grey100}), avec
1424 un pas de 1. Essayons de l'utiliser en attribuant à tous les objets de
1425 notre exemple différentes nuances de gris :
1427 @cindex StaffSymbol, exemple de dérogation
1428 @cindex TimeSignature, exemple de dérogation
1429 @cindex Clef, exemple de dérogation
1430 @cindex NoteHead, exemple de dérogation
1431 @cindex Stem, exemple de dérogation
1432 @cindex BarLine, exemple de dérogation
1433 @cindex color, exemple d'utilisation de la propriété
1434 @cindex x11-color, exemple d'utilisation
1436 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1439 \override Staff.StaffSymbol.color = #(x11-color 'grey30)
1440 \override Staff.TimeSignature.color = #(x11-color 'grey60)
1441 \override Staff.Clef.color = #(x11-color 'grey60)
1442 \override Voice.NoteHead.color = #(x11-color 'grey85)
1443 \override Voice.Stem.color = #(x11-color 'grey85)
1444 \override Staff.BarLine.color = #(x11-color 'grey10)
1446 g,8 a16 b8 c d4 e16 |
1452 Vous remarquerez le contexte associé à chacun des objets. Une erreur
1453 sur ce point empêcherait la commande de fonctionner. Souvenez-vous que
1454 le contexte est celui dans lequel est placé le graveur approprié. Pour
1455 chaque graveur, on peut trouver son contexte par défaut en partant de
1456 l'objet lui-même, puis en cherchant le graveur qui le produit ; la
1457 page du graveur dans la RPI nous indique alors le contexte dans lequel
1458 le graveur se trouve normalement.
1461 @node Taille des objets
1462 @subsection Taille des objets
1463 @translationof Size of objects
1465 @cindex modification de la taille des objets
1466 @cindex taille d'objets
1467 @cindex objets, taille
1468 @cindex objets, modification de taille
1470 Pour commencer, reprenons l'exemple qui se trouvait dans
1471 @ref{Expressions musicales imbriquées}, qui montrait comment créer une
1472 nouvelle portée temporaire, du type @rglos{ossia}.
1474 @cindex alignAboveContext, exemple d'utilisation de la propriété
1475 @cindex @code{\with}, exemple
1477 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1478 \new Staff ="main" {
1485 alignAboveContext = #"main" }
1493 Normalement, les ossias ne comportent ni clef ni indication de mesure,
1494 et elles sont imprimées légèrement plus petit que la portée principale.
1495 Nous avons déjà appris à enlever la clef et la métrique -- il suffit de
1496 régler le stencil de chacun sur @code{#f}, comme ceci :
1498 @cindex alignAboveContext, exemple d'utilisation de la propriété
1499 @cindex @code{\with}, exemple
1500 @cindex Clef, exemple de dérogation
1501 @cindex TimeSignature, exemple de dérogation
1504 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1505 \new Staff ="main" {
1512 alignAboveContext = #"main"
1516 \omit Staff.TimeSignature
1526 La paire d'accolades ajoutée après la clause @code{\with} est nécessaire
1527 pour être sûr que les retouches (@code{\override}) ainsi que la musique
1528 qui se trouvent à l'intérieur soient bien appliquées à la portée
1531 Mais alors, quelle différence y a-t-il à modifier le contexte de portée
1532 au moyen de @code{\with} ou à modifier les stencils de la clef et de la
1533 métrique avec @code{\override} ou @code{\omit} comme ici ? La
1534 principale différence est que les changements opérés dans une
1535 clause @code{\with} sont réalisés au moment où le contexte est
1536 créé et restent par la suite les valeurs @strong{par défaut} aussi
1537 longtemps que ce contexte existe, tandis que les commandes
1538 @code{\set} ou @code{\override} insérées dans la musique sont
1539 dynamiques -- elles provoquent des changements synchronisés avec
1540 un point particulier de la musique. Si les changements sont annulés ou
1541 dés activés par @code{\unset} ou @code{\revert}, les réglages reprennent
1542 leurs valeurs par défaut, c'est-à-dire celles qui ont été fixées dans la
1543 clause @code{\with}, ou, en l'absence de celle-ci, les valeurs par
1546 Certaines propriétés de contexte ne peuvent être modifiées que dans une
1547 clause @code{\with}. Il s'agit des propriétés qu'on ne peut évidemment
1548 plus changer après que le contexte a été créé. C'est le cas de
1549 @code{alignAboveContext} et de son pendant, @code{alignBelowContext}
1550 -- une fois que la portée a été créée, son alignement est décidé et cela
1551 n'aurait aucun sens de vouloir le modifier par la suite.
1553 Dans une clause @code{\with}, on peut aussi régler les valeurs par
1554 défaut des propriétés d'un objet. Il suffit d'utiliser la commande
1555 @code{\override} normale, sans s'occuper du nom de contexte
1556 puisqu'il ne fait pas de doute qu'il s'agit du contexte en cours de
1557 modification par la clause @code{\with}. Il se produirait même une
1558 erreur si le contexte était précisé.
1560 Remplaçons donc l'exemple ci-dessus par celui-ci :
1562 @cindex alignAboveContext, exemple d'utilisation de la propriété
1563 @cindex @code{\with}, exemple
1564 @cindex Clef, exemple de dérogation
1565 @cindex TimeSignature, exemple de dérogation
1567 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1568 \new Staff ="main" {
1575 alignAboveContext = #"main"
1576 % Don't print clefs in this staff
1577 \override Clef.stencil = ##f
1578 % Don't print time signatures in this staff
1579 \override TimeSignature.stencil = ##f
1588 Nous pourrions tout aussi bien utiliser les raccourcis
1589 @code{\hide} et @code{\omit} pour activer la propriété
1590 @code{transparent} et désactiver le @code{stencil}, ce qui
1593 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1594 \new Staff ="main" {
1601 alignAboveContext = #"main"
1602 % Don't print clefs in this staff
1604 % Don't print time signatures in this staff
1614 Venons-en finalement au changement de taille des objets.
1616 Certains objets sont créés comme des glyphes choisis dans une police de
1617 caractères. C'est le cas des têtes de notes, des altérations, des
1618 @emph{markup}, des clefs, des métriques, des nuances et des paroles.
1619 Pour changer leur taille, on modifie la propriété @code{font-size},
1620 comme nous le verrons rapidement. D'autres objets, comme les liaisons
1621 de phrasé ou de prolongation -- en général les objets étendus -- sont
1622 dessinés à la demande, si bien qu'aucune @code{font-size} ne leur est
1623 associée. Ces objets tirent généralement leur dimension des objets
1624 auxquels ils sont rattachés, de sorte qu'on ne doit pas avoir à les
1625 redimensionner à la main. D'autres propriétés, comme la hauteur des
1626 hampes et des barres de mesure, l'épaisseur des ligatures et d'autres
1627 lignes, et l'écartement des lignes de portée, doivent encore être
1628 modifiées de façon particulière.
1630 Si l'on revient à l'exemple d'ossia, commençons par changer la taille de
1631 police. Nous pouvons employer deux méthodes. Soit nous changeons la
1632 taille de police de chaque type d'objet avec des commandes comme
1633 celle-ci pour les têtes de notes (@code{NoteHead}) :
1636 \override NoteHead.font-size = #-2
1639 soit nous changeons la taille de toutes les polices à la fois grâce à la
1640 propriété @code{fontSize}, en utilisant @code{\set} ou en l'insérant
1641 dans une clause @code{\with} (mais alors sans le @code{\set}).
1647 Chacune de ces méthodes réduira la taille de police de deux points par
1648 rapport à sa valeur précédente, sachant que chaque point réduit ou
1649 augmente la taille d'environ 12 %.
1651 Essayons sur l'exemple d'ossia :
1653 @cindex alignAboveContext, exemple d'utilisation de la propriété
1654 @cindex @code{\with}, exemple
1655 @cindex Clef, exemple de dérogation
1656 @cindex TimeSignature, exemple de dérogation
1657 @cindex fontSize, exemple d'utilisation de la propriété
1659 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1660 \new Staff ="main" {
1667 alignAboveContext = #"main"
1670 % Reduce all font sizes by ~24%
1680 Ce n'est pas encore parfait. Les têtes de notes et les crochets sont
1681 plus petits mais, proportionnellement, les hampes sont trop longues et
1682 les lignes de la portée trop espacées. Il faut donc les réduire dans
1683 les mêmes proportions que les polices de caractères. La prochaine
1684 sous-section montrera comment faire.
1687 @node Longueur et épaisseur des objets
1688 @subsection Longueur et épaisseur des objets
1689 @translationof Length and thickness of objects
1695 @cindex taille, modification
1696 @cindex hampe, modification de longueur
1697 @cindex écartement des lignes, modification
1699 Dans LilyPond, les écartements et longueurs sont généralement mesurés en
1700 @qq{intervalles de lignes} (@emph{staff-spaces} en anglais),
1701 c'est-à-dire l'écartement qui sépare deux lignes adjacentes dans la
1702 portée -- plus rarement, il est question de demi-intervalles de lignes.
1703 Les propriétés d'épaisseur (@code{thickness}), quant à elles, sont
1704 généralement mesurées en unités d'une propriété interne appelée
1705 @qq{épaisseur de ligne} (@code{line-thickness}). Par exemple, les
1706 lignes de (de)crescendo présentent par défaut une épaisseur d'une
1707 unité de @code{line-thickness}, alors que l'épaisseur d'une hampe
1708 est de 1,3. Toutefois, certaines propriétés d'épaisseur sont
1709 différentes : par exemple, l'épaisseur des ligature --
1710 @code{beam-thickness} -- se mesure en espaces de portée.
1712 Dans ces conditions, comment ajuster les longueurs à la taille des
1713 polices de caractères ? La solution consiste à utiliser une
1714 fonction spéciale appelée @code{magstep} -- pseudo facteur de zoom --,
1715 créée précisément dans ce but. Elle comporte un argument, le changement
1716 de taille de police (@code{#-2} dans l'exemple précédent), à partir
1717 duquel elle applique un facteur de mise à l'échelle qui réduit, ou
1718 augmente, les objets en question. Voici comment elle s'utilise :
1720 @cindex alignAboveContext, exemple d'utilisation de la propriété
1721 @cindex @code{\with}, exemple
1722 @cindex Clef, exemple de dérogation
1723 @cindex TimeSignature, exemple de dérogation
1724 @cindex fontSize , exemple d'utilisation de la propriété
1725 @cindex StaffSymbol, exemple de dérogation
1726 @cindex magstep, exemple d'utilisation de la fonction
1727 @cindex staff-space, exemple d'utilisation de la propriété
1728 @cindex stencil, exemple d'utilisation de la propriété
1730 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1731 \new Staff ="main" {
1738 alignAboveContext = #"main"
1742 % Reduce stem length and line spacing to match
1743 \override StaffSymbol.staff-space = #(magstep -2)
1753 Puisque la longueur des hampes et plusieurs autres propriétés de
1754 longueur sont calculées par rapport à la valeur de la propriété
1755 @code{staff-space}, elles sont automatiquement mises à l'échelle. Vous
1756 remarquerez que cela n'affecte que la dimension verticale de l'ossia --
1757 la dimension horizontale étant déterminée par les objets de la portée
1758 principale de façon à rester synchronisée vis-à-vis d'elle, elle n'est
1759 pas affectée par tous ces changements de taille. Bien sûr, si l'échelle
1760 de toute la portée principale était modifiée, tout le placement
1761 horizontal s'en trouverait affecté. Il en sera question plus bas dans
1764 Voilà qui complète la création d'une ossia. Les taille et longueur de
1765 tous les objets peuvent être modifiées de manière analogue.
1767 Pour de petits changements d'échelle, comme dans l'exemple ci-dessus, il
1768 n'est généralement pas utile d'ajuster l'épaisseur des différentes
1769 lignes telles que les barres de mesure, les ligatures, les soufflets de
1770 crescendo ou decrescendo, les liaisons, etc. Si l'épaisseur d'un objet
1771 en particulier doit être ajustée, le mieux est de modifier sa propriété
1772 @code{thickness}. Nous avons vu plus haut, dans
1773 @ref{Propriétés des objets de rendu}, un exemple de modification de
1774 l'épaisseur des liaisons. L'épaisseur de tous les objets tracés
1775 (c'est-à-dire ceux qui ne proviennent pas d'une police de caractère)
1776 peut être changée de la même manière.
1779 @node Positionnement des objets
1780 @section Positionnement des objets
1781 @translationof Placement of objects
1784 * Comportement automatique::
1785 * Objets inclus dans la portée::
1786 * Objets hors de la portée::
1790 @node Comportement automatique
1791 @subsection Comportement automatique
1792 @translationof Automatic behavior
1794 @cindex objets de la portée
1795 @cindex objets extérieurs à la portée
1796 @cindex portée, objets de la
1797 @cindex portée, objets extérieurs à la
1799 Dans la notation musicale, il y a des objets qui appartiennent à la
1800 portée et d'autres qui sont placés à l'extérieur de la portée. On les
1801 appelle respectivement les @qq{objets de la portée} (@emph{within-staff
1802 objects} en anglais) et les @qq{objets extérieurs à la portée}
1803 (@emph{outside-staff objects} en anglais).
1805 Les objets de la portée sont ceux qui sont placés sur la portée
1806 -- les têtes de notes et les hampes, les altérations, etc. Leur
1807 position est généralement déterminée par la musique elle-même -- ils
1808 sont placés verticalement sur des lignes spécifiques ou sont liés à
1809 d'autres objets placés de cette manière. Normalement, les collisions
1810 entre les têtes et queues de notes et les altérations dans des accords
1811 proches sont évitées automatiquement. Comme nous le verrons rapidement,
1812 il existe des commandes et des possibilités de retouche qui permettent
1813 de modifier ce comportement automatique.
1815 Parmi les objets extérieurs à la portée, on compte des éléments comme
1816 les marques de reprise, les indications de texte ou de nuance. Dans
1817 LilyPond, la règle est de placer verticalement ces objets extérieurs à
1818 la portée le plus près possible de la portée, tout en évitant la
1819 collision avec d'autres objets. LilyPond utilise la propriété
1820 @code{outside-staff-priority} pour déterminer l'ordre selon lequel
1821 placer ces objets, de la manière suivante :
1823 D'abord, LilyPond dresse la liste de tous les objets extérieurs à la
1824 portée. Puis ceux-ci sont classés suivant leur
1825 @code{outside-staff-priority}. Enfin, ils sont pris un par un, en
1826 commençant par les objets avec la @code{outside-staff-priority} la plus
1827 basse, et placés de façon à ne pas entrer en collision avec d'autres
1828 objets déjà placés. Cela signifie que, si deux @emph{grobs} extérieurs
1829 à la portée doivent occuper la même place, c'est celui qui a la
1830 @code{outside-staff-priority} la plus basse qui est placé le plus près
1831 de la portée. Et si deux objets ont la même
1832 @code{outside-staff-priority}, le premier rencontré sera placé au plus
1835 Dans l'exemple suivant, tous les @emph{markup} ont la même priorité,
1836 dans la mesure où rien n'est indiqué explicitement. Vous remarquerez
1837 que @code{Text3} est également positionné près de la portée, juste
1838 en-dessous de @code{Text2}.
1840 @cindex markup, exemple
1842 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1849 Les portées aussi sont positionnées, par défaut, le plus près possible
1850 les unes des autres, en ménageant tout de même une certaine séparation.
1851 Si des notes se rapprochent nettement d'une portée adjacente, elles ne
1852 forceront les portées à s'écarter que s'il y a un risque de
1855 @lilypond[quote,ragged-right,verbatim]
1858 \relative c' { c4 a, }
1861 \relative c'''' { c4 a, }
1867 @node Objets inclus dans la portée
1868 @subsection Objets inclus dans la portée
1869 @translationof Within-staff objects
1871 Nous avons vu que les commandes @code{\voiceXXX} jouent sur la
1872 direction des liaisons, des doigtés et sur tout autre élément lié à
1873 l'orientation des hampes. Ces commandes sont essentielles dans
1874 la musique polyphonique pour distinguer des lignes mélodiques
1875 entremêlées. Mais il arrive qu'on ait besoin de modifier ce
1876 comportement automatique. On peut le faire pour toutes les parties de
1877 la musique ou juste pour une note. La propriété qui contrôle ce
1878 comportement est la propriété @code{direction} de chaque objet.
1879 Expliquons d'abord ce qu'elle fait, puis nous présenterons un certain
1880 nombre de commandes déjà prêtes qui évitent, pour les modifications les
1881 plus courantes, d'avoir à encoder les retouches.
1883 Certains objets comme les traits des liaisons se recourbent tantôt
1884 vers le haut, tantôt vers le bas ; d'autres encore, comme les hampes et
1885 les crochets, peuvent se décaler vers la gauche ou vers la droite selon
1886 qu'ils pointent vers le haut ou vers le bas. Ce comportement est géré
1887 automatiquement dès lors que @code{direction} est activé.
1891 * La propriété direction::
1896 @node La propriété direction
1897 @unnumberedsubsubsec La propriété @code{direction}
1898 @translationof The direction property
1905 L'exemple ci-dessous montre dans la première mesure le comportement par
1906 défaut des hampes -- celles des notes les plus hautes pointant vers le
1907 bas et celles des notes les plus basses pointant vers le haut ;
1908 viennent ensuite quatre notes avec les hampes forcées vers le bas, puis
1909 quatre autres avec les hampes forcées vers le haut, et pour finir quatre
1910 notes de nouveau avec le comportement par défaut.
1912 @cindex Stem, exemple de dérogation
1913 @cindex direction, exemple d'utilisation de la propriété
1915 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1917 \override Stem.direction = #DOWN
1919 \override Stem.direction = #UP
1921 \revert Stem.direction
1925 Nous utilisons ici les directions @code{DOWN} et @code{UP}. Elles
1926 correspondent respectivement aux valeurs @code{-1} et @code{+1},
1927 que l'on peut utiliser à la place. La valeur @code{0} peut aussi être
1928 utilisée dans certains cas. Elle est interprétée comme un @code{UP}
1929 pour les hampes, et comme un @qq{centré} pour d'autres objets. Il
1930 existe une direction, @code{CENTER}, qui correspond à la
1933 Quoi qu'il en soit, ces retouches manuelles sont rarement utilisées car
1934 il existe des équivalents sous forme de commandes prédéfinies. Voici un
1935 tableau des plus courantes. Lorsque ce n'est pas évident, leur
1936 signification est précisée.
1938 @multitable @columnfractions .2 .2 .25 .35
1939 @headitem Bas/Gauche
1943 @item @code{\arpeggioArrowDown}
1944 @tab @code{\arpeggioArrowUp}
1945 @tab @code{\arpeggioNormal}
1946 @tab Flèche en bas, en haut, ou pas de flèche
1947 @item @code{\dotsDown}
1949 @tab @code{\dotsNeutral}
1950 @tab Déplacement des points pour éviter les lignes de portée
1951 @item @code{\dynamicDown}
1952 @tab @code{\dynamicUp}
1953 @tab @code{\dynamicNeutral}
1955 @item @code{\phrasingSlurDown}
1956 @tab @code{\phrasingSlurUp}
1957 @tab @code{\phrasingSlurNeutral}
1958 @tab Attention : à distinguer des commandes de liaison ci-dessous
1959 @item @code{\slurDown}
1961 @tab @code{\slurNeutral}
1963 @item @code{\stemDown}
1965 @tab @code{\stemNeutral}
1967 @item @code{\textSpannerDown}
1968 @tab @code{\textSpannerUp}
1969 @tab @code{\textSpannerNeutral}
1970 @tab Le texte saisi en tant qu'extension est au-dessous/au-dessus de
1972 @item @code{\tieDown}
1974 @tab @code{\tieNeutral}
1976 @item @code{\tupletDown}
1977 @tab @code{\tupletUp}
1978 @tab @code{\tupletNeutral}
1979 @tab Les nolets sont au-dessous/au-dessus des notes
1982 Les variantes @code{\xxxNeutral} et @code{\xxxNormal} de ces
1983 commandes sont implémentées à l'aide de @code{\revert} ; elles
1984 @strong{ne doivent pas} être précédées de @code{\once}. Pour
1985 limiter les effets des autres commandes prédéfinies (fonctionnant
1986 à base de @code{\override}) à une seule note, il faut les faire
1987 précéder d'un @code{\once}, comme pour toute dérogation.
1991 @unnumberedsubsubsec Doigtés
1992 @translationof Fingering
1994 @cindex doigtés, positionnement
1995 @cindex doigtés, accords
1997 Le placement des doigtés sur des notes simples peut aussi être contrôlé
1998 par la propriété @code{direction}, mais le changement de
1999 @code{direction} n'a pas d'effet sur les accords. Comme nous le
2000 verrons, il existe des commandes qui permettent de contrôler le doigté
2001 sur chaque note d'un accord, en plaçant l'indication de doigté
2002 au-dessus, en dessous, à gauche ou à droite de chaque note.
2004 Tout d'abord, voici l'effet de @code{direction} sur le doigté lié à une
2005 note simple. La première mesure montre le comportement par défaut, et
2006 les deux suivantes montrent l'effet lorsqu'on indique @code{DOWN} et
2009 @cindex doigtés, exemple de dérogation
2010 @cindex direction, exemple d'utilisation de la propriété
2012 @lilypond[quote,verbatim,relative=2]
2014 \override Fingering.direction = #DOWN
2016 \override Fingering.direction = #UP
2020 Le fait d'intervenir sur la propriété @code{direction} n'est sûrement
2021 pas la façon la plus simple de placer manuellement les doigtés au-dessus
2022 ou en dessous des notes ; mieux vaut utiliser @code{_} ou @code{^}
2023 devant le chiffre de doigté plutôt que @code{-}. Voici ce que donne
2024 l'exemple précédent avec cette méthode :
2026 @cindex doigtés, exemple
2028 @lilypond[quote,verbatim,relative=2]
2034 La propriété @code{direction} ne fonctionne pas pour les accords alors
2035 que les préfixes de direction, @code{_} et @code{^}, fonctionnent. Par
2036 défaut, le doigté est placé automatiquement à la fois au-dessus et
2037 au-dessous des notes d'un accord, comme ceci :
2039 @cindex doigtés, exemple
2041 @lilypond[quote,verbatim,relative=2]
2048 mais il est possible de forcer manuellement vers le haut ou vers le bas
2049 le placement de tous ou certains chiffres de doigté, comme ceci :
2051 @cindex doigtés, exemple
2053 @lilypond[quote,verbatim,relative=2]
2059 On peut aller encore plus loin dans le positionnement des doigtés pour
2060 chacune des notes d'un accord grâce à la commande
2061 @code{\set fingeringOrientations}. La syntaxe de cette commande est :
2064 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
2068 On utilise @code{\set} car @code{fingeringOrientations} est une
2069 propriété du contexte @code{Voice}, créée et utilisée par le graveur
2070 @code{New_fingering_engraver}.
2072 On peut attribuer à cette propriété une liste composée de une à trois
2073 valeurs. Celles-ci déterminent si l'indication de doigté doit être
2074 placée au-dessus (lorsque @code{up} apparaît dans la liste), au-dessous
2075 (lorsque @code{down} apparaît), à gauche (lorsque @code{left} apparaît)
2076 ou à droite (lorsque @code{right} apparaît). En revanche, si une valeur
2077 n'est pas dans la liste, aucun doigté n'ira à cet emplacement. LilyPond
2078 garde ces contraintes en mémoire et recherche le meilleur emplacement
2079 pour le doigté des notes des accords suivants. Vous remarquerez que
2080 @code{left} et @code{right} s'excluent l'un l'autre -- l'indication de
2081 doigté ne peut être placée que d'un côté ou de l'autre, pas des deux.
2083 @warning{Pour contrôler à l'aide de cette commande le placement du
2084 doigté sur une note simple, il faut la saisir comme un accord composé
2085 d'une note unique, en l'encadrant de chevrons.}
2087 Voici quelques exemples :
2089 @cindex doigtés, exemple
2090 @cindex @code{\set}, exemple d'utilisation
2091 @cindex fingeringOrientations, exemple d'utilisation de la propriété
2093 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2094 \set fingeringOrientations = #'(left)
2097 \set fingeringOrientations = #'(left)
2099 <c-1 e-2 g-3 b-5>4 |
2100 \set fingeringOrientations = #'(up left down)
2103 \set fingeringOrientations = #'(up left)
2105 <c-1 e-2 g-3 b-5>4 |
2106 \set fingeringOrientations = #'(right)
2112 Si les indications de doigtés paraissent un peu serrées, on peut
2113 toujours réduire la taille de police (@code{font-size}). La valeur
2114 par défaut donnée dans la RPI à la page de l'objet
2115 @code{Fingering} étant @code{-5}, essayons @w{@code{-7}} :
2117 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2118 \override Fingering.font-size = #-7
2119 \set fingeringOrientations = #'(left)
2122 \set fingeringOrientations = #'(left)
2124 <c-1 e-2 g-3 b-5>4 |
2125 \set fingeringOrientations = #'(up left down)
2128 \set fingeringOrientations = #'(up left)
2130 <c-1 e-2 g-3 b-5>4 |
2131 \set fingeringOrientations = #'(right)
2137 @node Objets hors de la portée
2138 @subsection Objets hors de la portée
2139 @translationof Outside-staff objects
2141 Les objets extérieurs à la portée sont placés automatiquement de façon à
2142 éviter les collisions. Il est toutefois possible, grâce à
2143 différentes méthodes, de rectifier un positionnement automatique
2144 qui se révèlerait ne pas être optimal.
2147 * La propriété outside-staff-priority::
2148 * La commande \textLengthOn::
2149 * Positionnement des nuances::
2150 * Dimensionnement des objets graphiques::
2154 @node La propriété outside-staff-priority
2155 @unnumberedsubsubsec La propriété @code{outside-staff-priority}
2156 @translationof The outside-staff-priority property
2158 Les objets avec la plus petite valeur de la propriété
2159 @code{outside-staff-priority} sont placés au plus près de la
2160 portée, tandis que les autres sont écartés autant qu'il faut pour
2161 éviter les collisions. La @code{outside-staff-priority} est
2162 définie dans la @code{grob-interface} ; elle est donc une
2163 propriété commune à tous les objets de rendu. Par défaut, elle
2164 est réglée sur @code{#f} pour tous les objets de la portée, et
2165 porte une valeur numérique appropriée à chacun des objets
2166 extérieurs à la portée, à mesure qu'ils sont créés. Le tableau
2167 suivant montre la valeur numérique par défaut pour quelques-uns
2168 des objets extérieurs à la portée les plus courant.
2174 Vous noterez au passage certaines particularités quant au nom des
2175 objets. En effet, des objets à extension sont automatiquement créés
2176 dans le but de pouvoir contrôler le positionnement vertical des
2177 extrémités d'un @emph{grob} qui commencerait et se terminerait à des
2178 instants musicaux différents. C'est la raison pour laquelle modifier le
2179 @code{outside-staff-priority} du @emph{grob} sous-jacent n'aura aucun
2180 effet. C'est par exemple le cas lorsque vous modifiez l'alignement d'un
2181 objet @code{Hairpin} à l'aide de @code{outside-staff-priority} ;
2182 puisque le soufflet est associé à un objet @code{DynamicLineSpanner},
2183 c'est sur celui-ci que doit porter l'effet de
2184 @code{outside-staff-priority}. L'instruction dérogatoire se place au
2185 début du bandeau qui constitue une ligne de base susceptible de contenir
2186 plusieurs soufflets ou indications de nuance.
2188 @multitable @columnfractions .3 .3 .3
2189 @headitem Objet de rendu
2191 @tab Contrôle la position de :
2192 @item @code{RehearsalMark}
2195 @item @code{MetronomeMark}
2197 @tab Indication métronomique
2198 @item @code{VoltaBracketSpanner}
2200 @tab Bandeau de répétition
2201 @item @code{TextScript}
2203 @tab Texte des @emph{markup} (ou étiquettes)
2204 @item @code{MultiMeasureRestText}
2206 @tab Texte sur les silences qui couvrent des mesures entières
2207 @item @code{OttavaBracket}
2209 @tab Indication d'octaviation
2210 @item @code{TextSpanner}
2212 @tab Bandeau ou extension de texte
2213 @item @code{DynamicLineSpanner}
2215 @tab Toutes les marques de nuances
2216 @item @code{BarNumber}
2218 @tab Numéro de mesure
2219 @item @code{TrillSpanner}
2221 @tab Bandeau de trille
2224 Voici un exemple qui montre le placement par défaut de certains
2227 @cindex extension de texte
2228 @cindex indication d'octaviation
2230 @funindex \startTextSpan
2231 @funindex startTextSpan
2232 @funindex \stopTextSpan
2233 @funindex stopTextSpan
2235 @cindex TextSpanner, exemple de dérogation
2236 @cindex bound-details, exemple d'utilisation de la propriété
2238 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2239 % Set details for later Text Spanner
2240 \override TextSpanner.bound-details.left.text
2241 = \markup { \small \bold Slower }
2242 % Place dynamics above staff
2244 % Start Ottava Bracket
2247 % Add Dynamic Text and hairpin
2253 % Add Dynamic Text and terminate hairpin
2254 c4\ff c \stopTextSpan |
2255 % Stop Ottava Bracket
2260 Cet exemple montre comment créer des extensions de texte (@emph{Text
2261 Spanners} en anglais) -- texte avec des longues lignes au-dessus d'un
2262 passage musical. L'extension s'étend depuis la commande
2263 @code{\startTextSpan} jusqu'à la commande @code{\stopTextSpan} et le
2264 format de texte est défini par la commande @code{\override TextSpanner}.
2265 Pour de plus amples détails, voir
2266 @ruser{Indication textuelle avec extension}.
2268 Il montre aussi comment créer des marques d'octaviation.
2270 @cindex modification du positionnement des numéros de mesure
2271 @cindex numéros de mesure, modification du positionnement
2272 @cindex modification du positionnement des indications métronomiques
2273 @cindex indications métronomiques, modification du positionnement
2274 @cindex modification du positionnement des marques de repère
2275 @cindex marques de repère, modification du positionnement
2277 Si les valeurs de @code{outside-staff-priority} par défaut ne donnent
2278 pas les résultats escomptés, il suffit de modifier la priorité
2279 de l'un de ces objets. Supposons que vous vouliez placer l'indication
2280 d'octaviation sous le bandeau de texte, dans l'exemple précédent. Tout
2281 ce que nous devons faire, c'est regarder la priorité de
2282 @code{OttavaBracket} dans la Référence des propriétés internes ou dans
2283 le tableau plus haut, et la ramener à une valeur plus basse que celle de
2284 @code{TextSpanner}, en gardant à l'esprit que @code{OttavaBracket} est
2285 créé dans le contexte @code{Staff} :
2287 @cindex TextSpanner, exemple de dérogation
2288 @cindex bound-details, exemple d'utilisation de la propriété
2290 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2291 % Set details for later Text Spanner
2292 \override TextSpanner.bound-details.left.text
2293 = \markup { \small \bold Slower }
2294 % Place dynamics above staff
2296 % Place following Ottava Bracket below Text Spanners
2297 \once \override Staff.OttavaBracket.outside-staff-priority = #340
2298 % Start Ottava Bracket
2303 % Add Dynamic Line Spanner
2309 c4\ff c \stopTextSpan |
2310 % Stop Ottava Bracket
2315 N'oublions pas que certains objets, tels les numéros de mesure,
2316 indications métronomiques et marques-repères, sont par défaut attachés
2317 au contexte @code{Score}.
2319 @cindex liaisons et outside-staff-priority
2320 @cindex liaisons et articulations
2321 @cindex articulations et liaisons
2323 Les liaisons sont intrinsèquement des objets membres de la portée
2324 (@emph{within-staff objects}) bien qu'elles la surplombent lorsque les
2325 notes auxquelles elles se rattachent sont relativement hautes. Ceci
2326 peut avoir pour conséquence de remonter d'autant les objets externes
2327 (@emph{outside-staff objects}) tels les articulations. La propriété
2328 @code{avoid-slur} de l'articulation en question peut se voir déterminée
2329 à @code{'inside} dans le but de @qq{ramener} cette articulation à
2330 l'intérieur de la liaison. Cette propriété @code{avoid-slur} ne sera
2331 toutefois effective que dans la mesure où la
2332 @code{outside-staff-priority} est désactivée (valeur @code{#f}). Dans
2333 le même esprit, il est possible d'affecter une valeur numérique
2334 particulière à la propriété @code{outside-staff-priority} d'une
2335 liaison dans le but de regrouper la liaison avec les objets externes.
2336 L'exemple suivant illustre ces deux différentes méthodes.
2338 @lilypond[quote,verbatim,relative=2]
2339 c4( c^\markup { \tiny \sharp } d4.) c8 |
2341 \once \override TextScript.avoid-slur = #'inside
2342 \once \override TextScript.outside-staff-priority = ##f
2343 c4^\markup { \tiny \sharp } d4.) c8 |
2344 \once \override Slur.outside-staff-priority = #500
2345 c4( c^\markup { \tiny \sharp } d4.) c8 |
2348 Le fait de changer la @code{outside-staff-priority} peut aussi servir à
2349 contrôler le positionnement vertical des objets individuels, quoique le
2350 résultat ne soit pas toujours formidable. Imaginons que nous voulions
2351 placer @qq{Text3} au-dessus de @qq{Text4} dans l'exemple de la section
2352 @ref{Comportement automatique}, plus haut. Il nous suffit pour cela de
2353 regarder dans la Référence des propriétés internes ou dans le tableau
2354 plus haut la priorité de @code{TextScript}, et d'augmenter la priorité
2355 de @qq{Text3} jusqu'à une valeur très haute :
2357 @cindex TextScript, exemple de dérogation
2358 @cindex outside-staff-priority, exemple d'utilisation de la propriété
2360 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2363 \once \override TextScript.outside-staff-priority = #500
2368 S'il est vrai que cela place @qq{Text3} au-dessus de @qq{Text4}, ça le
2369 place aussi plus haut que @qq{Text2} tandis que @qq{Text4} dégringole.
2370 Ce n'est peut-être pas si bien que ça. En fait, ce que nous aimerions
2371 faire, c'est placer toutes les annotations à égale distance de la
2372 portée. Pour cela, nous avons besoin d'espacer horizontalement les
2373 notes pour laisser plus de place au texte. C'est possible grâce à la
2374 commande @code{textLengthOn}.
2377 @node La commande \textLengthOn
2378 @unnumberedsubsubsec La commande @code{\textLengthOn}
2379 @translationof The \textLengthOn command
2381 @cindex notes, répartition selon le texte
2383 @funindex \textLengthOn
2384 @funindex textLengthOn
2385 @funindex \textLengthOff
2386 @funindex textLengthOff
2388 Par défaut, l'espacement horizontal d'un texte produit sous forme de
2389 @emph{markup} (ou d'étiquette) n'est pas pris en compte, dans la mesure
2390 où ce qui est concerné n'entre pas dans la musique. La commande
2391 @code{\textLengthOn} inverse ce comportement, faisant en sorte que les
2392 notes soient espacées autant qu'il le faut pour s'adapter au texte :
2394 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2395 \textLengthOn % Cause notes to space out to accommodate text
2402 La commande qui permet de revenir au comportement par défaut est
2403 @code{\textLengthOff}. Alternativement, lorsque l'instruction
2404 @code{\textLengthOn} se limite à un seul instant musical, vous
2405 pouvez la préfixer d'un @code{\once}.
2407 @cindex étiquette de texte et collision
2409 Les textes des @emph{markup} éviteront également les notes qui
2410 s'échappent au-dessus de la portée. Si ce n'est pas notre souhait, il
2411 est possible de supprimer ce déplacement automatique vers le haut en
2412 attribuant à la priorité la valeur @code{#f}. Voici un exemple qui
2413 montre comment les textes des @emph{markup} interagissent avec ces types
2416 @cindex TextScript, exemple de dérogation
2417 @cindex outside-staff-priority, exemple d'utilisation de la propriété
2419 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2420 % This markup is short enough to fit without collision
2424 % This is too long to fit, so it is displaced upwards
2428 % Turn off collision avoidance
2429 \once \override TextScript.outside-staff-priority = ##f
2430 c,,2^"Long Text " c'' |
2433 % Turn off collision avoidance
2434 \once \override TextScript.outside-staff-priority = ##f
2435 \textLengthOn % and turn on textLengthOn
2436 c,,2^"Long Text " % Spaces at end are honored
2441 @node Positionnement des nuances
2442 @unnumberedsubsubsec Positionnement des nuances
2443 @translationof Dynamics placement
2445 @cindex modification du positionnement des nuances
2446 @cindex nuances, modification du positionnement
2448 Les indications de nuance se placent normalement sous la portée, mais on
2449 peut les placer au-dessus avec la commande @code{\dynamicUp}. Elles se
2450 positionnent verticalement par rapport à la note à laquelle elles sont
2451 liées et se décalent vers le bas (ou le haut) en fonction des objets de
2452 la portée comme les liaisons de phrasé ou les numéros de mesure. Cela
2453 peut donner d'assez bons résultats, comme le montre cet exemple :
2455 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2460 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2461 ees,2.~\)\mf ees4 r8 |
2464 De toute façon, si les notes et les nuances qui leur sont liées sont
2465 trop proches, le positionnement automatique évitera les collisions en
2466 déplaçant davantage les nuances suivantes, mais le résultat peut ne
2467 pas être très satisfaisant, comme le montre cet exemple artificiel :
2469 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2475 Si une telle situation devait survenir dans de la musique @qq{réelle},
2476 il serait préférable d'espacer un peu plus les notes, de façon que les
2477 indications de nuance puissent toutes se situer à la même distance de la
2478 portée. S'il est possible de faire cela pour les textes de
2479 @emph{markup} grâce à la commande @code{\textLengthOn}, il n'existe
2480 pas d'équivalent pour les indications de nuance. Il nous faut donc
2481 chercher à faire cela avec la commande @code{\override}.
2484 @node Dimensionnement des objets graphiques
2485 @unnumberedsubsubsec Dimensionnement des objets graphiques
2486 @translationof Grob sizing
2488 @cindex grob, dimensionnement
2489 @cindex dimensionnement des grobs
2491 Tout d'abord, nous devons apprendre ce qui détermine la dimension des
2492 @emph{grobs}. Tous les @emph{grobs} portent en eux un point de référence
2493 qui est utilisé pour les positionner par rapport à leur objet parent. Ce
2494 point du @emph{grob} est placé à une distance horizontale,
2495 @code{X-offset}, et à une distance verticale, @code{Y-offset}, de son
2496 parent. L'étendue horizontale de l'objet est fixée par une paire de
2497 nombres, @code{X-extent}, qui donnent la position du coin
2498 gauche et du coin droit par rapport au point de référence. De
2499 même, l'amplitude verticale est fixée par une paire de nombres,
2500 @code{Y-extent}. Ce sont des propriétés communes à tous les
2501 @emph{grobs} et que gère la @code{grob-interface}.
2503 @cindex @code{extra-spacing-width}
2505 Par défaut, la largeur des objets extérieurs à la portée est donnée
2506 comme étant nulle, si bien qu'ils peuvent se chevaucher
2507 horizontalement. Pour remédier à cela, on a ajouté l'infini à
2508 l'extension gauche et moins l'infini à l'extension droite, en
2509 attribuant à @code{extra-spacing-width} la valeur
2510 @code{'(+inf.0 . -inf.0)}. Pour être sûr que les objets ne se
2511 chevaucheront pas horizontalement, nous devons donc corriger cette
2512 valeur de @code{extra-spacing-width} en @code{'(0 . 0)}, afin que
2513 leur vraie largeur se manifeste. La commande pour y parvenir avec des
2514 indications de nuances est :
2517 \override DynamicText.extra-spacing-width = #'(0 . 0)
2521 Voyons si ça marche sur notre exemple précédent :
2523 @cindex DynamicText, exemple de dérogation
2524 @cindex extra-spacing-width, exemple d'utilisation de la propriété
2526 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2528 \override DynamicText.extra-spacing-width = #'(0 . 0)
2529 a4\f b\mf c\mp b\p |
2533 Bon, cela a mis un terme aux déplacements verticaux des
2534 nuances mais il reste deux problèmes. Il faudrait que les
2535 nuances soient un peu plus écartées et ce serait mieux si
2536 elles étaient toutes à la même distance de la portée. Le
2537 premier problème est simple à résoudre. Au lieu d'attribuer
2538 à @code{extra-spacing-width} la valeur zéro, nous pourrions
2539 mettre un peu plus. L'unité est la distance entre deux lignes
2540 de portée, donc en écartant le bord gauche d'une demie unité
2541 et le bord droit d'une demie unité, on obtient :
2543 @cindex DynamicText, exemple de dérogation
2544 @cindex extra-spacing-width, exemple d'utilisation de la propriété
2546 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2548 % Extend width by 1 staff space
2549 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2554 C'est mieux mais nous voulons peut-être aligner les indications de
2555 nuance sur une même ligne plutôt que de les voir monter et
2556 descendre avec les notes. La propriété qui gère cela est
2557 @code{staff-padding} ; la section suivante lui est consacrée.
2560 @node Collisions d'objets
2561 @section Collisions d'objets
2562 @translationof Collisions of objects
2565 * Déplacement d'objets::
2566 * Correction des collisions d'objets::
2571 @node Déplacement d'objets
2572 @subsection Déplacement d'objets
2573 @translationof Moving objects
2575 @cindex déplacement d'objets se chevauchant
2576 @cindex déplacement d'objets en collision
2577 @cindex déplacement de grobs en collision
2578 @cindex objets, évitement des collisions
2579 @cindex grobs, évitement des collisions
2581 Aussi surprenant que cela puisse paraître, LilyPond n'est pas parfait.
2582 Certains éléments sur la partition peuvent se chevaucher, ce qui est
2583 regrettable mais, le plus souvent, facile à corriger. En général, quand
2584 on déplace des objets, c'est pour des raisons de lisibilité ou
2585 d'esthétique -- ils rendraient mieux avec un peu plus ou un peu moins
2586 d'espace autour d'eux.
2588 Il y a trois façons de résoudre les problèmes de chevauchement. Il est
2589 préférable de les aborder dans l'ordre suivant :
2593 L'@strong{orientation} d'un objet qui en chevauche un autre peut être
2594 changée grâce aux commandes prédéfinies dont la liste a été donnée
2595 plus haut à propos des objets de portée (voir
2596 @ref{Objets inclus dans la portée}).
2597 Les queues de note, les liaisons de phrasé et de prolongation, les
2598 crochets, les nuances et les nolets peuvent facilement être
2599 repositionnés de cette manière. En contrepartie, vous n'avez le choix
2600 qu'entre deux positions, sans personnalisation possible.
2603 Les @strong{propriétés d'objet}, auxquelles LilyPond a recours pour
2604 positionner les objets, sont modifiables avec @code{\override}. Il y a
2605 deux avantages à changer ces propriétés : (a) d'autres objets
2606 pourront être déplacés automatiquement si nécessaire pour faire de la
2607 place, et (b) la même retouche peut s'appliquer à toutes les occurrences
2608 du même type d'objet. Ces propriétés sont :
2615 Ce point a déjà été traité en détails -- voir
2616 @ref{Objets inclus dans la portée}.
2620 @code{padding}, @code{right-padding}, @code{staff-padding}
2622 @cindex décalage (padding)
2623 @cindex padding, propriété
2624 @cindex right-padding, propriété
2625 @cindex staff-padding, propriété
2627 Au moment de positionner un objet, la valeur de sa propriété
2628 @code{padding} détermine l'espace à laisser libre entre celui-ci et le
2629 coin le plus proche de l'objet à côté duquel il est placé. Vous
2630 remarquerez que c'est la valeur @code{padding} de l'objet @strong{à
2631 placer} qui compte ; la valeur @code{padding} de l'objet déjà placé
2632 est ignorée. Les espaces libres déterminés par @code{padding}
2633 s'appliquent à tous les objets associés à la
2634 @code{side-position-interface}.
2636 Le positionnement de groupes d'altérations est contrôlé par
2637 @code{right-padding}, et non plus @code{padding}. Cette propriété
2638 appartient à l'objet @code{AccidentalPlacement} qui, vous le
2639 remarquerez, prend place dans le contexte @strong{Staff}. Dans le
2640 processus de composition, les têtes de notes sont disposées en premier,
2641 puis les altérations, s'il y en a, sont ajoutées à gauche des têtes de
2642 note suivant la propriété @code{right-padding} qui détermine
2643 l'espacement par rapport aux têtes de note. C'est pourquoi seule la
2644 propriété @code{right-padding} de l'objet @code{AccidentalPlacement}
2645 joue sur le positionnement des altérations.
2647 La propriété @code{staff-padding} est très proche de la propriété
2648 @code{padding} : @code{padding} contrôle l'espace minimum entre un
2649 objet qui accepte la @code{side-position-interface} et l'objet le plus
2650 proche (généralement une note ou une ligne de portée) ;
2651 @code{staff-padding} ne s'applique qu'aux objets qui sont toujours
2652 placés au-dehors de la portée -- il contrôle l'espace minimum à insérer
2653 entre l'objet et la portée. Attention : par défaut,
2654 @code{staff-padding} concerne les objets positionnés par rapport
2655 à la portée et n'a aucun effet sur les objets qui sont positionnés par
2656 rapport à une note ; il est toutefois possible de le régler pour
2657 fonctionner avec ces derniers.
2659 Pour trouver quelle propriété @code{padding} employer pour l'objet que
2660 vous cherchez à repositionner, il vous faut consulter les propriétés de
2661 l'objet dans la RPI. Prenez garde que les propriétés @code{padding} ne
2662 sont pas forcément traitées dans l'objet en question ; il faut
2663 alors regarder les objets qui semblent s'en rapprocher.
2665 Toutes les valeurs @code{padding} sont exprimées en espace de portée.
2666 Pour la plupart des objets, la valeur par défaut est aux alentours de
2667 1,0 et parfois moins (cela dépend de chaque objet). Il est possible de
2668 la modifier lorsqu'on a besoin d'un espace vide plus grand (ou plus
2673 @code{self-alignment-X}
2675 @cindex self-alignment-X, propriété
2677 Cette propriété sert à aligner les objets sur la gauche, sur la droite
2678 ou à les centrer par rapport au point de référence des objets parents.
2679 Elle peut être utilisée avec tous les objets qui acceptent la
2680 @code{self-alignment-interface}. Il s'agit, en général, des objets qui
2681 contiennent du texte. Les valeurs admises sont @code{LEFT},
2682 @code{RIGHT} et @code{CENTER}. On peut aussi attribuer à
2683 la place une valeur numérique entre @code{-1} et @code{+1},
2684 où @code{-1} signifie alignement sur la gauche, @code{+1}
2685 alignement sur la droite, et les nombres intermédiaires déplacent
2686 progressivement le texte de la gauche vers la droite. Des valeurs
2687 numériques supérieures à @code{1} sont également admises
2688 pour déplacer le texte encore plus loin vers la gauche, ou des
2689 valeurs inférieures à @code{-1} pour déplacer le texte encore
2690 plus loin vers la droite. Un écart de @code{1} en valeur
2691 correspond à un déplacement de la moitié de la longueur du
2696 @code{extra-spacing-width}
2698 @cindex extra-spacing-width, propriété
2700 Cette propriété est utilisée pour tous les objets qui acceptent la
2701 @code{item-interface}. Elle reçoit deux nombres, le premier étant
2702 ajouté au bord gauche et le second au bord droit. Des nombres
2703 négatifs déplacent le coin vers la gauche, des nombres positifs
2704 vers la droite, si bien que pour élargir un objet, le premier nombre
2705 doit être négatif et le second positif. Attention : tous les
2706 objets n'acceptent pas forcément les deux nombres. Par exemple, l'objet
2707 @code{Accidental} ne retient que le premier nombre (coin gauche).
2711 @code{staff-position}
2713 @cindex staff-position, propriété
2715 @code{staff-position} est une propriété de la
2716 @code{staff-symbol-referencer-interface}, qui s'applique aux objets
2717 positionnés par rapport à la portée. Elle indique, en demi-espace de
2718 portée, la position verticale des objets par rapport à la ligne médiane
2719 de la portée. C'est bien pratique pour résoudre des problèmes de
2720 collision entre des objets comme les silences valant mesure entière,
2721 les liaisons et les notes de différentes voix.
2727 @cindex force-hshift, propriété
2729 Des notes très proches dans un accord, ou des notes simultanées dans
2730 différentes voix, peuvent être disposées sur deux colonnes, rarement
2731 plus, pour éviter que les têtes de notes ne se chevauchent. On parle
2732 alors de colonnes (ou empilement) de notes et un objet appelé
2733 @code{NoteColumn} est créé pour placer les notes sur la colonne.
2735 La propriété @code{force-hshift} appartient à @code{NoteColumn} (en
2736 réalité à la @code{note-column-interface}). Le fait de la modifier
2737 permet de déplacer un empilement selon l'unité appropriée aux colonnes
2738 de notes, à savoir la largeur des têtes de note de la première voix.
2739 Son utilisation est réservée à des situations complexes dans lesquelles
2740 les commandes habituelles @code{\shiftOn}
2741 (voir @ref{Instanciation explicite des voix}) ne suffisent plus à
2742 résoudre les conflits. Elle est alors préférable à l'utilisation de la
2743 propriété @code{extra-offset}, dans la mesure où on n'a pas besoin
2744 d'exprimer la distance en espace de portée et où le fait de déplacer
2745 les notes à l'intérieur ou à l'extérieur d'une @code{NoteColumn} affecte
2746 d'autres actions comme les fusions de notes.
2752 Pour terminer, quand toutes les autres méthodes ont échoué, il est
2753 possible de repositionner verticalement les objets à la main par rapport
2754 à la ligne médiane de la portée, ou en les déplaçant à une distance
2755 donnée vers une nouvelle position. Les inconvénients sont qu'il faut
2756 individuellement, pour chaque objet, trouver les valeurs correctes de
2757 repositionnement souvent par tâtonnement et que, puisque le
2758 mouvement est opéré après que LilyPond a placé tous les autres
2759 objets, c'est à l'utilisateur de résoudre tous les problèmes de
2760 collision qui pourraient survenir. Et le pire avec cette méthode est
2761 que, le jour où la musique est modifiée, il faut de nouveau rechercher
2762 les valeurs de repositionnement. Les propriétés à utiliser pour ce type
2763 de repositionnement manuel sont :
2769 @cindex extra-offset, propriété
2771 Cette propriété s'applique à tout objet acceptant la
2772 @code{grob-interface}. Elle reçoit une paire de nombres qui indiquent
2773 le déplacement supplémentaire dans le sens horizontal et vertical. Des
2774 nombres négatifs déplacent l'objet vers la gauche ou vers la droite.
2775 L'unité utilisée est l'espace de portée. Le déplacement supplémentaire
2776 intervient une fois que la composition des objets est achevée, si bien
2777 qu'un objet peut être repositionné à n'importe quel endroit sans
2778 perturber quoi que ce soit.
2782 @cindex positions, propriété
2784 Cette propriété est très utile pour ajuster manuellement l'inclinaison
2785 et la hauteur des barres de ligature, des liaisons et des nolets. Elle
2786 est suivie de deux nombres qui donnent la position des extrémités gauche
2787 et droite des barres, liaisons, etc. par rapport à la ligne médiane de
2788 la portée. L'unité de référence est l'intervalle de lignes de portée.
2789 Attention toutefois au fait que les liaisons et phrasés ne peuvent pas
2790 être repositionnés n'importe où. LilyPond commence par dresser la liste
2791 des emplacements possibles pour les liaisons et choisit par défaut la
2792 liaison qui @qq{semble la meilleure}. Si la propriété @code{positions}
2793 a été retouchée, la liaison la plus proche de la position demandée sera
2794 retenue dans la liste.
2799 Il est possible qu'un objet ne dispose pas de toutes ces propriétés. Il
2800 est donc nécessaire de consulter la RPI pour vérifier quelles sont les
2801 propriétés disponibles pour l'objet en question.
2803 Voici une liste d'objets les plus couramment impliqués dans les
2804 collisions, avec le nom de l'objet à consulter dans la RPI afin de
2805 trouver les propriétés à retoucher pour obtenir un déplacement.
2808 @multitable @columnfractions .5 .5
2809 @headitem Type d'objet @tab Nom d'objet
2810 @item Articulations @tab @code{Script}
2811 @item Barres de ligature @tab @code{Beam}
2812 @item Doigté @tab @code{Fingering}
2813 @item Liaisons de phrasé @tab @code{Slur}
2814 @item Liaisons de prolongation @tab @code{Tie}
2815 @item Nolets @tab @code{TupletBracket}
2816 @item Nuances (verticalement) @tab @code{DynamicLineSpanner}
2817 @item Nuances (horizontalement) @tab @code{DynamicText}
2818 @item Reprises / marques de texte @tab @code{RehearsalMark}
2819 @item Texte, par ex. @code{^"texte"} @tab @code{TextScript}
2823 @node Correction des collisions d'objets
2824 @subsection Correction des collisions d'objets
2825 @translationof Fixing overlapping notation
2827 Voyons maintenant comment les propriétés décrites dans la section
2828 précédente peuvent nous aider à résoudre les collisions.
2831 * La propriété padding::
2832 * La propriété right-padding::
2833 * La propriété staff-padding::
2834 * La propriété self-alignment-X::
2835 * La propriété staff-position::
2836 * La propriété extra-offset::
2837 * La propriété positions::
2838 * La propriété force-hshift::
2842 @node La propriété padding
2843 @unnumberedsubsubsec La propriété @code{padding}
2844 @translationof The padding property
2846 @cindex décalage (padding)
2847 @cindex résolution des chevauchements de notation
2848 @cindex chevauchement de notation
2850 En jouant sur la propriété @code{padding} (littéralement
2851 @qq{rembourrage}), on augmente (ou on diminue) la distance entre
2852 des symboles qui sont imprimés au-dessus ou en dessous des notes.
2854 @cindex Script, exemple de dérogation
2855 @cindex padding, exemple d'utilisation de la propriété
2857 @lilypond[quote,fragment,relative=1,verbatim]
2859 \override Script.padding = #3
2863 @cindex MetronomeMark, exemple de dérogation
2864 @cindex padding, exemple d'utilisation de la propriété
2866 @lilypond[quote,fragment,relative=1,verbatim]
2867 % This will not work, see below:
2868 \override MetronomeMark.padding = #3
2872 \override Score.MetronomeMark.padding = #3
2877 Vous remarquerez dans le second exemple à quel point il est important de
2878 préciser le nom du contexte qui contient l'objet. Puisque l'objet
2879 @code{MetronomeMark} appartient au contexte @code{Score}, le fait de
2880 modifier la propriété dans le contexte @code{Voice} passera inaperçu.
2881 Pour plus de détails, voir @ruser{Modification de propriétés}.
2883 Si on augmente la propriété @code{padding} d'un objet alors que celui-ci
2884 fait partie d'un ensemble d'objets positionnés en fonction de leur
2885 @code{outside-staff-priority}, cet objet sera déplacé, ainsi que tous
2886 les autres objets du groupe.
2889 @node La propriété right-padding
2890 @unnumberedsubsubsec La propriété @code{right-padding}
2891 @translationof The right-padding property
2893 @cindex right-padding, propriété
2895 La propriété @code{right-padding} joue sur l'espacement entre une
2896 altération et la note sur laquelle elle porte. On ne l'utilise pas
2897 souvent, mais l'espacement par défaut peut se révéler inadéquat avec
2898 certaines altérations ou certains glyphes utilisés en musique
2899 microtonale. Le stencil de l'altération devra alors être construit sous
2900 la forme d'un @code{markup} qui contiendra le ou les symboles requis,
2903 @cindex Accidental, exemple de dérogation
2904 @cindex text, exemple d'utilisation de la propriété
2905 @cindex stencil, exemple d'utilisation de la propriété
2906 @cindex AccidentalPlacement, exemple de dérogation
2907 @cindex right-padding, exemple d'utilisation de la propriété
2909 @lilypond[quote,ragged-right,verbatim]
2910 sesquisharp = \markup { \sesquisharp }
2913 % This prints a sesquisharp but the spacing is too small
2914 \once \override Accidental.stencil = #ly:text-interface::print
2915 \once \override Accidental.text = #sesquisharp
2917 % This improves the spacing
2918 \once \override Score.AccidentalPlacement.right-padding = #0.6
2919 \once \override Accidental.stencil = #ly:text-interface::print
2920 \once \override Accidental.text = #sesquisharp
2926 Cette méthode utilise, pour le stencil des altérations, une retouche
2927 qui ne sera pas reprise par la suite. Le type de stencil est
2928 obligatoirement une procédure, qui consiste ici à imprimer le contenu de
2929 la propriété @code{text} de @code{Accidental}, déclaré comme étant un
2930 signe sesqui-dièse. Celui-ci est ensuite repoussé devant la tête de
2931 note par la retouche de @code{right-padding}.
2934 @node La propriété staff-padding
2935 @unnumberedsubsubsec La propriété @code{staff-padding}
2936 @translationof The staff-padding property
2938 @cindex alignement d'objets sur une ligne de base
2939 @cindex objets, alignement sur une ligne de base
2941 @code{staff-padding} sert à aligner des objets tels que des nuances
2942 sur une ligne fictive à une hauteur donnée par rapport à la portée
2943 plutôt qu'à une hauteur qui varie en fonction de la position de la note
2944 sur laquelle porte l'objet. Ce n'est pas une propriété de
2945 @code{DynamicText} mais de @code{DynamicLineSpanner}, car la ligne
2946 fictive est destinée à s'appliquer autant à @strong{toutes} les nuances,
2947 notamment celles qui sont créées comme des bandeaux en longueur (en
2948 anglais @emph{Spanners}). Tel est donc le moyen d'aligner les
2949 indications de nuance, comme dans cet exemple repris de la section
2952 @cindex DynamicText, exemple de dérogation
2953 @cindex extra-spacing-width, exemple d'utilisation de la propriété
2954 @cindex DynamicLineSpanner, exemple de dérogation
2955 @cindex staff-padding, exemple d'utilisation de la propriété
2957 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2959 % Extend width by 1 unit
2960 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2961 % Align dynamics to a base line 2 units above staff
2962 \override DynamicLineSpanner.staff-padding = #2
2967 @node La propriété self-alignment-X
2968 @unnumberedsubsubsec La propriété @code{self-alignment-X}
2969 @translationof The self-alignment-X property
2971 L'exemple suivant montre comment résoudre une collision entre une
2972 indication de corde et une hampe, en alignant le coin droit sur le point
2973 de référence de la note parente :
2975 @cindex StringNumber, exemple de dérogation
2976 @cindex self-alignment-X, exemple d'utilisation de la propriété
2978 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
2981 \once \override StringNumber.self-alignment-X = #RIGHT
2986 @node La propriété staff-position
2987 @unnumberedsubsubsec La propriété @code{staff-position}
2988 @translationof The staff-position property
2990 @cindex collision d'objets à l'intérieur d'une portée
2992 Dans une voix, un silence valant une mesure entière peut chevaucher les
2993 notes d'une autre voix. Vu que ces silences sont centrés entre les deux
2994 barres de mesure, il serait très compliqué de programmer LilyPond pour
2995 repérer ces risques de collision dans la mesure où, normalement, toutes
2996 les collisions entre notes ou entre notes et silences se produisent sur
2997 des notes et silences simultanés. Voici un exemple de collision de ce
3000 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
3001 << { c4 c c c } \\ { R1 } >>
3004 Ici, la meilleure solution consiste à déplacer le symbole de pause vers
3005 le bas -- puisque cette pause appartient à la voix deux. Par défaut,
3006 dans la @code{\voiceTwo} (c'est-à-dire dans la seconde voix d'une
3007 construction @code{<<@{@dots{}@} \\ @{@dots{}@}>>}), la propriété
3008 @code{staff-position} est réglée sur @code{-4} pour les
3009 @code{MultiMeasureRest} ; nous avons donc besoin de la déplacer, disons,
3010 de quatre demi-intervalles vers le bas, ce qui donne @code{-8}.
3012 @cindex MultiMeasureRest, exemple de dérogation
3013 @cindex staff-position, exemple d'utilisation de la propriété
3015 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
3019 \override MultiMeasureRest.staff-position = #-8
3024 C'est mieux que d'utiliser, par exemple, @code{extra-offset},
3025 car la ligne supplémentaire au-dessus du silence est insérée
3029 @node La propriété extra-offset
3030 @unnumberedsubsubsec La propriété @code{extra-offset}
3031 @translationof The extra-offset property
3033 @cindex positionnement des objets
3034 @cindex positionnement des grobs
3035 @cindex objets, positionnement
3036 @cindex grobs, positionnement
3038 La propriété @code{extra-offset} offre la possibilité de contrôler
3039 entièrement le placement d'un objet, aussi bien horizontalement que
3042 Dans l'exemple suivant, la seconde indication de doigté est déplacée
3043 légèrement vers la gauche et de 1,8 intervalle de lignes vers le bas :
3045 @cindex Fingering, exemple de dérogation
3046 @cindex extra-offset, exemple d'utilisation de la propriété
3048 @lilypond[quote,fragment,relative=1,verbatim]
3051 \once \override Fingering.extra-offset = #'(-0.3 . -1.8)
3056 @node La propriété positions
3057 @unnumberedsubsubsec La propriété @code{positions}
3058 @translationof The positions property
3060 @cindex contrôle des nolets, liaisons, phrasés et ligatures
3061 @cindex gestion manuelle des nolets, liaisons, phrasés et ligatures
3062 @cindex ligatures de nolet, gestion manuelle
3063 @cindex liaisons, gestion manuelle
3064 @cindex phrasés, gestion manuelle
3065 @cindex ligatures, gestion manuelle
3067 La propriété @code{positions} permet de contrôler manuellement la
3068 position et l'inclinaison des nolets, coulés, liaisons de phrasé et
3071 Voici un exemple où la liaison de phrasé recouvre la liaison
3074 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
3078 @cindex PhrasingSlur, exemple de dérogation
3079 @cindex positions, exemple d'utilisation de la propriété
3082 Nous pourrions envisager de remonter quelque peu les extrémités
3083 de la liaison de phrasé. Commençons par repositionner l'extrémité
3084 gauche à 2,5 espaces de portée au-dessus de la ligne médiane, et
3085 la droite à 4,5 ; LilyPond choisira la courbe dont les extrémités
3086 seront les plus approchantes de celle déterminées :
3088 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
3089 \once \override PhrasingSlur.positions = #'(2.5 . 4.5)
3093 C'est déjà mieux, mais ne pourrait-on pas maintenant abaisser un
3094 peu l'extrémité droite de la liaison d'articulation ? Vous
3095 constaterez qu'il n'est pas possible d'y arriver, tout simplement
3096 parce qu'il n'y a pas de meilleur candidat ; la propriété
3097 @code{positions} n'est alors d'aucune utilité. Les liaisons,
3098 aussi bien de tenue que d'articulation ou de phrasé, peuvent se
3099 positionner et se dessiner tout en finesse lorsque nécessaire --
3100 voir à ce sujet @ruser{Modification des liaisons}.
3102 Voici un autre exemple. Comme nous pouvons le constater, les barres de
3103 ligature chevauchent les liaisons de tenue :
3105 @lilypond[quote,verbatim,fragment,ragged-right]
3109 { c'1 ~ c'2. e'8 f' }
3111 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
3114 { c'1 ~ c'2. e'8 f' }
3116 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
3122 On peut y remédier en déplaçant manuellement vers le haut les deux
3123 extrémités des ligatures de croches, non plus à 1,81 intervalle
3124 au-dessous de la ligne médiane mais, disons, à 1 :
3126 @cindex Beam, exemple de dérogation
3127 @cindex positions, exemple d'utilisation de la propriété
3129 @lilypond[quote,verbatim,fragment,ragged-right]
3133 { c'1 ~ c'2. e'8 f' }
3136 \override Beam.positions = #'(-1 . -1)
3137 e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g''
3141 { c'1 ~ c'2. e'8 f' }
3143 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
3149 Vous remarquerez que la retouche continue de s'appliquer au
3150 second bloc de croches de la première voix mais qu'il ne s'applique
3151 à aucune mesure de la deuxième voix.
3154 @node La propriété force-hshift
3155 @unnumberedsubsubsec La propriété @code{force-hshift}
3156 @translationof The force-hshift property
3158 Maintenant, nous sommes prêts à appliquer les dernières corrections à
3159 l'exemple de Chopin présenté à la fin de @ref{J'entends des Voix}, que
3160 nous avions laissé dans cet état :
3162 @lilypond[quote,verbatim,fragment,ragged-right]
3163 \new Staff \relative c'' {
3178 La note intermédiaire du premier accord, le la bémol à la quatrième
3179 voix, doit rester dans le même empilement que la note haute. Pour y
3180 remédier, nous réglons le @code{force-hshift} -- qui est une propriété
3181 de @code{NoteColumn} -- de cette note sur zéro.
3183 Quant au second accord, il serait préférable que le fa s'aligne avec le
3184 la et que la note la plus basse se positionne un peu plus sur la droite
3185 pour éviter que les hampes se chevauchent. Pour cela, nous réglons le
3186 @code{force-hshift} au niveau du @code{NoteColumn} du ré bémol de telle
3187 sorte qu'il se déplace de la moitié d'un espace de portée vers la
3190 Et voici le résultat final :
3192 @cindex NoteColumn, exemple de dérogation
3193 @cindex force-hshift, exemple d'utilisation de la propriété
3195 @lilypond[quote,verbatim,fragment,ragged-right]
3196 \new Staff \relative c'' {
3203 \once \override NoteColumn.force-hshift = #0.5
3209 \override NoteColumn.force-hshift = #0
3218 @node Exemple concret
3219 @subsection Exemple concret
3220 @translationof Real music example
3222 Pour terminer ce chapitre consacré aux retouches, voici, étape par
3223 étape, la mise en forme d'un exemple concret nécessitant un certain
3224 nombre de retouches jusqu'à l'obtention du résultat attendu. Cet
3225 exemple a été choisi en raison des problèmes inhabituels de notation
3226 qu'il soulevait et pour vous apprendre à les résoudre grâce au Manuel de
3227 notation. Il n'est pas représentatif d'une opération normale de
3228 gravure ; que ces difficultés ne vous découragent donc pas ! Des
3229 difficultés comme celles-ci ne sont, heureusement, pas courantes !
3231 Cet exemple est tiré de la Première Ballade de Chopin, Op. 23, mesures
3232 6 à 9 ; cela correspond à la transition entre le Lento d'ouverture
3233 et le Moderato. Voici, pour commencer, ce à quoi nous voulons que la
3234 partition ressemble ; pour limiter les complications, nous n'avons
3235 pas fait apparaître les indications de nuance, de doigté ni de pédale.
3238 @c The following should appear as music without code
3239 @c This example should not be indexed
3240 @c line-width ensures no break
3241 @lilypond[quote,ragged-right,line-width=6\in]
3242 rhMusic = \relative c'' {
3245 \once \override Tie.staff-position = #3.5
3249 \mergeDifferentlyHeadedOn
3250 \mergeDifferentlyDottedOn
3251 bes2.^\markup { \bold "Moderato" } r8
3257 % Reposition the c2 to the right of the merged note
3258 \once \override NoteColumn.force-hshift = #1.0
3259 % Move the c2 out of the main note column
3260 % so the merge will work
3267 % Stem on the d2 must be down to permit merging
3269 % Stem on the d2 should be invisible
3270 \tweak Stem.transparent ##t
3271 \tweak Flag.transparent ##t
3279 \mergeDifferentlyHeadedOff
3280 \mergeDifferentlyDottedOff
3285 lhMusic = \relative c' {
3287 <d g, d>1)\arpeggio |
3294 \new Staff = "RH" <<
3298 \new Staff = "LH" <<
3307 Nous constatons tout d'abord que, dans la troisième mesure, la main
3308 droite compte quatre voix. Ce sont les cinq croches avec une barre,
3309 le do avec liaison, le ré blanche qui se fond avec le ré croche, et le
3310 fa dièse noire pointée qui se fond lui aussi avec la croche de même
3311 hauteur. Tout le reste se réduit à une seule voix. Le plus simple est
3312 donc de créer temporairement ces trois voix supplémentaires au moment
3313 opportun. Si vous avez oublié comment faire, reportez-vous à
3314 @ref{J'entends des Voix} et @ref{Instanciation explicite des voix}.
3315 Nous opterons ici pour une déclaration explicite des voix du passage
3316 polyphonique, puisque LilyPond est alors plus performant en matière
3317 d'évitement des collisions.
3319 Commençons par saisir les notes comme appartenant à deux variables,
3320 mettons en place l'ossature des portées dans un bloc @code{\Score} et
3321 voyons ce que LilyPond propose par défaut :
3323 @c line-width ensures no break
3324 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3325 rhMusic = \relative c'' {
3331 % Start polyphonic section of four voices
3333 { c,8 d fis bes a } % continuation of main voice
3347 g2. % continuation of main voice
3351 lhMusic = \relative c' {
3360 \new Staff = "RH" <<
3364 \new Staff = "LH" <<
3373 Toutes les notes sont correctes mais l'allure générale est loin d'être
3374 satisfaisante. La liaison se heurte à l'indication de mesure lors du
3375 changement de métrique, la ligature des croches n'est pas bonne dans la
3376 troisième mesure, les notes ne sont pas fusionnées et il manque
3377 plusieurs éléments de notation. Commençons par le plus simple. Nous
3378 pouvons corriger la ligature des croches en la créant manuellement et
3379 nous pouvons facilement ajouter les limites droite et gauche de la
3380 liaison de phrasé, puisque tout cela a déjà été traité dans le tutoriel.
3383 @c line-width ensures no break
3384 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3385 rhMusic = \relative c'' {
3391 % Start polyphonic section of four voices
3393 { c,8 d fis bes a } % continuation of main voice
3407 g2.\) % continuation of main voice
3411 lhMusic = \relative c' {
3420 \new Staff = "RH" <<
3424 \new Staff = "LH" <<
3433 La première mesure est maintenant correcte. La seconde contient un
3434 arpège et doit se terminer par une double barre. Comment faire, puisque
3435 cela n'a pas été traité dans le Manuel d'initiation ? C'est alors
3436 qu'il faut nous reporter au Manuel de notation. Quand on cherche
3437 @qq{arpège} et @qq{barre de mesure} dans l'index, on voit aisément qu'il
3438 faut ajouter @code{\arpeggio} à un accord pour produire un arpège et
3439 qu'une double barre est le résultat de la commande @code{\bar "||"}.
3440 Rien de plus facile ! Nous devons ensuite corriger la collision entre
3441 la liaison et l'indication de mesure. Le mieux est de déplacer la
3442 liaison vers le haut. La méthode pour déplacer les objets a déjà été
3443 présentée dans @ref{Déplacement d'objets}, et l'on sait que, pour des
3444 objets positionnés par rapport à la portée, il nous faut modifier leur
3445 propriété @code{staff-position}, exprimée en demi-intervalles de lignes
3446 par rapport à la ligne médiane de la portée. Voici donc la retouche à
3447 insérer juste devant la première note liée ; elle est censée déplacer la
3448 liaison vers le haut de 3,5 demi-intervalles de lignes au-dessus de la
3451 @code{\once \override Tie.staff-position = #3.5}
3453 Cela s'adjoint à la deuxième mesure, pour donner :
3455 @c line-width ensures no break
3456 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3457 rhMusic = \relative c'' {
3460 \once \override Tie.staff-position = #3.5
3465 % Start polyphonic section of four voices
3467 { c,8 d fis bes a } % continuation of main voice
3481 g2.\) % continuation of main voice
3485 lhMusic = \relative c' {
3487 <d g, d>1)\arpeggio |
3494 \new Staff = "RH" <<
3498 \new Staff = "LH" <<
3507 Venons-en à la troisième mesure et au début de la section Moderato.
3508 Dans le Tutoriel, il est indiqué comment insérer du texte en gras à
3509 l'aide de la commande @code{\markup} ; pas de problème, du coup,
3510 pour ajouter @qq{Moderato} en gras. Mais comment faire pour fusionner
3511 les notes de différentes voix ? C'est là que le Manuel de notation
3512 peut nous venir en aide. Une recherche sur @qq{fusionnement de notes}
3513 dans l'index nous renvoie au chapitre @ruser{Résolution des collisions},
3514 et plus précisément aux commandes permettant de fusionner des notes en
3515 fonction de leur type et selon qu'elles sont pointées ou non. Dans
3516 notre exemple, pour la durée de la polyphonie de la troisième mesure,
3517 nous avons besoin de fusionner deux types de notes ; grâce aux
3518 informations trouvées dans le Manuel de notation, nous ajoutons
3521 \mergeDifferentlyHeadedOn
3522 \mergeDifferentlyDottedOn
3526 au début de cette section et
3529 \mergeDifferentlyHeadedOff
3530 \mergeDifferentlyDottedOff
3534 à la fin, ce qui donne :
3536 @c line-width ensures no break
3537 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3538 rhMusic = \relative c'' {
3541 \once \override Tie.staff-position = #3.5
3545 bes2.^\markup { \bold "Moderato" } r8
3546 \mergeDifferentlyHeadedOn
3547 \mergeDifferentlyDottedOn
3548 % Start polyphonic section of four voices
3550 { c,8 d fis bes a } % continuation of main voice
3564 \mergeDifferentlyHeadedOff
3565 \mergeDifferentlyDottedOff
3566 g2.\) % continuation of main voice
3570 lhMusic = \relative c' {
3572 <d g, d>1)\arpeggio |
3579 \new Staff = "RH" <<
3583 \new Staff = "LH" <<
3592 Ces retouches ont permis de fusionner les deux fa dièse mais pas les
3593 deux ré. Pourquoi ? La réponse se trouve dans la même section du
3594 Manuel de notation : les notes à fusionner doivent avoir des hampes
3595 dans des directions opposées et deux notes ne peuvent pas être
3596 fusionnées s'il y a une troisième note dans la même colonne. Ici, les
3597 deux ré ont leur hampe orientée vers le haut et il y a une troisième
3598 note, do. Nous savons changer l'orientation de la hampe avec
3599 @code{\stemDown} et le Manuel de notation nous indique également comment
3600 déplacer le do -- en produisant un décalage grâce à l'une des commandes
3601 @code{\shift}. Mais laquelle ? Le do appartient à la deuxième
3602 voix et n'est pas décalé ; les deux ré appartiennent respectivement
3603 à la première et à la troisième voix, et l'un n'est pas décalé tandis
3604 que l'autre l'est. Il nous faut donc décaler largement le do avec la
3605 commande @code{\shiftOnn} pour éviter une interférence avec les deux ré.
3606 Voici ce que donnent ces modifications :
3608 @cindex Tie, exemple de dérogation
3609 @cindex staff-position, exemple d'utilisation de la propriété
3611 @c line-width ensures no break
3612 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3613 rhMusic = \relative c'' {
3616 \once \override Tie.staff-position = #3.5
3620 bes2.^\markup { \bold "Moderato" } r8
3621 \mergeDifferentlyHeadedOn
3622 \mergeDifferentlyDottedOn
3623 % Start polyphonic section of four voices
3625 { c,8 d fis bes a } % continuation of main voice
3628 % Move the c2 out of the main note column
3629 % so the merge will work
3634 % Stem on the d2 must be down to permit merging
3642 \mergeDifferentlyHeadedOff
3643 \mergeDifferentlyDottedOff
3644 g2.\) % continuation of main voice
3648 lhMusic = \relative c' {
3650 <d g, d>1)\arpeggio |
3657 \new Staff = "RH" <<
3661 \new Staff = "LH" <<
3670 Pas loin ! Il ne reste plus que deux problèmes : les ré une
3671 fois fusionnés ne devraient plus avoir de hampe vers le bas, et le do
3672 serait mieux à la droite des ré. Nous savons remédier à ces deux
3673 problèmes grâce aux retouches précédentes : nous allons rendre la
3674 hampe transparente et déplacer le do avec la propriété
3675 @code{force-hshift}. Et voici le résultat final :
3677 @cindex NoteColumn, exemple de dérogation
3678 @cindex force-hshift, exemple d'utilisation de la propriété
3679 @cindex Stem, exemple de dérogation
3680 @cindex transparent, exemple d'utilisation de la propriété
3682 @c line-width ensures no break
3683 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3684 rhMusic = \relative c'' {
3687 \once \override Tie.staff-position = #3.5
3691 bes2.^\markup { \bold "Moderato" } r8
3692 \mergeDifferentlyHeadedOn
3693 \mergeDifferentlyDottedOn
3694 % Start polyphonic section of four voices
3696 { c,8 d fis bes a } % continuation of main voice
3700 % Reposition the c2 to the right of the merged note
3701 \once \override NoteColumn.force-hshift = #1.0
3702 % Move the c2 out of the main note column
3703 % so the merge will work
3710 % Stem on the d2 must be down to permit merging
3712 % Stem on the d2 should be invisible
3713 \tweak Stem.transparent ##t
3714 \tweak Flag.transparent ##t
3722 \mergeDifferentlyHeadedOff
3723 \mergeDifferentlyDottedOff
3724 g2.\) % continuation of main voice
3728 lhMusic = \relative c' {
3730 <d g, d>1)\arpeggio |
3737 \new Staff = "RH" <<
3741 \new Staff = "LH" <<
3751 @node Autres retouches
3752 @section Autres retouches
3753 @translationof Further tweaking
3756 * Autres utilisations des retouches::
3757 * Utilisation de variables dans les retouches::
3758 * Feuilles de style::
3759 * Autres sources de documentation::
3760 * Retouches avancées avec Scheme::
3764 @node Autres utilisations des retouches
3765 @subsection Autres utilisations des retouches
3766 @translationof Other uses for tweaks
3769 * Liaison entre plusieurs voix::
3770 * Rendu MIDI d'un point d'orgue::
3773 @cindex transparent, utilisation de la propriété
3774 @cindex création d'objet invisible
3775 @cindex suppression d'objets
3776 @cindex objets, suppression d'
3777 @cindex masquage d'objets
3778 @cindex objets, masquage d'
3779 @cindex invisibles, objets
3780 @cindex objets, invisibles
3781 @cindex liaison de tenue avec changement de voix
3784 @node Liaison entre plusieurs voix
3785 @unnumberedsubsubsec Liaison entre plusieurs voix
3786 @translationof Tying notes across voices
3788 Voici un exemple qui montre comment créer une liaison de
3789 prolongation entre des notes appartenant à des voix différentes. En
3790 temps normal, seules deux notes appartenant à une même voix
3791 peuvent être ainsi liées. La solution consiste à utiliser deux voix,
3792 dont l'une avec les notes liées
3794 @lilypond[quote,fragment,relative=2]
3795 << { b8~ b8\noBeam } \\ { b[ g8] } >>
3799 et à rendre transparente la première hampe de cette voix ;
3800 on a alors l'impression que la liaison couvre les deux voix.
3802 @cindex Stem, exemple de dérogation
3803 @cindex transparent, exemple d'utilisation de la propriété
3805 @lilypond[quote,fragment,relative=2,verbatim]
3808 \tweak Stem.transparent ##t
3809 \tweak Flag.transparent ##t
3817 Pour être sûr que la hampe que nous avons rendue transparente
3818 n'empiète pas trop sur le trait de liaison, nous pouvons l'allonger en
3819 réglant la longueur (@code{length}) sur @code{8},
3821 @lilypond[quote,fragment,relative=2,verbatim]
3824 \tweak Stem.transparent ##t
3825 \tweak Flag.transparent ##t
3826 \tweak Stem.length #8
3836 @cindex affinage généré par une dérogation
3838 Nous aurions pu, pour déroger à la transparence d'un objet
3839 graphique, utiliser le raccourci @code{\omit} que nous avons vu
3840 plus haut. L'affinage constitue une opération différente en ceci
3841 qu'il n'affecte que les propriétés générées par une expression
3842 musicale unique. Nous pourrions tout à fait convertir des
3843 dérogations en affinages à l'aide d'un @code{\single} et ré-écrire
3844 l'exemple précédent de cette manière :
3846 @lilypond[quote,fragment,relative=2,verbatim]
3851 \tweak Stem.length #8
3859 Dans ce cas particulier, la différence avec un @code{\once \hide}
3860 n'est pas flagrante. Elle prend cependant toute son importance
3861 lorsque plusieurs objets de retrouvent au même instant musical --
3862 comme les têtes des notes d'un accord. En effet, la présence d'un
3863 @code{\once} sera répercutée à tous les objets, alors qu'un
3864 @code{\single} n'affectera, lui, qu'un seul objet, celui généré
3865 par l'expression musicale qui le suit directement.
3868 @node Rendu MIDI d'un point d'orgue
3869 @unnumberedsubsubsec Rendu MIDI d'un point d'orgue
3870 @translationof Simulating a fermata in MIDI
3872 @cindex stencil, utilisation de la propriété
3873 @cindex point d'orgue, rendu en MIDI
3875 En ce qui concerne les objets extérieurs à la portée, quand on veut les
3876 faire disparaître de la partition imprimée, il est généralement
3877 préférable de modifier leur propriété @code{stencil} plutôt que leur
3878 propriété @code{transparent}. Le fait d'attribuer à la propriété
3879 @code{stencil} d'un objet la valeur @code{#f} supprimera entièrement
3880 celui-ci de la partition. Il ne risquera donc pas de gêner le placement
3883 Par exemple, si nous voulons changer le réglage de métronome pour
3884 simuler un point d'orgue dans le fichier MIDI, nous ne voulons surtout
3885 pas que cette indication métronomique apparaisse sur la partition ni
3886 qu'elle influence l'espacement entre les deux systèmes ou la position
3887 des annotations voisines sur la portée. Le fait d'attribuer à la
3888 propriété @code{stencil} la valeur @code{#f} est donc la bonne solution.
3889 Nous montrons ci-dessous le résultat des deux méthodes :
3891 @cindex MetronomeMark, exemple de dérogation
3892 @cindex transparent, exemple d'utilisation de la propriété
3894 @lilypond[quote,verbatim,ragged-right]
3897 % Visible tempo marking
3900 \once \hide Score.MetronomeMark
3901 % Invisible tempo marking to lengthen fermata in MIDI
3904 % New tempo for next section
3913 @cindex MetronomeMark, exemple de dérogation
3914 @cindex stencil, exemple d'utilisation de la propriété
3916 @lilypond[quote,verbatim,ragged-right]
3919 % Visible tempo marking
3922 \once \omit Score.MetronomeMark
3923 % Invisible tempo marking to lengthen fermata in MIDI
3926 % New tempo for next section
3936 Les deux méthodes permettent d'enlever l'indication métronomique qui
3937 allonge le point d'orgue de la partition, et toutes deux modifient le
3938 rythme MIDI comme souhaité mais, dans la première, l'indication
3939 métronomique transparente repousse vers le haut l'indication de tempo,
3940 contrairement à la seconde (avec le stencil désactivé) qui la laisse à
3944 Glossaire musicologique :
3945 @rglosnamed{system,système}.
3948 @node Utilisation de variables dans les retouches
3949 @subsection Utilisation de variables dans les retouches
3950 @translationof Using variables for tweaks
3952 @cindex variables, utilisation dans les retouches
3953 @cindex utilisation de variables dans les retouches
3954 @cindex retouches et utilisation de variables
3956 Les commandes de retouche sont souvent longues et pénibles à
3957 taper, et ne tolèrent pas la moindre erreur. Lorsqu'on a besoin de
3958 faire plusieurs fois les mêmes retouches, il est préférable de
3959 définir des variables qui les contiennent.
3961 Imaginons que nous voulions accentuer certains mots dans des paroles en
3962 les mettant en italique. Au lieu des commandes @code{\italic} et
3963 @code{\bold}, qui ne fonctionnent dans les paroles que si elles sont
3964 enchâssées dans un @code{\markup} -- ce qui les rend pénibles à saisir
3965 -- pouvons-nous employer les commandes @code{\override} et
3969 @code{\override Lyrics.LyricText.font-shape = #'italic}
3970 @code{\override Lyrics.LyricText.font-series = #'bold}
3972 @code{\revert Lyrics.LyricText.font-shape}
3973 @code{\revert Lyrics.LyricText.font-series}
3976 Là encore, ce serait extrêmement pénible à saisir, surtout s'il y avait
3977 beaucoup de mots à retoucher de cette façon. Plutôt que cette
3978 solution, nous déclarons ces commandes comme étant deux variables,
3979 et les utilisons comme ci-après -- quoique on choisirait sans doute pour
3980 les variables des noms plus courts pour simplifier la frappe. Par
3981 ailleurs, le fait de recourir à une variable ne nous expose plus à
3982 l'oubli des espaces entourant les points lorsqu'explicités au beau
3983 milieu d'un bloc @code{\lyricmode} !
3985 @cindex LyricText, exemple de dérogation
3986 @cindex font-shape, exemple d'utilisation de la propriété
3987 @cindex font-series, exemple d'utilisation de la propriété
3989 @lilypond[quote,verbatim]
3991 \override Lyrics.LyricText.font-shape = #'italic
3992 \override Lyrics.LyricText.font-series = #'bold
3996 \revert Lyrics.LyricText.font-shape
3997 \revert Lyrics.LyricText.font-series
4000 global = { \key c \major \time 4/4 \partial 4 }
4002 SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g }
4003 AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e }
4004 TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
4005 BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
4007 VerseOne = \lyrics {
4008 E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
4011 VerseTwo = \lyricmode {
4012 O | \emphasize Christ, \normal whose voice the | wa -- ters heard,
4015 VerseThree = \lyricmode {
4016 O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
4019 VerseFour = \lyricmode {
4020 O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
4027 \new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
4028 \new Voice = "Alto" { \voiceTwo \AltoMusic }
4029 \new Lyrics \lyricsto "Soprano" { \VerseOne }
4030 \new Lyrics \lyricsto "Soprano" { \VerseTwo }
4031 \new Lyrics \lyricsto "Soprano" { \VerseThree }
4032 \new Lyrics \lyricsto "Soprano" { \VerseFour }
4036 \new Voice = "Tenor" { \voiceOne \TenorMusic }
4037 \new Voice = "Bass" { \voiceTwo \BassMusic }
4044 @node Feuilles de style
4045 @subsection Feuilles de style
4046 @translationof Style sheets
4048 La sortie que produit LilyPond peut être largement modifiée -- voir
4049 @ref{Retouche de partition} pour plus de détails. Mais que faire si
4050 vous avez beaucoup de fichiers auxquels vous souhaitez appliquer vos
4051 retouches ? Ou si vous souhaitez simplement séparer les retouches
4052 de la musique elle-même ? Rien de plus facile.
4054 Prenons un exemple. Ne vous inquiétez pas si vous ne comprenez pas
4055 les parties avec tous les @code{#()}. Celles-ci sont expliquées dans
4056 @ref{Retouches avancées avec Scheme}.
4058 @lilypond[quote,verbatim,ragged-right]
4060 #(make-dynamic-script
4061 #{ \markup { \hspace #0
4062 \translate #'(5 . 0)
4063 \line { \dynamic "mp"
4064 \text \italic "dolce" } }
4068 #(define-music-function
4069 (parser location string)
4071 #{ <>^\markup \bold \box #string #})
4075 a4.\mpdolce d8 cis4--\glissando a |
4079 g8(\! fis)-. e( d)-. cis2 |
4083 On peut faire quelque chose pour les définitions de @code{mpdolce}
4084 et @code{inst}. Elles produisent le résultat que nous désirons,
4085 mais nous pourrions aussi vouloir les utiliser dans une autre pièce.
4086 Il suffirait de les copier et coller au début de chaque
4087 fichier, mais c'est fastidieux. De plus, cela laisse les définitions
4088 dans nos fichiers de musique, et je trouve personnellement tous ces
4089 @code{#()} assez laids. Stockons-les dans un autre fichier :
4092 %%% enregistrez ceci dans un fichier nommé "definitions.ily"
4094 #(make-dynamic-script
4095 #@{ \markup @{ \hspace #0
4096 \translate #'(5 . 0)
4097 \line @{ \dynamic "mp"
4098 \text \italic "dolce" @} @}
4102 #(define-music-function
4103 (parser location string)
4105 #@{ <>^\markup \bold \box #string #@})
4108 Nous rappellerons ce fichier par une simple commande @code{\include} au
4109 début de notre fichier de musique. Lui attribuer l'extension
4110 @code{.ily} nous permet de distinguer aisément qu'il s'agit d'un fichier
4111 voué à être inclus dans un fichier maître ; il n'est pas destiné à
4112 être compilé isolément.@*
4113 Maintenant, modifions notre musique (enregistrez ce fichier
4114 sous @file{musique.ly}).
4116 @c We have to do this awkward example/lilypond-non-verbatim
4117 @c because we can't do the \include stuff in the manual.
4120 \include "definitions.ily"
4124 a4.\mpdolce d8 cis4--\glissando a |
4128 g8(\! fis)-. e( d)-. cis2 |
4132 @lilypond[quote,ragged-right]
4134 #(make-dynamic-script
4135 #{ \markup { \hspace #0
4136 \translate #'(5 . 0)
4137 \line { \dynamic "mp"
4138 \text \italic "dolce" } }
4142 #(define-music-function
4143 (parser location string)
4145 #{ <>^\markup \bold \box #string #})
4149 a4.\mpdolce d8 cis4--\glissando a |
4153 g8(\! fis)-. e( d)-. cis2 |
4157 C'est mieux, mais effectuons encore quelques retouches. Le glissando
4158 est peu visible, c'est pourquoi nous allons l'épaissir et le
4159 rapprocher des têtes de note. Déplaçons l'indication métronomique
4160 au-dessus de la clef, au lieu de la laisser au-dessus de la première
4161 note. Et pour finir, mon professeur de composition déteste les
4162 chiffrages de mesure en @qq{C}, nous allons donc le transformer en
4165 Cependant, ne changez pas le fichier @file{musique.ly}. Remplacez le
4166 fichier @file{definitions.ily} par ceci :
4171 #(make-dynamic-script
4172 #@{ \markup @{ \hspace #0
4173 \translate #'(5 . 0)
4174 \line @{ \dynamic "mp"
4175 \text \italic "dolce" @} @}
4179 #(define-music-function
4180 (parser location string)
4182 #@{ <>^\markup \bold \box #string #@})
4187 \override MetronomeMark.extra-offset = #'(-5 . 0)
4188 \override MetronomeMark.padding = #'3
4192 \override TimeSignature.style = #'numbered
4196 \override Glissando.thickness = #3
4197 \override Glissando.gap = #0.1
4202 @lilypond[quote,ragged-right]
4204 #(make-dynamic-script
4205 #{ \markup { \hspace #0
4206 \translate #'(5 . 0)
4207 \line { \dynamic "mp"
4208 \text \italic "dolce" } }
4212 #(define-music-function
4213 (parser location string)
4215 #{ <>^\markup \bold \box #string #})
4220 \override MetronomeMark.extra-offset = #'(-5 . 0)
4221 \override MetronomeMark.padding = #'3
4225 \override TimeSignature.style = #'numbered
4229 \override Glissando.thickness = #3
4230 \override Glissando.gap = #0.1
4236 a4.\mpdolce d8 cis4--\glissando a |
4240 g8(\! fis)-. e( d)-. cis2 |
4244 C'est encore mieux ! Mais supposons maintenant que je veuille
4245 publier cette pièce. Mon professeur de composition n'aime pas les
4246 chiffrages de mesure en @qq{C}, mais moi je les aime bien. Copions
4247 l'actuel @file{definitions.ily} dans le fichier
4248 @file{publication-web.ily}, et modifions ce dernier. Puisque la musique
4249 est destinée à produire un fichier PDF affiché sur écran, nous allons
4250 aussi augmenter la taille globale de police.
4255 #(make-dynamic-script
4256 #@{ \markup @{ \hspace #0
4257 \translate #'(5 . 0)
4258 \line @{ \dynamic "mp"
4259 \text \italic "dolce" @} @}
4263 #(define-music-function
4264 (parser location string)
4266 #@{ <>^\markup \bold \box #string #@})
4268 #(set-global-staff-size 23)
4273 \override MetronomeMark.extra-offset = #'(-5 . 0)
4274 \override MetronomeMark.padding = #'3
4281 \override Glissando.thickness = #3
4282 \override Glissando.gap = #0.1
4287 @lilypond[quote,ragged-right]
4289 #(make-dynamic-script
4290 #{ \markup { \hspace #0
4291 \translate #'(5 . 0)
4292 \line { \dynamic "mp"
4293 \text \italic "dolce" } }
4297 #(define-music-function
4298 (parser location string)
4300 #{ <>^\markup \bold \box #string #})
4302 #(set-global-staff-size 23)
4306 \override MetronomeMark.extra-offset = #'(-5 . 0)
4307 \override MetronomeMark.padding = #'3
4310 \override Glissando.thickness = #3
4311 \override Glissando.gap = #0.1
4317 a4.\mpdolce d8 cis4--\glissando a |
4321 g8(\! fis)-. e( d)-. cis2 |
4325 Il ne nous reste plus qu'à remplacer
4326 @code{\include "definitions.ily"} par
4327 @code{\include "publication-web.ily"} dans notre fichier de
4330 Il est possible, bien sûr, de rendre cela encore plus pratique. Nous
4331 pourrions créer un fichier @file{definitions.ily} qui ne contiendrait
4332 que les définitions de @code{mpdolce} et de @code{inst}, un
4333 fichier @file{publication-web.ily} qui ne contiendrait que la section
4334 @code{layout} décrite ci-dessus et un fichier @file{universite.ily} qui
4335 ne contiendrait que les retouches pour produire le résultat que mon
4336 professeur préfère. Le début du fichier @file{musique.ly} ressemblerait
4340 \include "definitions.ily"
4342 %%% Décommentez seulement une de ces deux lignes !
4343 \include "publication-web.ily"
4344 %\include "universite.ily"
4347 Cette approche peut être utile même si vous ne produisez qu'un seul
4348 jeu de partitions. J'utilise personnellement une demi-douzaine de
4349 fichiers de @qq{feuille de style} pour mes projets. Je commence
4350 chaque fichier de musique par @code{\include "../global.ily"} qui
4355 \version @w{"@version{}"}
4357 #(ly:set-option 'point-and-click #f)
4359 \include "../init/init-defs.ly"
4360 \include "../init/init-mise-en-page.ly"
4361 \include "../init/init-en-tetes.ly"
4362 \include "../init/init-papier.ly"
4366 @node Autres sources de documentation
4367 @subsection Autres sources de documentation
4368 @translationof Other sources of information
4370 La référence des propriétés internes contient beaucoup d'informations
4371 sur LilyPond. Cependant vous pouvez en découvrir encore plus en
4372 consultant les fichiers internes de LilyPond. Pour cela, il vous faut
4373 d'abord connaître le répertoire @emph{ad hoc} sur votre système.
4374 L'emplacement du répertoire dépend (a) du fait que, pour vous procurer
4375 LilyPond, vous avez téléchargé un paquet précompilé sur lilypond.org ou
4376 vous l'avez installé grâce à votre gestionnaire de paquetages
4377 (c'est-à-dire distribué avec GNU/Linux ou installé avec fink ou cygwin), ou
4378 encore vous l'avez compilé directement à partir des sources ; et
4379 (b) du système d'exploitation sur lequel il tourne.
4382 @subsubsubheading Téléchargé depuis lilypond.org
4388 @file{@var{INSTALLDIR}/lilypond/usr/@/share/lilypond/current/}
4394 @file{@var{INSTALLDIR}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
4397 Pour accéder à ce dossier, deux possibilités : soit, dans un
4398 Terminal, taper @code{cd} suivi du chemin complet ci-dessus ; soit
4399 Control-cliquer (ou clic droit) sur l'application LilyPond
4400 et sélectionner @qq{Afficher le contenu du paquet}.
4404 Dans l'Explorateur Windows, voir
4406 @file{@var{INSTALLDIR}/LilyPond/usr/@/share/lilypond/current/}
4412 @subsubsubheading Installé par un gestionnaire de paquetages ou compilé d'après les sources
4414 @code{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, où
4415 @var{PREFIX} est déterminé par votre gestionnaire de paquetages ou par
4416 le script @code{configure}, et @var{X.Y.Z} représente le numéro de
4417 version de LilyPond.
4421 Dans ce répertoire, deux sous-répertoires sont particulièrement
4425 @item @code{ly/} -- contient les fichiers en format LilyPond
4426 @item @code{scm/} -- contient les fichiers en format Scheme
4429 Commençons par examiner quelques fichiers contenus dans @file{ly/}.
4430 Nous ouvrons @file{ly/property-init.ly} dans un éditeur de texte --
4431 celui que vous avez l'habitude d'utiliser pour les fichiers @file{.ly}
4432 fera très bien l'affaire. Ce fichier contient les définitions de toutes
4433 les commandes standard prédéfinies de LilyPond, comme @code{\stemUp} et
4434 @code{\slurDotted}. Vous pouvez constater que ce n'est rien d'autre
4435 que des définitions de variables composées d'un ou plusieurs groupes
4436 de commandes @code{\override}. Par exemple, @code{\tieDotted}
4441 \override Tie.dash-period = #0.75
4442 \override Tie.dash-fraction = #0.1
4446 Si vous n'aimez pas les valeurs par défaut, les commandes prédéfinies
4447 peuvent être facilement redéfinies, comme n'importe quelle autre
4448 variable, en tête de votre fichier d'entrée.
4450 Voici les fichiers les plus utiles dans le répertoire @file{ly/} :
4452 @multitable @columnfractions .4 .6
4453 @headitem Nom de fichier
4455 @item @file{ly/engraver-init.ly}
4456 @tab Définition des contextes de graveurs
4457 @item @file{ly/paper-defaults-init.ly}
4458 @tab Réglages papier par défaut
4459 @item @file{ly/performer-init.ly}
4460 @tab Définition des contextes d'interprétation
4461 @item @file{ly/property-init.ly}
4462 @tab Définition de toutes les commandes prédéfinies courantes
4463 @item @file{ly/spanner-init.ly}
4464 @tab Définition des commandes prédéfinies pour les bandeaux
4467 Les autres réglages (comme les définitions de commandes @emph{markup})
4468 sont conservés comme fichiers @file{.scm} (Scheme). Le langage de
4469 programmation Scheme offre une interface programmable dans le
4470 processus interne de LilyPond. De plus amples explications sur ces
4471 fichiers dépasseraient le cadre de ce manuel dans la mesure où elles
4472 requièrent la connaissance du langage Scheme. Les utilisateurs qui
4473 souhaiteraient comprendre le fonctionnement de ces fichiers de
4474 configuration doivent être avertis que des connaissances techniques
4475 substantielles et beaucoup de temps sont nécessaires (voir le
4476 @rextend{Tutoriel Scheme}).
4478 Si c'est votre cas, les fichiers Scheme les plus utiles à connaître
4481 @multitable @columnfractions .4 .6
4482 @headitem Nom de fichier
4484 @item @file{scm/auto-beam.scm}
4485 @tab Règles par défaut des ligatures subalternes
4486 @item @file{scm/define-grobs.scm}
4487 @tab Réglages par défaut des propriétés de @emph{grobs}
4488 @item @file{scm/define-markup-commands.scm}
4489 @tab Spécification de toutes les commandes de @emph{markup}
4490 @item @file{scm/midi.scm}
4491 @tab Réglages par défaut pour les sorties MIDI
4492 @item @file{scm/output-lib.scm}
4493 @tab Réglages affectant l'apparence des frets, couleurs, altérations,
4494 barres de mesure, etc.
4495 @item @file{scm/parser-clef.scm}
4496 @tab Définition des clefs prises en charge
4497 @item @file{scm/script.scm}
4498 @tab Réglages par défaut des articulations
4502 @node Retouches avancées avec Scheme
4503 @subsection Retouches avancées avec Scheme
4504 @translationof Advanced tweaks with Scheme
4506 Nous avons vu à quel point le résultat obtenu avec LilyPond peut
4507 être largement personnalisé à l'aide de commandes comme
4508 @code{\override} et @code{\tweak}. Et pourtant l'utilisation de
4509 Scheme ouvre des possibilités encore plus grandes.
4510 Le code écrit dans le langage de programmation Scheme peut être
4511 intégré directement dans le processus interne de LilyPond. Bien sûr,
4512 il faut pour cela connaître un minimum de programmation en langage
4513 Scheme. Pour des explications complètes là-dessus, consultez le
4514 @rextend{Tutoriel Scheme}.
4516 En guise d'illustration -- et ce n'est qu'une possibilité parmi tant
4517 d'autres -- nous allons attribuer à une propriété non pas une valeur
4518 préétablie mais une procédure Scheme qui sera lancée à chaque
4519 utilisation de la propriété par LilyPond. De cette façon, nous obtenons
4520 un réglage dynamique de la propriété par le simple fait d'invoquer la
4521 procédure. Dans cet exemple, nous colorons les têtes de notes en
4522 fonction de leur position sur la portée.
4524 @cindex x11-color, exemple d'utilisation de la fonction
4525 @cindex NoteHead, exemple de dérogation
4526 @cindex color, détermination de la propriété par une procédure Scheme
4528 @lilypond[quote,verbatim,ragged-right]
4529 #(define (color-notehead grob)
4530 "Color the notehead according to its position on the staff."
4531 (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
4534 ;; Return rainbow colors
4535 ((1) (x11-color 'red )) ; for C
4536 ((2) (x11-color 'orange )) ; for D
4537 ((3) (x11-color 'yellow )) ; for E
4538 ((4) (x11-color 'green )) ; for F
4539 ((5) (x11-color 'blue )) ; for G
4540 ((6) (x11-color 'purple )) ; for A
4541 ((0) (x11-color 'violet )) ; for B
4545 % Arrange to obtain color from color-notehead procedure
4546 \override NoteHead.color = #color-notehead
4547 a2 b | c2 d | e2 f | g2 a |
4551 Vous trouverez dans @rextend{Fonctions de rappel} d'autres exemples
4552 d'utilisation de ces interfaces programmables.