1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
2 @c This file is part of lilypond.tely
4 Translation of GIT committish: 964d024dd4f022ba7cd66adc13c0169035d4c4e5
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. See TRANSLATION for details.
12 @c Translators: Valentin Villenave, Nicolas Klutchnikoff
13 @c Translation checkers: Jean-Charles Malahieude, John Mandereau
16 @chapter Tweaking output
18 Ce chapitre indique comment modifier le résultat que vous obtiendrez.
19 LilyPond offre de nombreuses possibilités de réglages, permettant de modifier
20 quasiment chaque élément de votre partition.
24 * The Internals Reference manual::
25 * Appearance of objects::
26 * Placement of objects::
27 * Collisions of objects::
33 @section Tweaking basics
38 * Introduction to tweaks::
39 * Objects and interfaces::
40 * Naming conventions of objects and properties::
44 @node Introduction to tweaks
45 @subsection Introduction to tweaks
49 @node Objects and interfaces
50 @subsection Objects and interfaces
54 @node Naming conventions of objects and properties
55 @subsection Naming conventions of objects and properties
59 @node Tweaking methods
60 @subsection Tweaking methods
64 @node The Internals Reference manual
65 @section The Internals Reference manual
70 * Properties of layout objects::
71 * Properties found in interfaces::
72 * Types of properties::
75 @node Properties of layout objects
76 @subsection Properties of layout objects
80 @node Properties found in interfaces
81 @subsection Properties found in interfaces
85 @node Types of properties
86 @subsection Types of properties
90 @node Appearance of objects
91 @section Appearance of objects
96 * Visibility and color of objects::
98 * Length and thickness of objects::
101 @node Visibility and color of objects
102 @subsection Visibility and color of objects
106 @node Size of objects
107 @subsection Size of objects
111 @node Length and thickness of objects
112 @subsection Length and thickness of objects
116 @node Placement of objects
117 @section Placement of objects
122 * Automatic behavior::
123 * Within-staff objects::
124 * Outside staff objects::
127 @node Automatic behavior
128 @subsection Automatic behavior
132 @node Within-staff objects
133 @subsection Within-staff objects
137 @node Outside staff objects
138 @subsection Outside staff objects
143 @node Collisions of objects
144 @section Collisions of objects
149 * Fixing overlapping notation::
150 * Real music example::
154 @subsection Moving objects
156 Aussi surprenant que cela puisse paraître, LilyPond n'est pas parfait.
157 Certains éléments sur la partition peuvent se chevaucher, ce qui est
158 regrettable mais, le plus souvent, facile à corriger.
160 @c FIXME: find a better example for 5.1 Moving Objects. -gp
161 @c yes, I want this TODO to be visible to end-users. It's better
162 @c than having nothing at all.
163 À FAIRE : les modifications de la gestion des espacements de la version 2.12
164 feront perdre leur pertinence aux exemples suivants. Ils démontrent cependant
165 la puissance de LilyPond, et justifient à ce titre leur présence dans
166 ces lignes, tant que d'autres exemples n'auront pas été proposés.
168 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
169 % temporary code to break this example:
170 \override TextScript #'outside-staff-priority = ##f
171 e4^\markup{ \italic ritenuto } g b e
176 Le plus simple est ici d'augmenter la distance entre l'objet (du
177 texte comme ici, ou bien des nuances ou des doigtés) et la note.
178 Dans LilyPond, il s'agit de la propriété @code{padding}, qui
179 se mesure en espaces relatifs à la taille de la portée. Pour la plupart
180 des objets (chacun ayant sa propre valeur), elle est définie à 1.0, ou
181 un peu moins. Nous voulons ici l'augmenter : essayons 1.5.
183 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
184 % temporary code to break this example:
185 \override TextScript #'outside-staff-priority = ##f
186 \once \override TextScript #'padding = #1.5
187 e4^\markup{ \italic ritenuto } g b e
191 C'est déjà mieux ! Mais on peut certainement encore améliorer le résultat.
192 Il nous semble, après plusieurs essais, que la meilleure valeur
193 dans ce cas soit 2.3. Toutefois, ce constat est le fruit
194 d'expérimentations et de goût personnel en matière de notation.
195 Essayez le même exemple avec 2.3... mais également avec
196 des valeurs plus grandes (ou plus petites).
197 À votre avis, quelle est la meilleure version ?
200 La propriété @code{staff-padding} est de nature similaire.
201 @code{padding} détermine l'espace minimum entre un objet et l'objet
202 le plus proche (le plus souvent une note ou les lignes de la portée) ;
203 @code{staff-padding} détermine pour sa part l'espace minimum entre
204 un objet et la portée. La différence est subtile, mais vous apparaîtra
207 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
208 % temporary code to break this example:
209 \override TextScript #'outside-staff-priority = ##f
211 \once \override TextScript #'padding = #4.6
213 \once \override TextScript #'staff-padding = #4.6
214 c4^"piu mosso" fis a g
216 c'4^"piu mosso" b a b
217 \once \override TextScript #'padding = #4.6
219 \once \override TextScript #'staff-padding = #4.6
220 c4^"piu mosso" fis a g
225 Une autre démarche permet de contrôler totalement la position d'un
226 objet --- on peut le déplacer horizontalement ou verticalement. Il
227 suffit d'avoir recours à la propriété @code{extra-offset}. En fait
228 c'est une méthode plus complexe, qui peut en outre poser des
229 problèmes. Quand on déplace un objet à l'aide de @code{extra-offset},
230 le déplacement est effectué après que LilyPond a placé tous les autres
231 objets. Par conséquent, l'objet ainsi déplacé peut venir
232 recouvrir d'autres objets déjà placés.
235 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
236 % temporary code to break this example:
237 \override TextScript #'outside-staff-priority = ##f
238 \once \override TextScript #'extra-offset = #'( 1.0 . -1.0 )
239 e4^\markup{ \italic ritenuto } g b e
242 Lorsqu'on utilise @code{extra-offset}, le premier nombre décrit le
243 déplacement horizontal (négatif pour un déplacement vers la gauche)
244 tandis que le deuxième décrit un déplacement vertical (positif
245 pour le haut). Après quelques essais, on peut choisir les valeurs suivantes
246 qui semblent donner un résultat satisfaisant.
248 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
249 % temporary code to break this example:
250 \override TextScript #'outside-staff-priority = ##f
251 \once \override TextScript #'extra-offset = #'( -1.6 . 1.0 )
252 e4^\markup{ \italic ritenuto } g b e
257 Une fois encore, c'est après quelques tâtonnements que l'on a abouti à
258 ces nombres, au regard du résultat final. Si vous souhaitez que
259 le texte soit plus haut, plus à gauche, etc. essayez vous-même et choisissez
260 aprés avoir regardé le résultat.
262 Une dernière mise en garde : dans cette section, nous avons eu recours à
265 \once \override TextScript @dots{}
268 ce qui permet de régler le placement du texte pour la note suivante.
269 Mais si cette note n'a pas de texte, le réglage ne s'appliquera pas
270 et n'attendra @strong{pas} le prochain texte. Pour que ce comportement
271 persiste après la commande, ne mettez pas @code{\once}. Votre réglage
272 s'appliquera alors partout, jusqu'à ce que vous l'annuliez au moyen de
273 la commande @code{\revert}. Ceci est expliqué en détail dans
274 @ruser{The \override command}.
276 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
277 % temporary code to break this example:
278 \override TextScript #'outside-staff-priority = ##f
280 \once \override TextScript #'padding = #4.6
283 \once \override TextScript #'padding = #4.6
287 \override TextScript #'padding = #4.6
290 \revert TextScript #'padding
296 Dans ce même manuel : @ruser{The \override command}, @ref{Common tweaks}.
299 @node Fixing overlapping notation
300 @subsection Fixing overlapping notation
302 Dans la section @ref{Moving objects}, nous avons vu comment
303 déplacer un objet @code{TextScript}. Ce même procédé peut être
304 appliqué à d'autres types d'objet : il vous suffira de remplacer
305 @code{TextScript} par le nom de l'objet en question.
307 Pour trouver cette dénomination, regardez les liens @q{@strong{Voir aussi}}
308 en bas des pages de la documentation. Par exemple, en bas de la page
309 @ruser{Dynamics}, nous trouvons
314 Référence du programme : @rinternals{DynamicText}, @rinternals{Hairpin}.
315 Le placement vertical de ces symboles est contrôlé par
316 @rinternals{DynamicLineSpanner}.
321 Ce qui implique que, pour modifier la hauteur d'une nuance, nous utiliserons
324 \override DynamicLineSpanner #'padding = #2.0
327 Nous ne listerons pas ici tous les types d'objets, mais seulement
330 @multitable @columnfractions .33 .66
331 @headitem Type d'objet @tab Nom de l'objet
332 @item Nuances (verticalement) @tab @code{DynamicLineSpanner}
333 @item Nuances (horizontalement) @tab @code{DynamicText}
334 @item Laisons de tenue @tab @code{Tie}
335 @item Liaisons @tab @code{Slur}
336 @item Indications d'articulation @tab @code{Script}
337 @item Doigtés @tab @code{Fingering}
338 @item Textes (@code{^"texte"}) @tab @code{TextScript}
339 @item Repères @tab @code{RehearsalMark}
343 @node Real music example
344 @subsection Real music example
349 @c DEPRECATED SECTION
351 @section Common tweaks
353 Certains réglages sont si courants que des raccourcis sont fournis
354 sous forme de commandes telles que @code{\slurUp} ou @code{\stemDown}.
355 Toutes ces commandes sont décrites dans les différentes sections
356 de la Référence de notation.
358 La liste complète des modifications possibles pour chaque type d'objet
359 (tel que liaison ou ligature) se trouve dans la Référence du
360 programme. Cependant, certaines propriétés sont communes à de nombreux
361 objets, et on peut de ce fait définir quelques réglages génériques.
369 La propriété @code{padding} peut être définie de manière à
370 accroître (ou décroître) la distance entre les symboles qui se
371 placent au-dessus ou au-dessous des notes. Ce qui s'applique à
372 tous les objets régis par @code{side-position-interface}.
374 @lilypond[quote,fragment,relative=1,verbatim]
376 \override Script #'padding = #3
380 @lilypond[quote,fragment,relative=1,verbatim]
381 % This will not work, see below:
382 \override MetronomeMark #'padding = #3
386 \override Score.MetronomeMark #'padding = #3
391 Notez, dans le second exemple, l'importance de savoir à quel contexte
392 correspond l'objet. Dans la mesure où l'objet @code{MetronomeMark}
393 appartient au contexte @code{Score}, ses modifications affectées au
394 contexte @code{Voice} ne l'affecteront pas. Pour plus de détails, voir
395 @ruser{Constructing a tweak}.
400 La propriété @code{extra-offset} permet de déplacer latéralement et
401 verticalement ; c'est pourquoi elle requiert deux nombres. Le premier
402 affecte le placement horizontal (un nombre positif déplace l'objet
403 vers la droite) ; le second le placement vertical (un nombre positif
404 déplace l'objet vers le haut). Cette propriété est de bas niveau : le
405 moteur de formatage ne tient aucun compte des placements qu'elle induit.
407 Dans l'exemple suivant, le second doigté est déplacé un peu vers la gauche, et
408 plus bas de 1.8 espaces :
410 @lilypond[quote,fragment,relative=1,verbatim]
413 \once \override Fingering
414 #'extra-offset = #'(-0.3 . -1.8)
419 La propriété @code{transparent} imprime les objets avec de
420 l'@q{encre invisible} : l'objet n'est pas visible, mais tous
421 les comportement le concernant s'appliquent quand même. Il occupe
422 une certaine place, intervient dans la gestion des collisions, et on
423 peut lui attacher des liaisons ou des ligatures.
425 @cindex transparents, objets
426 @cindex suppression d'objets
427 @cindex masquage d'objets
428 @cindex invisibles, objets
430 L'exemple suivant montre comment tenir des notes entre différentes voix,
431 au moyen de liaisons. Ces liaisons de tenue, en principe, ne peuvent relier
432 que deux notes d'une même voix. On introduit donc la liaison dans une
435 @lilypond[quote,fragment,relative=2]
444 et on efface la première croche (hampe vers le haut) de ladite voix ;
445 maintenant la liaison semble passer d'une voix à l'autre :
448 @lilypond[quote,fragment,relative=2,verbatim]
450 \once \override Stem #'transparent = ##t
457 Pour s'assurer que le crochet de la hampe que nous avons effacée ne
458 raccourcira pas la liaison, nous allons également rallonger cette hampe,
459 en attribuant à la propriété @code{length} la valeur @code{8} :
461 @lilypond[quote,fragment,relative=2,verbatim]
463 \once \override Stem #'transparent = ##t
464 \once \override Stem #'length = #8
473 @cindex retouches, distances
476 Les distances dans LilyPond sont mesurées dans l'unité staff-space
477 (espace de portée) tandis que la plupart des propriétés relatives aux
478 épaisseurs sont mesurées à l'aide de l'unité line-thickness (épaiseur
479 de ligne). Toutefois, certaines d'entre-elles échappent à cette règle
480 : par exemple l'épaisseur des liens de croches est mesurée à l'aide de
481 l'unité staff-space. Pour de plus amples informations,
482 consultez les sections correspondantes de la Référence du programme.
485 @node Further tweaking
486 @section Further tweaking
489 * Other uses for tweaks::
490 * Using variables for tweaks::
491 * Other sources of information::
492 * Avoiding tweaks with slower processing::
493 * Advanced tweaks with Scheme::
496 @node Other uses for tweaks
497 @subsection Other uses for tweaks
501 @node Using variables for tweaks
502 @subsection Using variables for tweaks
506 @node Other sources of information
507 @subsection Other sources of information
509 La Référence du programme contient
510 beaucoup d'informations sur LilyPond. Cependant vous pouvez en découvrir
511 encore plus en consultant les fichiers internes de LilyPond.
513 Des réglages par défaut (tels que les définitions des blocs
514 @code{\header@{@}}) sont contenus dans des fichiers @code{.ly}. D'autres
515 (comme les définitions des commandes @qq{markup} ) sont contenus dans
516 des fichiers @code{.scm} (Scheme). Malheureusement, des explications
517 plus complètes dépassent le cadre de ce manuel.
518 Les utilisateurs qui souhaiteraient comprendre le fonctionnement de
519 ces fichiers de configuration doivent être avertis que des
520 connaissances techniques substantielles et beaucoup de temps sont nécessaires.
524 @item Linux : @file{@var{dossierduprogramme}/lilypond/usr/share/lilypond/current/}
527 @file{@var{dossierduprogramme}/LilyPond.app/Contents/Resources/share/lilypond/current/}.
528 Pour accéder à ce dossier, deux possibilités : soit, dans un Terminal,
529 taper @code{cd} suivi du chemin complet ci-dessus ; soit
530 Control-cliquer (ou clic droit) sur l'application LilyPond
531 et sélectionner @q{Afficher le contenu du paquet}.
534 @item Windows : @file{@var{dossierduprogramme}/LilyPond/usr/share/lilypond/current/}
538 Les répertoires @file{ly/} et @file{scm/} sont tout particulièrement
539 intéressants. En effet les fichiers du type
540 @file{ly/property-init.ly} ou encore @file{ly/declarations-init.ly}
541 déterminent toutes les définitions avancées communes.
543 @node Avoiding tweaks with slower processing
544 @subsection Avoiding tweaks with slower processing
546 LilyPond peut effectuer des vérifications supplémentaires lors du
547 traitement des fichiers, cependant le rendu nécessitera alors plus de
548 temps. En contrepartie, il y aura moins d'ajustements manuels à réaliser.
552 %% Ceci sert à s'assurer que les indications textuelles resteront à l'intérieur des marges de la page.
553 \override Score.PaperColumn #'keep-inside-line = ##t
557 @node Advanced tweaks with Scheme
558 @subsection Advanced tweaks with Scheme
560 Nous avons déjà vu comment le résultat obtenu avec LilyPond peut être
561 largement personnalisé à l'aide de commandes comme
562 @code{\override TextScript #'extra-offset = ( 1 . -1)}. Cependant,
563 l'utilisation de Scheme ouvre des possibilités encore plus grandes.
564 Pour des explications complètes là-dessus, consultez le
565 @ref{Scheme tutorial} et les @ruser{Interfaces for programmers}.
567 On peut utiliser Scheme simplement à l'aide des commandes @code{\override}.
569 @lilypond[quote,verbatim,ragged-right]
570 padText = #(define-music-function (parser location padding) (number?)
572 \once \override TextScript #'padding = #$padding
580 c4^"piu mosso" fis a g
583 On peut s'en servir pour créer de nouvelles commandes :
585 @lilypond[quote,verbatim,ragged-right]
586 tempoMark = #(define-music-function (parser location padding marktext)
589 \once \override Score . RehearsalMark #'padding = $padding
590 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
591 \mark \markup { \bold $marktext }
596 \tempoMark #3.0 #"Allegro"
601 On peut même y inclure des expressions musicales :
603 @lilypond[quote,verbatim,ragged-right]
604 pattern = #(define-music-function (parser location x y) (ly:music? ly:music?)
611 \pattern {d16 dis} { ais16-> b\p }