1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
4 Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
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, Jean-Charles Malahieude
14 @c Translation checkers: Gilles Thibault
17 @node Modification des réglages prédéfinis
18 @chapter Modification des réglages prédéfinis
19 @translationof Changing defaults
21 LilyPond est conçu pour engendrer, par défaut, des partitions de la
22 plus haute qualité. Cependant, on peut parfois avoir à modifier cette
23 mise en forme par défaut. Celle-ci est réglée par tout un ensemble de
24 @qq{leviers et manettes} plus connus sous le terme de @qq{propriétés},
25 dont ce chapitre ne cherche pas à faire l'inventaire exhaustif -- vous
26 en trouverez un @rlearningnamed{Retouche de partition,apperçu} dans le
27 manuel d'initiation. Le propos est plutôt ici de mettre en évidence les
28 différents groupes auxquels s'apparentent ces contrôles, et d'expliquer
29 comment trouver le bon levier pour obtenir tel ou tel effet en
32 @cindex Référence des propriétés internes
34 Les moyens de contrôle des différents réglages sont décrits dans un
35 document séparé, @rinternalsnamed{Top,la référence des propriétés
36 internes}. Ce guide répertorie toutes les variables, fonctions et
37 autres options que LilyPond met à votre disposition. Il est consultable
38 @c leave the @uref as one long line.
39 @uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,en@tie{}ligne},
40 au format HTML, mais est également inclus dans la documentation
41 fournie avec le logiciel.
43 En sous-main, LilyPond se sert du langage Scheme (un dérivé du LISP)
44 comme infrastructure. Modifier les choix de mise en page revient à
45 pénétrer dans les entrailles du programme, et de ce fait requiert
46 l'emploi du Scheme. Les fragments de Scheme, dans un fichier
47 @file{.ly}, sont introduits par le caractère @emph{hash}, (@code{#},
48 improprement surnommé @qq{dièse}).
49 @footnote{Le @rextend{Tutoriel Scheme} fournit quelques notions de
50 base pour saisir des nombres, des listes, des chaînes de caractères ou
51 des symboles, en Scheme.}
53 Il est quatre domaines dans lesquels on peut modifier les réglages par
58 La notation automatique, ce qui revient à modifier la manière dont les
59 éléments de notation sont automatiquement créés -- par exemple, les
63 L'apparence, qui se rapporte aux objets pris individuellement -- ainsi
64 de la direction des hampes, du placement des indications textuelles.
67 Les contextes, qui recouvrent la manière dont les évènements musicaux
68 sont représentés sous forme de notation -- par exemple, le fait
69 d'attribuer un chiffre de mesure distinct à chaque portée.
72 La mise en page, autrement dit les marges, l'espacement, la taille du
73 papier@tie{}; tous ces facteurs font l'objet des chapitres
74 @ref{Généralités en matière d'entrée et sortie} et
75 @ref{Gestion de l'espace}.
80 * Contextes d'interprétation::
81 * En quoi consiste la référence des propriétés internes::
82 * Modification de propriétés::
83 * Propriétés et contextes utiles::
84 * Retouches avancées::
85 * Utilisation de fonctions musicales::
88 @node Contextes d'interprétation
89 @section Contextes d'interprétation
90 @translationof Interpretation contexts
92 Cette section traite des contextes.
95 * Tout savoir sur les contextes::
96 * Création d'un contexte::
97 * Conservation d'un contexte::
98 * Modification des greffons de contexte::
99 * Modification des réglages par défaut d'un contexte::
100 * Définition de nouveaux contextes::
101 * Alignement des contextes::
106 Manuel d'initiation :
107 @rlearning{Contextes et graveurs}.
109 Fichiers d'initialisation :
110 @file{ly/engraver-init.ly},
111 @file{ly/performer-init.ly}.
114 @rlsr{Contexts and engravers}.
116 Référence des propriétés internes :
117 @rinternals{Contexts},
118 @rinternals{Engravers and Performers}.
121 @node Tout savoir sur les contextes
122 @subsection Tout savoir sur les contextes
123 @translationof Contexts explained
126 @c TODO Rethink and rewrite
128 >> > > - list of contexts: my *danger unmaintainable*
129 >> > > alarm just went off. I'm
131 I knew it would... And leaving out some of them is perfectly fine
133 I do think that a list like this, with the main contexts and a
135 description of what they do (perhaps also with a note about what
137 behavior is associated with each of them, but this may be
139 should be there, and then we could simply list the remaining ones
141 further explanation and with links to the IR.
144 @c TODO Improve layout, order and consistency of wording -td
146 @c TODO Add introduction which explains contexts in generality -td
148 @c TODO Describe propagation of property values -td
152 * Score -- le père de tous les contextes::
153 * Contextes de haut niveau -- les systèmes::
154 * Contextes de niveau intermédiaire -- les portées::
155 * Contextes de bas niveau -- les voix::
158 @node Score -- le père de tous les contextes
159 @unnumberedsubsubsec Score -- le père de tous les contextes
160 @translationof Score - the master of all contexts
165 @node Contextes de haut niveau -- les systèmes
166 @unnumberedsubsubsec Contextes de haut niveau -- les systèmes
167 @translationof Top-level contexts - staff containers
172 @node Contextes de niveau intermédiaire -- les portées
173 @unnumberedsubsubsec Contextes de niveau intermédiaire -- les portées
174 @translationof Intermediate-level contexts - staves
179 @node Contextes de bas niveau -- les voix
180 @unnumberedsubsubsec Contextes de bas niveau -- les voix
181 @translationof Bottom-level contexts - voices
186 @node Création d'un contexte
187 @subsection Création d'un contexte
188 @translationof Creating contexts
193 @node Conservation d'un contexte
194 @subsection Conservation d'un contexte
195 @translationof Keeping contexts alive
200 @node Modification des greffons de contexte
201 @subsection Modification des greffons de contexte
202 @translationof Modifying context plug-ins
204 Les contextes, tels que @code{Score} ou @code{Staff}, ne contiennent
205 pas que des propriétés@tie{}; ils mettent également en œuvre certains
206 sous-programmes (@emph{plug-ins} pour employer le terme consacré) nommés
207 @qq{graveurs} (@emph{engravers} pour reprendre le terme anglais).
208 Ces sous-programmes sont chargés de créer les différents éléments de
209 notation@tie{}: on trouve ainsi dans le contexte @code{Voice} un graveur
210 @code{Note_heads_engraver}, chargé des têtes de notes et, dans le
211 contexte @code{Staff}, un graveur @code{Key_signature_engraver}, chargé
214 Vous trouverez une description exhaustive de chaque graveur dans
216 @rinternals{Engravers and Performers}.
219 Référence des propriétés internes @expansion{} Translation @expansion{} Engravers.
221 Chaque contexte mentionné dans
223 @rinternals{Contexts}
226 Référence des propriétés internes @expansion{} Translation @expansion{} Context.
228 répertorie les graveurs mis en œuvre.
231 On peut faire, au moyen de ces graveurs, sa propre @qq{cuisine}, en
232 modifiant les contextes à volonté.
234 Lorsque un contexte est créé, par la commande @code{\new} ou
235 @code{\context}, on peut y adjoindre un bloc @code{\with} (en anglais
236 @q{avec}), dans lequel il est possible d'ajouter (commande
237 @code{\consists}) ou d'enlever (commande @code{\remove}) des
243 \new @var{contexte} \with @{
256 Ici les points de suspension @dots{} devront être remplacés par les noms
257 des graveurs désirés. Dans l'exemple suivant, on enlève du contexte
258 @code{Staff}, la métrique (graveur @code{Time_signature_engraver})
259 et la clé (graveur @code{Clef_engraver}).
261 @lilypond[quote,relative=1,verbatim]
267 \remove "Time_signature_engraver"
268 \remove "Clef_engraver"
275 La clé et le chiffre de mesure ont disparu de la deuxième portée. C'est
276 une méthode quelque peu radicale, puisqu'elle affectera toute la portée
277 jusqu'à la fin de la partition. L'espacement s'en trouve également
278 affecté, ce qui peut être ou non l'effet recherché. Une méthode plus
279 sophistiquée aurait été de rendre ces objets transparents (voir
280 @rlearning{Visibilité et couleur des objets}).
282 Dans l'exemple suivant, voici une mise en pratique plus utile. En temps
283 normal, les barres de mesure et la métrique sont synchronisées
284 verticalement dans toute la partition. Les graveurs qui en sont
285 responsables se nomment @code{Timing_translator} et
286 @code{Default_bar_line_engraver}. En les enlevant du contexte
287 @code{Score} pour les attribuer au contexte @code{Staff}, chaque portée
288 peut désormais avoir sa propre métrique.
290 @cindex polymétrique, partition
291 @cindex chiffres de mesure multiples
293 @lilypond[quote,verbatim]
297 \consists "Timing_translator"
298 \consists "Default_bar_line_engraver"
304 \consists "Timing_translator"
305 \consists "Default_bar_line_engraver"
314 \remove "Timing_translator"
315 \remove "Default_bar_line_engraver"
321 En règle générale, l'ordre dans lequel les graveurs sont mentionnés
322 importe peu. Il se peut toutefois qu'un graveur écrive une propriété
323 qui sera interprétée par un autre, ou qu'un graveur crée un objet
324 graphique qui sera traité par un autre@tie{}; l'ordre d'apparition de
325 ces graveurs prendra lors tout son importance.
327 Pour information, les ordonnancements suivants sont importants@tie{}:
328 le @code{Bar_engraver} devrait toujours être le premier@tie{}; le
329 @code{New_fingering_engraver} doit toujours précéder le
330 @code{Script_column_engraver}. Nous vous conseillons, pour les autres,
331 de vérifier les évenntuelles dépendances.
333 @c deprecated node: delete. --fv
335 @n ode Retouches de mise en forme au sein des contextes
336 @s ubsection Retouches de mise en forme au sein des contextes
337 @t ranslationof Layout tunings within contexts
339 Chaque contexte est chargé de créer plusieurs types d'objets graphiques.
340 Il contient également les réglages nécessaires pour chacun de ces
341 objets. Si l'on modifie ces réglages, les objets n'auront plus la même
344 La syntaxe employée pour ce faire est
347 \override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur}
350 Ici @var{objet} est un objet graphique, tel que @code{Stem} (les hampes)
351 ou @code{NoteHead} (les têtes de note)@tie{}; @var{propriété} est une
352 variable (désignée par un symbole, ce qui explique l'apostrophe)
353 employée par le système de mise en page. La sous-section
354 @ref{Élaboration d'une retouche} vous aidera à savoir quoi mettre à la
355 place de @var{objet}, @var{propriété} et @var{valeur}@tie{}; notre
356 propos n'est ici que d'examiner l'emploi de cette commande.
358 La commande suivante@tie{}:
361 \override Staff.Stem #'thickness = #4.0
365 rend les hampes plus épaisses (la valeur par défaut est 1.3, ce qui
366 signifie qu'elles sont 1,3 fois plus épaisses que les lignes de la
367 portée). Dans la mesure où nous avons indiqué @code{Staff} comme
368 contexte, ce réglage ne s'appliquera qu'à la portée courante@tie{}; les
369 autres portées demeureront intactes.
372 @lilypond[quote,verbatim,relative=2,fragment]
374 \override Staff.Stem #'thickness = #4.0
380 La commande @code{\override} modifie donc la définition de l'objet
381 @code{Stem} dans le contexte @code{Staff}@tie{}; toutes les hampes qui
382 suivent seront affectées. Tout comme avec la commande @code{\set},
383 l'argument @var{contexte} peut être omis, auquel cas le contexte par
384 défaut (ici, @code{Voice}) sera employé. La commande @code{\once}
385 permet de n'appliquer la modification qu'une seule fois.
387 @lilypond[quote,fragment,verbatim,relative=2]
389 \once \override Stem #'thickness = #4.0
394 La commande @code{\override} doit être entrée @emph{avant} l'objet
395 concerné. Ainsi, lorsque l'on veut altérer un objet qui se prolonge,
396 tel qu'une liaison, une ligature ou tout autre objet dit @emph{Spanner},
397 la commande @code{\override} doit être saisie avant que l'objet soit
400 @lilypond[quote,fragment,verbatim,relative=2]
401 \override Slur #'thickness = #3.0
403 \override Beam #'beam-thickness = #0.6
408 Dans cet exemple, la liaison (@emph{Slur}) est épaissie, mais non la
409 ligature (@emph{Beam}). En effet, le code qui lui est relatif n'a pas
410 été inséré avant le début de la ligature, et demeure donc sans effet.
412 De même que la commande @code{\unset}, la commande @code{\revert} défait
413 ce qui a été fait par une commande @code{\override}. Tout comme avec
414 @code{\unset}, elle ne peut annuler que les réglages effectués dans le
415 même contexte. Ainsi dans l'exemple suivant, la commande @code{\revert}
419 \override Voice.Stem #'thickness = #4.0
420 \revert Staff.Stem #'thickness
423 Il existe, à l'intérieur même de certaines propriétés, des options que
424 l'on nomme @q{sous-propriétés}. La syntaxe est alors
426 @c leave this as a long long
428 \override @var{contexte}.@var{objet} #'@var{propriété} #'@var{sous-propriété} = #@var{valeur}
432 Ainsi, par exemple@tie{}:
435 \override Stem #'(details beamed-lengths) = #'(4 4 3)
440 Référence des propriétés internes :
441 @rinternals{OverrideProperty},
442 @rinternals{RevertProperty},
443 @rinternals{PropertySet},
444 @rinternals{Backend},
445 @rinternals{All layout objects}.
450 La sous-couche Scheme ne vérifie pas la saisie des propriétés de façon
451 très stricte. Des références cycliques dans des valeurs Scheme peuvent
452 de ce fait interrompre, ou faire planter le programme -- ou bien les
456 @node Modification des réglages par défaut d'un contexte
457 @subsection Modification des réglages par défaut d'un contexte
458 @translationof Changing context default settings
460 Les réglages montrés dans les sous-sections
461 @ref{La commande de fixation (set)},
462 @ref{Modification des greffons de contexte}
463 @c et @c r ef{Retouches de mise en forme au sein des contextes}
464 peuvent également être saisis indépendamment de la musique dans le bloc
465 @code{\layout}, au moyen de la commande @code{\context}@tie{}:
474 \override Stem #'thickness = #4.0
475 \remove "Time_signature_engraver"
480 Le raccourci @code{\Staff} invoque les définitions inhérentes au
481 contexte @code{Staff}, de façon à ce qu'elles puissent être modifiées.
483 Les lignes suivantes affecteront toutes les portées (tous les contextes
484 @code{Staff}) dans la partition.
487 \override Stem #'thickness = #4.0
488 \remove "Time_signature_engraver"
492 Les autres contextes peuvent être modifiés de même manière.
494 La commande @code{\set}, dans le bloc @code{\layout}, est
495 facultative@tie{}; aussi les lignes suivantes produiront-elles le même
508 Il est impossible de stocker des modifications de contexte dans un
511 Le raccourci @code{\Staff \RemoveEmptyStaves} détruit tous les réglages
512 du contexte @code{\Staff}. Pour modifier des propriétés de portées
513 gouvernées par @code{\Staff \RemoveEmptyStaves}, il faut le faire
514 impérativement @strong{après} avoir invoqué @code{\Staff
515 \RemoveEmptyStaves}@tie{}:
520 \Staff \RemoveEmptyStaves
522 \override Stem #'thickness = #4.0
528 @node Définition de nouveaux contextes
529 @subsection Définition de nouveaux contextes
530 @translationof Defining new contexts
532 Les contextes tels que @code{Staff} ou @code{Voice} sont faits
533 de briques de constructions empilées. En combinant divers graveurs,
534 il est possible de créer de nouveaux types de contextes.
536 Dans l'exemple suivant, on construit, de zéro, un nouveau contexte très
537 semblable à @code{Voice}, mais qui n'imprime que des têtes de notes en
538 forme de barres obliques au centre de la portée. Un tel contexte, par
539 exemple, peut servir à indiquer un passage improvisé dans un morceau de
543 @lilypond[quote,ragged-right]
546 \type "Engraver_group"
547 \consists "Note_heads_engraver"
548 \consists "Rhythmic_column_engraver"
549 \consists "Text_engraver"
550 \consists Pitch_squash_engraver
551 squashedPosition = #0
552 \override NoteHead #'style = #'slash
553 \override Stem #'transparent = ##t
557 \accepts "ImproVoice"
561 a4 d8 bes8 \new ImproVoice { c4^"ad lib" c
562 c4 c^"dévêtez-vous" c_"tout en jouant :)" c }
568 On a rassemblé les réglages dans un bloc @code{\context}, lui-même dans
569 le bloc @code{\layout}@tie{}:
579 En lieu et place des points (@dots{}), voici les éléments à
583 @item Tout d'abord, il convient de donner un nom @code{\name} à notre
584 nouveau contexte@tie{}:
590 @item Comme il est très semblable à @code{Voice}, nous souhaitons que
591 toutes les commandes associées au @code{Voice} déjà existant, restent
592 valables. D'où nécessité de la commande @code{\alias}, qui va
593 l'associer au contexte @code{Voice}@tie{}:
599 @item Ce contexte doit pouvoir imprimer des notes, et des indications
600 textuelles@tie{}; on ajoute donc les graveurs appropriés.
603 \consists Note_heads_engraver
604 \consists Text_engraver
607 @item Cependant, on veut que les notes s'affichent toutes au centre de
611 \consists Pitch_squash_engraver
612 squashedPosition = #0
616 Le graveur @rinternals{Pitch_squash_engraver} intercepte les notes
617 créées par @rinternals{Note_heads_engraver}, et les @qq{écrase} pour
618 qu'elles aient toutes la même position verticale, définie par
619 @code{squashedPosition}@tie{}: ici il s'agit de la valeur@tie{}@code{0},
620 c'est-à-dire la ligne du milieu.
622 @item On veut que les notes aient la forme d'une barre oblique, sans
626 \override NoteHead #'style = #'slash
627 \override Stem #'transparent = ##t
630 @item Afin que tous ces graveurs puissent travailler de concert, on leur
631 adjoint un sous-programme spécial, introduit par la commande
632 @code{\type}@tie{}: il s'agit de @code{Engraver_group},
635 \type "Engraver_group"
640 Récapitulons -- on se retrouve avec le bloc suivant@tie{}:
645 \type "Engraver_group"
646 \consists "Note_heads_engraver"
647 \consists "Text_engraver"
648 \consists Pitch_squash_engraver
649 squashedPosition = #0
650 \override NoteHead #'style = #'slash
651 \override Stem #'transparent = ##t
658 Ce n'est pas tout. En effet, on veut intégrer le nouveau contexte
659 @code{ImproVoice} dans la hiérarchie des contextes. Tout comme le
660 contexte @code{Voice}, sa place est au sein du contexte @code{Staff}.
661 Nous allons donc modifier le contexte @code{Staff},
662 au moyen de la commande @code{\accepts}@tie{}:
673 Le contraire de @code{\accepts} est @code{\denies},
674 qui est parfois utile lorsque l'on recycle des définitions de
675 contextes déjà existantes.
677 Enfin, tout cela doit prendre place dans le bloc @code{\layout},
688 \accepts "ImproVoice"
693 On peut alors saisir la musique, comme dans l'exemple plus haut@tie{}:
701 c c_"tout en jouant :)"
708 @node Alignement des contextes
709 @subsection Alignement des contextes
710 @translationof Aligning contexts
713 Il est possible d'aligner verticalement chaque nouveau contexte,
714 en-dessous ou au-dessus, par exemple dans le cas de musique vocale
715 (@rlearning{Ensemble vocal}) ou d'@emph{ossias}.
719 @findex alignAboveContext
720 @findex alignBelowContext
722 @lilypond[quote,ragged-right]
725 \relative c' \new Staff = "main" {
728 \new Staff \with { alignAboveContext = #"main" } \ossia
736 @node En quoi consiste la référence des propriétés internes
737 @section En quoi consiste la référence des propriétés internes
738 @translationof Explaining the Internals Reference
742 * Navigation dans les références du programme::
743 * Interfaces de rendu::
744 * Détermination de la propriété d'un objet graphique (grob)::
745 * Conventions de nommage::
748 @node Navigation dans les références du programme
749 @subsection Navigation dans les références du programme
750 @translationof Navigating the program reference
752 Comment, par exemple, déplacer le doigté dans le fragment suivant@tie{}?
754 @lilypond[quote,relative=2,verbatim]
760 Sur la page de la documentation relative aux doigtés, c'est-à-dire
761 @ref{Doigtés}, se trouve l'indication suivante@tie{}:
765 Référence des propriétés internes :
766 @rinternals{Fingering}.
769 @c outdated info; probably will delete.
771 This fragment points to two parts of the program reference: a page
772 on @code{FingerEvent} and one on @code{Fingering}.
774 The page on @code{FingerEvent} describes the properties of the music
775 expression for the input @code{-2}. The page contains many links
776 forward. For example, it says
779 Accepted by: @rinternals{Fingering_engraver},
783 That link brings us to the documentation for the Engraver, the
787 This engraver creates the following layout objects: @rinternals{Fingering}.
790 In other words, once the @code{FingerEvent}s are interpreted, the
791 @code{Fingering_engraver} plug-in will process them.
795 @c I can't figure out what this is supposed to mean. -gp
797 The @code{Fingering_engraver} is also listed to create
798 @rinternals{Fingering} objects,
800 @c old info? it doesn't make any sense to me with our current docs.
802 second bit of information listed under @b{See also} in the Notation
807 Ladite référence est disponible au format HTML, ce qui rend la
808 navigation bien plus aisée. Il est possible soit de la lire en ligne,
809 soit de la télécharger dans ce format. La démarche présentée ici sera
810 plus difficile à comprendre dans un document au format PDF.
813 Suivons le lien @rinternals{Fingering}. En haut de la nouvelle page,
817 Fingering objects are created by: @rinternals{Fingering_engraver} and
818 @rinternals{New_fingering_engraver}.
821 En d'autres termes, @emph{Les indications de doigtés}
822 (@code{Fingering} en anglais) @emph{sont créées par les graveurs
823 @rinternals{Fingering_engraver} et @rinternals{New_fingering_engraver}.}
825 En suivant derechef les liens propres à la référence du programme, on
826 suit en fait le cheminement qui aboutit à la création de la
831 @item @rinternals{Fingering}:
832 @rinternals{Fingering} objects are created by:
833 @rinternals{Fingering_engraver}
835 @item @rinternals{Fingering_engraver}:
836 Music types accepted: @rinternals{fingering-event}
838 @item @rinternals{fingering-event}:
839 Music event type @code{fingering-event} is in Music expressions named
840 @rinternals{FingeringEvent}
843 Ce cheminement se produit, bien sûr, en sens inverse@tie{}: nous sommes
844 ici partis du résultat, et avons abouti aux évènements (en anglais
845 @emph{Events}) engendrés par le fichier d'entrée. L'inverse est
846 également possible@tie{}: on peut partir d'un évènement, et suivre le
847 cheminement de LilyPond qui aboutit à la création d'un ou plusieurs
850 La référence des propriétés internes peut également se parcourir comme
851 un document normal. On y trouve des chapitres tels que
853 @rinternals{Music definitions},
856 @code{Music definitions}
858 @rinternals{Translation}, ou encore @rinternals{Backend}. Chaque
859 chapitre recense toutes les définitions employées, et les propriétés
860 sujettes à ajustements.
862 @c -- what about adding a link to the glossary here ? -vv
864 La Référence du programme n'est pas traduite en français -- notamment du
865 fait qu'elle est en évolution constante, tout comme LilyPond. En
866 revanche, les termes musicaux font l'objet d'un
867 @commentfairelelien{glossaire} fort utile pour les utilisateurs francophones.
871 @node Interfaces de rendu
872 @subsection Interfaces de rendu
873 @translationof Layout interfaces
875 @cindex interfaces de rendu
876 @cindex rendu, interfaces de
877 @cindex objets graphiques
879 Tous les éléments de notation sont considérés comme des objets
880 graphiques (en anglais @emph{Graphical Object}, d'où le diminutif
881 @emph{Grob}). Chaque objet est doté d'un certain nombre de propriétés
882 (l'épaisseur du trait, l'orientation, etc.), et lié à d'autres objets.
883 Le fonctionnement de ces objets est décrit en détail dans
884 @rinternals{grob-interface}.
886 Prenons l'exemple des doigtés (en anglais @emph{Fingering}). La page
887 @code{Fingering} de la Référence des propriétés internes établit une
888 liste de définitions propres à ce type d'objet@tie{}:
891 @code{padding} (dimension, in staff space):
897 Ce qui signifie que les doigtés doivent être maintenus à une certaine
898 distance (@emph{padding}) des notes@tie{}: 0,5 unités @emph{staff-space}
901 Chaque objet peut avoir plusieurs attributs, en tant qu'élément
902 typographique ou musical. Ainsi, un doigté (objet @emph{Fingering})
903 possède les attributs suivants@tie{}:
908 Sa taille ne dépend pas de l'espacement horizontal, contrairement aux
909 liaisons ou ligatures.
912 C'est du texte -- un texte vraiment court, certes.
915 Ce texte est imprimé au moyen d'une fonte, contrairement aux liaisons ou
919 Sur l'axe horizontal, le centre de ce symbole doit être aligné avec le
923 Sur l'axe vertical, le symbole doit être proche de la note et de la
927 Sur l'axe vertical encore, il doit également s'ordonner avec les
928 éventuels autres symboles, ponctuations, ou éléments textuels.
931 Faire appliquer ces différents attributs est le rôle des
932 @emph{interfaces}, que l'on trouve en bas de la page
933 @rinternals{Fingering}.
936 This object supports the following interfaces:
937 @rinternals{item-interface},
938 @rinternals{self-alignment-interface},
939 @rinternals{side-position-interface}, @rinternals{text-interface},
940 @rinternals{text-script-interface}, @rinternals{font-interface},
941 @rinternals{finger-interface}, and @rinternals{grob-interface}.
948 Cet objet admet les interfaces suivantes@tie{}:
951 Suit la liste des interfaces en question, présentées comme autant de
952 liens, qui conduisent sur les pages dédiées à chacune d'entre elles.
953 Chaque interface est dotée d'un certain nombre de propriétés, dont
954 certaines peuvent être modifiées, et d'autres non (les @emph{Internal
955 properties}, ou propriétés internes).
957 Pour aller encore plus loin, plutôt que de simplement parler de l'objet
958 @code{Fingering}, ce qui ne nous avance pas à grand chose, on peut aller
959 explorer son âme même, dans les fichiers source de LilyPond (voir
960 @rlearning{Autres sources de documentation}), en l'occurence le fichier
961 @file{scm/define-grobs.scm}@tie{}:
966 (avoid-slur . around)
968 (staff-padding . 0.5)
969 (self-alignment-X . 0)
970 (self-alignment-Y . 0)
971 (script-priority . 100)
972 (stencil . ,ly:text-interface::print)
973 (direction . ,ly:script-interface::calc-direction)
974 (font-encoding . fetaText)
975 (font-size . -5) ; don't overlap when next to heads.
976 (meta . ((class . Item)
977 (interfaces . (finger-interface
979 text-script-interface
981 side-position-interface
982 self-alignment-interface
987 @dots{}où l'on découvre que l'objet @code{Fingering} n'est rien de plus
988 qu'un amas de variables et de réglages. La page de la Référence du
989 programme est en fait directement engendrée par cette définition.
992 @node Détermination de la propriété d'un objet graphique (grob)
993 @subsection Détermination de la propriété d'un objet graphique (grob)
994 @translationof Determining the grob property
997 Nous voulions changer la position du chiffre @b{2} dans le fragment
1000 @lilypond[quote,relative=2,verbatim]
1006 Dans la mesure où le @b{2} est placé, verticalement, à proximité de la
1007 note qui lui correspond, nous allons devoir trouver l'interface en
1008 charge de ce placement, qui se trouve être
1009 @code{side-position-interface}. Sur la page de cette interface, on peut
1013 @code{side-position-interface}
1015 Position a victim object (this one) next to other objects (the
1016 support). The property @code{direction} signifies where to put the
1017 victim object relative to the support (left or right, up or down?)
1023 @code{side-position-interface}
1025 Placer l'objet affecté à proximité d'autres objets. La propriété
1026 @code{direction} indique où placer l'objet (à droite ou à gauche,
1032 En-dessous de cette description se trouve décrite la variable
1033 @code{padding}@tie{}:
1038 (dimension, in staff space)
1040 Add this much extra space between objects that are next to each other.
1047 Ajouter tel espace supplémentaire entre des objets proches les uns des
1052 En augmentant la valeur de @code{padding}, on peut donc éloigner le
1053 doigté de la note. La commande suivante insère trois unités d'espace
1054 vide entre la note et le doigté@tie{}:
1057 \once \override Voice.Fingering #'padding = #3
1060 En ajoutant cette commande avant la création du doigté (de l'objet
1061 @code{Fingering}), donc avant @code{c2}, on obtient le résultat
1064 @lilypond[quote,relative=2,verbatim]
1065 \once \override Voice.Fingering #'padding = #3
1072 Dans le cas présent, le réglage intervient dans le contexte @code{Voice},
1073 ce qui pouvait également se déduire de la Référence du programme, où la
1074 page du graveur @rinternals{Fingering_engraver} indique@tie{}:
1077 Fingering_engraver is part of contexts: @dots{} @rinternals{Voice}
1083 Le graveur Fingering_engraver fait partie des contextes@tie{}: @dots{}
1088 @node Conventions de nommage
1089 @subsection Conventions de nommage
1090 @translationof Naming conventions
1095 @node Modification de propriétés
1096 @section Modification de propriétés
1097 @translationof Modifying properties
1099 @c TODO change the menu and subsection node names to use
1100 @c backslash once the new macro to handle the refs
1101 @c is available. Need to find and change all refs at
1102 @c the same time. -td
1105 * Vue d'ensemble de la modification des propriétés::
1106 * La commande de fixation (set)::
1107 * La commande de dérogation (override)::
1108 * La commande d'affinage (tweak)::
1110 * Modification de listes associatives::
1113 @node Vue d'ensemble de la modification des propriétés
1114 @subsection Vue d'ensemble de la modification des propriétés
1115 @translationof Overview of modifying properties
1120 @node La commande de fixation (set)
1121 @subsection La commande @code{@bs{}set}
1122 @translationof The set command
1126 @cindex modifier des propriétés
1128 Chaque contexte peut avoir plusieurs @emph{propriétés}, c'est-à-dire
1129 des variables qu'il inclut. Ces dernières peuvent être modifiées @qq{à
1130 la volée}, c'est-à-dire pendant que la compilation s'accomplit. C'est
1131 là le rôle de la commande @code{\set}.
1134 \set @var{contexte}.@var{propriété} = #@var{valeur}
1138 @lilypond[quote,verbatim,relative=2]
1140 \set Score.skipBars = ##t
1144 Cette commande permet de condenser les mesures vides de notes, en des
1145 silences multimesures. Il s'agit d'un objet Scheme, auquel on attribue
1146 la valeur booléenne @qq{vrai}, c'est-à-dire la lettre @code{#t} pour
1147 @qq{True} en anglais.
1149 Ce changement étant appliqué @qq{à la volée}, il n'affecte que le second
1152 Si l'argument @var{contexte} n'est pas spécifié, alors la propriété
1153 cherchera à s'appliquer dans le contexte le plus restreint où elle est
1154 employée@tie{}: le plus souvent @code{ChordNames}, @code{Voice}, ou
1155 @code{Lyrics}. Dans l'exemple suivant,
1157 @lilypond[quote,verbatim,relative=2]
1159 \set autoBeaming = ##f
1164 aucun argument @var{contexte} n'a été donné à la commande @code{\set}.
1165 De ce fait, les ligatures automatiques sont désactivées dans le contexte
1166 actuel, c'est-à-dire @rinternals{Voice}. Notez que le contexte le plus
1167 restreint n'est pas toujours le bon, et peut ne pas contenir la
1168 propriété qui vous intéresse@tie{}: ainsi, la propriété @code{skipBars},
1169 évoquée plus haut, ne relève pas du contexte @code{Voice}, et le code
1170 suivant ne fonctionnera pas.
1172 @lilypond[quote,verbatim,relative=2]
1178 Les contextes s'organisent de façon hiérarchique@tie{}: aussi, lorsqu'un
1179 contexte de niveau supérieur est spécifié (par exemple @code{Staff}), la
1180 propriété sera modifée dans tous les contextes inférieurs (tous les
1181 contextes @code{Voice}, par exemple) qu'il contient.
1185 La commande @code{\unset} permet d'annuler la définition d'une
1189 \unset @var{contexte}.@var{propriété}
1193 si et seulement si cette propriété à été définie dans ce @var{contexte}
1194 précis@tie{}; ainsi,
1197 \set Staff.autoBeaming = ##f
1201 même s'il s'applique à tous les contextes @code{Voice} contenus dans le
1202 contexte @code{Staff}, ne peut être annulé au niveau @code{Voice}. Le
1203 code suivant sera sans effet.
1206 \unset Voice.autoBeaming
1210 En d'autres termes, la commande @code{\unset} doit impérativement être
1211 accompagnée du même contexte que la commande @code{\set} d'origine.
1212 Pour annuler l'effet, dans notre exemple, de
1213 @w{@code{Staff.autoBeaming@tie{}=@tie{}##f}}, il faut donc entrer@tie{}:
1216 \unset Staff.autoBeaming
1219 Si l'on se trouve dans le contexte le plus restreint, il n'est pas
1220 obligatoire, là encore, de spécifier le @var{contexte}. Ainsi, les deux
1221 lignes suivantes sont équivalentes.
1224 \set Voice.autoBeaming = ##t
1225 \set autoBeaming = ##t
1230 Pour modifier une propriété de façon à ce qu'elle ne s'applique qu'une
1231 seule fois, il convient d'employer la commande @code{\once}@tie{}:
1233 @lilypond[quote,verbatim,relative=2]
1235 \once \set fontSize = #4.7
1240 Ici le changement de taille est annulé aussitôt après la note concernée.
1242 La référence du programme contient une description exhaustive de toutes
1243 les propriétés contexte par contexte@tie{}: voir
1245 @rinternals{Tunable context properties}.
1248 Translation @expansion{} Tunable context properties.
1252 @node La commande de dérogation (override)
1253 @subsection La commande @code{@bs{}override}
1254 @translationof The override command
1257 La commande @code{\override} permet de modifier la mise en page
1258 en détail. Examinons son utilisation concrètementet dans les détails.
1259 La syntaxe de cette commande ressemble généralement à@tie{}:
1262 \override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur}
1265 La propriété @var{propriété} de l'objet @var{objet}, appartenant au
1266 contexte @var{contexte}, se voit ainsi attribuer la valeur @var{valeur}.
1269 @c deprecated node. Delete. --fv
1270 @c @n ode Élaboration d'une retouche
1271 @c @s ubsection Élaboration d'une retouche
1272 @c @t ranslationof Constructing a tweak
1274 Les commandes permettant de modifier l'apparence de la partition
1275 ressemblent en général à
1278 \override Voice.Stem #'thickness = #3.0
1282 Pour élaborer un réglage de ce type, on a besoin de connaître
1286 @item le contexte@tie{}: ici @code{Voice} (la voix).
1287 @item l'objet à affecter@tie{}: ici @code{Stem} (les hampes).
1288 @item la propriété à modifier@tie{}: ici @code{thickness} (l'épaisseur
1290 @item la valeur désirée@tie{}: ici @code{3.0} (par défaut, elle est de
1294 Certaines @q{sous-propriétés} sont parfois contenues dans une propriété.
1295 La commande devient alors@tie{}:
1298 \override Stem #'(details beamed-lengths) = #'(4 4 3)
1301 @cindex documentation exhaustive
1302 @cindex trouver des objets graphiques
1303 @cindex objets graphiques, description
1307 Pour bien des propriétés, quel que soit le type de valeur requise,
1308 attribuer la valeur @q{faux} (@code{##f} en Scheme) reviendra à
1309 désactiver complètement l'action de la propriété qui se trouve ainsi
1310 purement ignorée par LilyPond. Cela peut s'avérer fort utile pour des
1311 propriétés causant des désagréments.
1316 @node La commande d'affinage (tweak)
1317 @subsection La commande @code{@bs{}tweak}
1318 @translationof The tweak command
1323 Dans certains cas, on peut passer par un raccourci pour arranger les
1324 objets graphiques. Lorsqu'un objet est directement engendré par un
1325 élément distinct du fichier source, on peut utiliser la commande
1328 Dans l'accord suivant, les notes sont modifiées une par une@tie{}:
1330 @lilypond[relative=2,verbatim,ragged-right]
1333 \tweak #'color #red d
1335 \tweak #'duration-log #1 a
1336 >4-\tweak #'padding #10 -.
1339 Comme on peut le voir, les propriétés sont ici modifiées directement
1340 en même temps que les objets sont saisis. Il n'est plus besoin de
1341 spécifier ni le nom de l'objet (@emph{grob}), ni le contexte dans lequel
1342 cela doit s'appliquer. Ce procédé ne marche que pour des objets
1343 directement liés aux évènements (@rinternals{Event}) du fichier source.
1347 @item Les têtes de notes au sein d'un accord, qui sont directement
1348 engendrées par les hauteurs indiquées
1350 @item Les signes d'articulation, engendrés par les indications de
1354 En revanche, les hampes ou les altérations sont engendrées par les têtes
1355 de notes, et non par des évènements dans le fichier source. De même
1356 pour les clés, qui ne sont pas directement engendrées par le fichier
1357 source, mais plutôt par le changement d'une propriété interne.
1359 En fait, très peu d'objets passent @emph{directement} du code source à
1360 la partition. Une note toute simple, par exemple @code{c4}, fait l'objet
1361 d'un traitement et n'est donc pas directement rendue@tie{}; c'est
1362 pourquoi le code suivant ne sera d'aucun effet@tie{}:
1365 \tweak #'color #red c4
1369 Voir pour plus de détails
1370 @rextendnamed{Displaying music expressions,Affichage d'expressions musicales}.
1373 @node set ou override
1374 @subsection @code{\set} ou @code{\override}
1375 @translationof set versus override
1378 Si les propriétés peuvent être modifiées de deux façons, par les
1379 commandes @code{\set} et @code{\override}, c'est qu'il y a deux types de
1382 Les contextes peuvent avoir des propriétés, dont les noms commencent par
1383 une minuscule puis comprennent une ou plusieurs majuscules (de style
1384 @code{totoTutu}). Elles ont surtout trait à la notation des éléments
1385 musicaux@tie{}: par exemple, @code{localKeySignature} permet de choisir
1386 s'il faut ou non imprimer une altération, ou @code{measurePosition}
1387 permet de choisir quand il faut imprimer une barre de mesure. Ces
1388 propriétés de contextes sont appelées à changer au long de
1389 l'interprétation de la partition@tie{}: @code{measurePosition} en est un
1390 exemple évident. Ces propriétés doivent être modifiées avec la commande
1393 Il existe un type particulier de propriété@tie{}@tie{}: les descriptions
1394 d'éléments. Ces propriétés, dont les noms commencent par une majuscule,
1395 puis comprennent une ou plusieurs majuscules (de style @code{TotoTata}),
1396 contiennent les réglages @qq{par défaut} pour les objets graphiques.
1397 Ces réglages sont sous forme de liste Scheme@tie{}; on peut les
1398 consulter dans le fichier @file{scm/define-grobs.scm}.
1400 Les descriptions d'éléments doivent être modifiées avec la commande
1403 @code{\override} est en fait un raccourci@tie{}:
1406 \override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur}
1410 est plus ou moins l'équivalent de
1412 @c leave this long line -gp
1414 \set @var{contexte}.@var{objet} #'@var{propriété} = #(cons (cons '@var{propriété} @var{valeur}) <valeur précédente de @var{contexte})
1417 La valeur de @code{context} (la liste Scheme, ou @emph{alist}) sert à
1418 initialiser les propriétés des objets un par un. Les objets eux-même
1419 ont leurs propriétés, dont les noms, dans la tradition du langage
1420 Scheme, comprennent un trait d'union (@code{toto-titi}). Ces propriétés
1421 internes changent constamment au cours de la mise en page@tie{}: en
1422 fait, la gravure d'une page n'est autre que le calcul de toutes ces
1423 propriétés, au moyen de fonctions de rappel.
1425 La propriété @code{fontSize} est une exception@tie{}: c'est un
1426 raccourci, qui équivaudrait à saisir @w{@code{\override @dots{}
1427 #'font-size}} pour tous les objets textuels. Dans la mesure où il
1428 s'agit d'une manipulation très courante, une propriété spéciale a été
1429 créée. Elle doit être modifiée avec la commande @code{\set}.
1432 @node Modification de listes associatives
1433 @subsection Modification de listes associatives
1434 @translationof Modifying alists
1439 @node Propriétés et contextes utiles
1440 @section Propriétés et contextes utiles
1441 @translationof Useful concepts and properties
1446 * Direction et positionnement::
1447 * Ordre des contextes de mise en forme::
1448 * Distances et unités de mesure::
1449 * Propriétés des symboles de la portée::
1450 * Extenseurs et prolongateurs::
1451 * Visibilité des objets::
1453 * Rotation des objets::
1456 @node Modes de saisie
1457 @subsection Modes de saisie
1458 @translationof Input modes
1463 @node Direction et positionnement
1464 @subsection Direction et positionnement
1465 @translationof Direction and placement
1470 @node Ordre des contextes de mise en forme
1471 @subsection Ordre des contextes de mise en forme
1472 @translationof Context layout order
1477 @node Distances et unités de mesure
1478 @subsection Distances et unités de mesure
1479 @translationof Distances and measurements
1484 @node Propriétés des symboles de la portée
1485 @subsection Propriétés des symboles de la portée
1486 @translationof Staff symbol properties
1491 @node Extenseurs et prolongateurs
1492 @subsection Extenseurs et prolongateurs
1493 @translationof Spanners
1498 @unnumberedsubsubsec Utilisation de @code{spanner-interface}
1499 @unnumberedsubsubsec Utilisation de @code{line-spanner-interface}
1500 @node Visibilité des objets
1501 @subsection Visibilité des objets
1502 @translationof Visibility of objects
1508 * Suppression des stencils::
1509 * Transparence des objets::
1510 * Blanchiment des objets::
1511 * Utilisation de break-visibility::
1512 * Considérations spécifiques::
1515 @node Suppression des stencils
1516 @unnumberedsubsubsec Suppression des stencils
1517 @translationof Removing the stencil
1522 @node Transparence des objets
1523 @unnumberedsubsubsec Transparence des objets
1524 @translationof Making objects transparent
1529 @node Blanchiment des objets
1530 @unnumberedsubsubsec Blanchiment des objets
1531 @translationof Painting objects white
1536 @node Utilisation de break-visibility
1537 @unnumberedsubsubsec Utilisation de break-visibility
1538 @translationof Using break-visibility
1543 @node Considérations spécifiques
1544 @unnumberedsubsubsec Considérations spécifiques
1545 @translationof Special considerations
1550 @node Styles de ligne
1551 @subsection Styles de ligne
1552 @translationof Line styles
1557 @node Rotation des objets
1558 @subsection Rotation des objets
1559 @translationof Rotating objects
1565 * Rotation des objets de mise en forme::
1566 * Rotation des étiquettes::
1569 @node Rotation des objets de mise en forme
1570 @unnumberedsubsubsec Rotation des objets de mise en forme
1571 @translationof Rotating layout objects
1576 @node Rotation des étiquettes
1577 @unnumberedsubsubsec Rotation des étiquettes
1578 @translationof Rotating markup
1583 @node Retouches avancées
1584 @section Retouches avancées
1585 @translationof Advanced tweaks
1591 * Alignement des objets::
1592 * Regroupement vertical d'objets graphiques::
1593 * Modification des stencils::
1594 * Modification de l'allure des éléments::
1597 @node Alignement des objets
1598 @subsection Alignement des objets
1599 @translationof Aligning objects
1605 * Détermination directe de @code{X-offset} et @code{Y-offset}::
1606 * Utilisation de @code{side-position-interface}::
1607 * Utilisation de @code{self-alignment-interface}::
1608 * Utilisation de @code{break-aligned-interface}::
1611 @node Détermination directe de @code{X-offset} et @code{Y-offset}
1612 @unnumberedsubsubsec Détermination directe de @code{X-offset} et @code{Y-offset}
1613 @translationof Setting @code{X-offset} and @code{Y-offset} directly
1618 @node Utilisation de @code{side-position-interface}
1619 @unnumberedsubsubsec Utilisation de @code{side-position-interface}
1620 @translationof Using the @code{side-position-interface}
1625 @node Utilisation de @code{self-alignment-interface}
1626 @unnumberedsubsubsec Utilisation de @code{self-alignment-interface}
1627 @translationof Using the @code{self-alignment-interface}
1632 @c @u nnumberedsubsubsec Utilisation des procédures @code{aligned-on-parent}
1634 @unnumberedsubsubsec Utilisation des procédures @code{centered-on-parent}
1635 @node Utilisation de @code{break-aligned-interface}
1639 @unnumberedsubsubsec Utilisation de @code{break-aligned-interface}
1640 @translationof Using the @code{break-alignable-interface}
1645 @node Regroupement vertical d'objets graphiques
1646 @subsection Regroupement vertical d'objets graphiques
1647 @translationof Vertical grouping of grobs
1649 Les objets @code{VerticalAlignment} et @code{VerticalAxisGroup}
1650 travaillent de concert. Comme leurs noms anglais l'indiquent,
1651 @code{VerticalAxisGroup} regroupe différents objets tels que les portées
1652 (@code{Staff}), les paroles (@code{Lyrics}) et ainsi de suite@tie{};
1653 puis @code{VerticalAlignment} synchronise verticalement ces différents
1654 groupes. En général, il n'y a qu'un seul @code{VerticalAlignment} pour
1655 l'ensemble de la partition, mais chaque contexte @code{Staff},
1656 @code{Lyrics}, etc. possède son propre @code{VerticalAxisGroup}.
1659 @node Modification des stencils
1660 @subsection Modification des stencils
1661 @translationof Modifying stencils
1666 @node Modification de l'allure des éléments
1667 @subsection Modification de l'allure des éléments
1668 @translationof Modifying shapes
1671 * Modification des liaisons::
1674 @node Modification des liaisons
1675 @unnumberedsubsubsec Modification des liaisons
1676 @translationof Modifying ties and slurs
1681 @node Utilisation de fonctions musicales
1682 @section Utilisation de fonctions musicales
1683 @translationof Using music functions
1686 * Syntaxe d'une fonction de substitution::
1687 * Exemples de fonction de substitution::
1690 @node Syntaxe d'une fonction de substitution
1691 @subsection Syntaxe d'une fonction de substitution
1692 @translationof Substitution function syntax
1697 @node Exemples de fonction de substitution
1698 @subsection Exemples de fonction de substitution
1699 @translationof Substitution function examples