| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Tweaking basics
| 4.1.1 Introduction aux retouches | ||
| 4.1.2 Objets et interfaces | ||
| 4.1.3 Conventions de nommage des objets et propriétés | ||
| 4.1.4 Méthodes de retouche |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Introduction to tweaks
LilyPond regroupe sous le terme de « retouches » (tweaks en anglais) les différents moyens dont dispose l’utilisateur pour intervenir sur l’interprétation du fichier d’entrée et pour modifier l’apparence du fichier de sortie. Certaines retouches sont très simples à mettre en œuvre ; d’autres sont plus complexes. Mais à elles toutes, elles permettent d’obtenir tout ce qu’on veut en matière de musique imprimée.
Dans ce chapitre, nous traitons des concepts de base nécessaires pour comprendre l’art de la retouche. Puis nous présentons de nombreuses commandes déjà prêtes, qu’il suffit de recopier pour obtenir un résultat identique dans vos partitions ; nous en profitons pour expliquer comment ces commandes ont été construites, si bien que vous pouvez apprendre par la même occasion à développer vos propres retouches.
Avant de vous lancer dans ce chapitre, il peut être utile de revoir la section Contextes et graveurs, dans la mesure où les contextes, graveurs et autres propriétés qui y sont décrits, sont indispensables pour comprendre et construire les retouches.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Objects and interfaces
Toute retouche implique que l’on modifie les opérations internes et les structures du programme LilyPond. Nous allons donc, pour commencer, présenter certains termes qui servent à décrire ces opérations internes et ces structures.
Le terme « Objet » est un terme générique qui fait référence à
une multitude de structures internes mises en place par LilyPond
durant la compilation d’un fichier d’entrée. Ainsi, quand une
commande du type \new Staff apparaît, un nouvel objet du type
Staff est créé. Cet objet Staff contient alors toutes les
propriétés associées à cette portée, par exemple son nom et son armure,
ainsi que le détail des graveurs qui ont été désignés pour fonctionner
dans ce contexte de portée. Certains objets peuvent contenir les
propriétés de tous les autres contextes, comme les objets Voice,
les objets Score, les objets Lyrics ; d’autres se
rapportent à tous les éléments de notation, comme les barres de mesure,
les liaisons, les nuances, etc. Chaque objet dispose de son propre
échantillon de valeurs pour le réglage des propriétés.
Certains types d’objet portent des noms spécifiques. Les objets qui se rapportent à des éléments de notation sur le fichier de sortie, comme les notes, les hampes, les liaisons de phrasé ou de prolongation, les doigtés, les clefs, etc. sont appelés « Objets de rendu » ; ils sont aussi connus sous le nom « d’Objets graphiques » (en anglais : Graphical objects ou Grobs pour faire court). Ce sont bien des objets au sens générique ci-dessus et, en tant que tels, ils reçoivent des propriétés qui leur sont associées, comme leur position, leur taille, leur couleur, etc.
Certains objets de rendu, comme les liaisons de phrasé, les soufflets de crescendo, les marques d’octaviation et beaucoup d’autres grobs, ont pour particularité de ne pas se situer à un seul et unique endroit – ils ont un point de départ, un point d’arrivée, et éventuellement d’autres propriétés relatives à leur forme. Ces objets avec une forme étendue sont appelés des bandeaux (Spanners en anglais).
Les bandeaux ne peuvent être retouchés après leur création. Ceci
inclut les StaffSymbol et LedgerLineSpanner qui se
déroulent tout au long de la partition – à moins qu’ils n’aient été
rompus par une commande \stopStaff puis créés de nouveau à l’aide
de la commande \startStaff.
De plus existent certains grobs que l’on peut qualifier
« d’astraits ». Ils n’ont pas pour fonction intrinsèque d’imprimer
quelque chose, mais plutôt de collecter, positionner et gérer d’autres
objets. Citons, parmi les plus courants, DynamicLineSpanner,
BreakAlignment, NoteColumn, VerticalAxisGroup,
NonMusicalPaperColumn. Nous verrons plus avant comment les
utiliser.
Il reste à expliquer ce que sont les « interfaces ». De nombreux
objets, qui peuvent être très différents les uns des autres, ont pour
point commun de devoir être compilés simultanément. Par exemple, tous
les grobs ont une couleur, une taille, une position, etc. et
toutes ces propriétés sont compilées simultanément durant
l’interprétation du fichier d’entrée par LilyPond. Pour alléger ces
opérations internes, ces actions et propriétés communes sont regroupées
en un objet appelé grob-interface. Il existe beaucoup d’autres
regroupements de propriétés communes dans le genre de celui-ci, chacun
portant un nom qui se termine par interface. En tout, on en
compte plus d’une centaine. Nous verrons plus loin en quoi c’est
intéressant et utile pour l’utilisateur.
Ainsi s’achève le tour des principaux termes relatifs aux objets que nous serons amenés à utiliser dans ce chapitre.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Naming conventions of objects and properties
Nous avons eu un aperçu, dans Contextes et graveurs, de la façon de nommer les objets. Voici maintenant une liste de référence des types d’objets et de propriétés les plus courants, avec leurs conventions de nommage et quelques exemples de cas concrets. La lettre A représente n’importe quel caractère alphabétique majuscule, et les lettres aaa un nombre indéterminé de caractères alphabétiques minuscules. Les autres caractères sont à prendre tels qu’ils se présentent.
| Type d’objet/propriété | Convention de nommage | Exemples |
|---|---|---|
| Contextes | Aaaa ou AaaaAaaaAaaa | Staff, GrandStaff |
| Objets de rendu | Aaaa ou AaaaAaaaAaaa | Slur, NoteHead |
| Graveurs | Aaaa_aaa_engraver | Clef_engraver, Note_heads_engraver |
| Interfaces | aaa-aaa-interface | grob-interface, break-aligned-interface |
| Propriétés de contexte | aaa ou aaaAaaaAaaa | alignAboveContext, skipBars |
| Propriétés d’objet de rendu | aaa ou aaa-aaa-aaa | direction, beam-thickness |
Comme nous le verrons bientôt, les propriétés des différents types d’objet sont modifiées par des commandes différentes, si bien qu’il est bon de savoir reconnaître le type d’un objet ou d’une propriété en fonction de son nom.
Manuel de notation : (notation)Modification de propriétés section ‘Modification de propriétés’ dans Manuel de notation.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Tweaking methods
La commande \override | ||
La commande \revert | ||
Le préfixe \once | ||
La commande \overrideProperty | ||
La commande \tweak | ||
Le préfixe \single |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
\override@translationof The override command
Dans Modification des propriétés d’un contexte et dans
Ajout et suppression de graveurs, nous avons déjà rencontré les
commandes \set et \with, qui servent à changer les
propriétés des contextes et à supprimer ou ajouter des
graveurs. Voici maintenant d’autres commandes plus
importantes.
La commande pour changer les propriétés des objets de rendu
est \override. Du fait que cette commande modifie en profondeur
les propriétés internes de LilyPond, sa syntaxe n’est pas aussi simple
que pour les commandes vues précédemment. Elle a besoin de savoir avec
précision quelle est la propriété à modifier, pour quel objet et dans
quel contexte, et quelle doit être sa nouvelle valeur. Voyons de quoi
il retourne.
La syntaxe générale de cette commande est :
\override Contexte.ObjetDeRendu.propriété-rendu = #valeur |
Elle attribue à la propriété appelée propriété-rendu, associée à l’objet ObjetDeRendu, appartenant lui-même au contexte Contexte, une valeur valeur.
Le contexte Contexte peut être omis (c’est généralement le cas)
quand il n’y a pas d’ambiguïté et qu’il s’agit d’un contexte de très bas
niveau, comme Voice, ChordNames ou Lyrics. Dans les
exemples qui suivent, le contexte sera très souvent omis. Nous verrons
plus tard dans quelles circonstances il doit impérativement être
indiqué.
Les sections ci-dessous traitent largement des propriétés et de leurs valeurs – voir Types de propriétés – mais, pour illustrer la mise en forme et l’utilisation de ces commandes, nous nous limiterons à n’employer que quelques propriétés et valeurs simples, facilement compréhensibles.
LilyPond reconnaît comme expression primaire les éléments musicaux tels que les notes et durées, ainsi que les chînes de caractères et annotations (les markups). D’autres expressions spécifiques comme les nombres, symboles et listes sont gérées en « mode Scheme », mode appelé en faisant précéder une valeur par un ‘#’. Pour de plus amples informations quant au mode Scheme, consultez (extending)Syntaxe Scheme dans LilyPond section ‘Syntaxe Scheme dans LilyPond’ dans Extension de LilyPond.
La commande \override est la plus fréquemment utilisée pour faire
des retouches, et pratiquement tout le reste de ce chapitre aura pour
but de montrer, à travers des exemples, comment l’utiliser. L’exemple
ci-dessous change la couleur des têtes de notes :
\relative { c'4 d \override NoteHead.color = #red e4 f | \override NoteHead.color = #green g4 a b c | }
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
\revert@translationof The revert command
Une fois qu’elle a été modifiée, la propriété conserve sa nouvelle
valeur jusqu’à ce qu’elle soit à nouveau modifiée ou qu’elle rencontre
la commande \revert. La commande \revert obéit à la
syntaxe ci-dessous et ramène la valeur de la propriété à sa valeur
d’origine. Attention : dans le cas où plusieurs \override ont
été employés, il ne s’agit pas de la valeur précédente mais bien de la
valeur par défaut.
\revert Contexte.ObjetDeRendu.propriété-de-rendu |
Tout comme pour la commande \override, la mention du
Contexte est souvent facultative. Elle sera omise dans de
nombreux exemples ci-dessous. Voici un exemple qui ramène la couleur
des deux dernières notes à leur valeur par défaut :
\relative { c'4 d \override NoteHead.color = #red e4 f | \override NoteHead.color = #green g4 a \revert NoteHead.color b4 c | }
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
\once@translationof The once prefix
Les commandes \override, \revert, \set et
\unset peuvent supporter le préfixe \once. Celui-ci a
pour fonction de n’appliquer la commande considérée qu’à l’instant
musical en cours, avant que la propriété ne reprenne sa valeur
antérieure – qui n’est pas forcément la valeur par défaut lorsqu’un
autre \override ou \set est toujours effectif. Toujours à
partir du même exemple, il est possible de ne changer la couleur que
d’une seule note :
\relative { c'4 d \override NoteHead.color = #red e4 f | \once \override NoteHead.color = #green g4 a \once \revert NoteHead.color b c | \revert NoteHead.color f2 c | }
Le préfixe \once peut s’utiliser avec de nombreuses
commandes prédéfinies pour en limiter les effets à un seul instant
musical :
\relative { c'4( d) \once \slurDashed e4( f) | g4( a) \once \hideNotes b( c) | }
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
\overrideProperty@translationof The overrideProperty command
Il existe une autre forme de commande \override,
\overrideProperty, qui est parfois utile. Nous la mentionnons
ici par souci d’exhaustivité ; pour le détail, voir
(extending)Retouches complexes section ‘Retouches complexes’ dans Extension de LilyPond.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
\tweak@translationof The tweak command
La dernière commande disponible pour les retouches est
\tweak. Elle sert à changer les propriétés d’objets qui
surviennent simultanément dans la musique, comme par exemple les
notes d’un accord. La commande \override modifierait toutes
les notes de l’accord, tandis que \tweak permet de ne modifier
que l’élément immédiatement suivant dans la chaîne de saisie.
Voici un exemple. Supposons que nous voulions changer la taille de
la tête de note du milieu (le mi) dans un accord de do majeur. Voyons
d’abord ce que donnerait \once \override :
\relative { <c' e g>4 \once \override NoteHead.font-size = #-3 <c e g>4 <c e g>4 }
Nous voyons que \override modifie toutes les têtes
de notes de l’accord, car toutes les notes de l’accord surviennent au
même instant musical et que la fonction de \once
est de faire porter la modification sur tous les objets du type spécifié
qui surviennent au même instant musical, comme le fait la commande
\override elle-même.
La commande \tweak opère différemment. Elle agit
sur l’élément immédiatement suivant dans la chaîne de saisie. Dans sa
forme la plus simple, elle ne fonctionne que sur les objets créés
directement à partir de l’élément suivant dans la chaîne de saisie,
c’est-à-dire essentiellement des têtes de notes et des articulations.
Pour reprendre notre exemple, la taille de la note du milieu d’un accord peut être modifiée de cette manière :
\relative { <c' e g>4 <c \tweak font-size #-3 e g>4 }
Vous noterez que la syntaxe de \tweak est différente de
celle de la commande \override. Ni le contexte,
ni l’objet n’ont besoin d’être spécifiés ; au contraire, cela
produirait une erreur si on le faisait. Tous deux sont sous-entendus
par l’élément suivant dans la chaîne de saisie. Il n’est pareillement
pas nécessaire d’insérer un signe égal. La syntaxe générale
de la commande \tweak est donc, tout simplement :
\tweak propriété-de-rendu #valeur |
La commande \tweak est aussi utilisée quand on veut, dans
une série d’articulations, n’en modifier qu’une seule. Ainsi :
a'4^"Black" -\tweak color #red ^"Red" -\tweak color #green _"Green"
Attention : la commande \tweak doit être précédée d’une
marque d’articulation, comme si elle-même était une articulation. Dans
la cas de multiples positionnements forcés (^ ou _), celui
le plus à gauche aura préséance puisqu’il sera appliqué en dernier.
Les objets tels que hampes et altérations seront créés postérieurement à
l’événement qui survient. L’utilisation de la commande \tweak
sur de tels objets indirectement créés peut se faire en nommant
explicitement l’objet de rendu, si tant est que LilyPond puisse remonter
jusqu’à l’événement originel :
<\tweak Accidental.color #red cis''4 \tweak Accidental.color #green es'' g''>
Cette forme développée de la commande \tweak correspond à :
\tweak objet-de-rendu.propriété-de-rendu #valeur |
Quand plusieurs n-olets sont imbriqués et commencent au même instant
musical, c’est encore la commande \tweak qui est utilisée pour
changer l’apparence de l’un d’entre eux. Dans l’exemple suivant, le
long crochet de n-olet et le premier des trois crochets courts commencent
au même instant musical ; une commande \override s’appliquerait
donc à la fois aux deux. En revanche, \tweak permet de les
dissocier. La première commande \tweak indique que le long
crochet doit être placé au-dessus des notes, et la seconde indique que
le coefficient de n-olet doit être imprimé en rouge sur le premier
crochet de triolet court.
\relative c'' { \tweak direction #up \tuplet 3/4 { \tweak color #red \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } } }
Si les n-olets imbriqués ne commencent pas au même moment,
leur apparence peut alors être modifiée de la façon habituelle,
avec la commande \override :
\relative { \tuplet 3/2 { c'8[ c c] } \once \override TupletNumber.text = #tuplet-number::calc-fraction-text \tuplet 3/2 { c8[ c] c8[ c] \once \override TupletNumber.transparent = ##t \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } } }
Manuel de notation : (notation)La commande d’affinage (tweak) section ‘La commande d'affinage (tweak)’ dans Manuel de notation.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
\single@translationof The single prefix
Supposons que nous voulions mettre en exergue certaines têtes de note – plus grosses et en rouge – et, pour nous simplifier la vie, que nous avons réalisé un fonction à ce effet :
emphNoteHead = { \override NoteHead.color = #red \override NoteHead.font-size = 2 } \relative { c''4 a \once \emphNoteHead f d | }
Le préfixe \once fonctionne à merveille dans le cas d’une note
isolée ou de l’intégralité d’un accord, mais ne permet pas de souligner
individuellement l’une des notes d’un accord. Nous avons vu comment un
\tweak permet d’y arriver – voir La commande \tweak. Un
\tweak ne peut toutefois pas s’utiliser dans une fonction ; un
\single permet d’appliquer la fonction une seule fois :
emphNoteHead = { \override NoteHead.color = #red \override NoteHead.font-size = 2 } \relative { <c'' a \single \emphNoteHead f d>4 }
En résumé, l’instruction \single convertit les instructions
\override en \tweak de telle sorte que lorsque plusieurs
objets se trouvent en un même point du temps musical, comme la tête des
notes formant un accord, \single n’en affectera qu’une seule,
celle générée par l’expression musicale qui vient juste après,
contrairement à un \once qui en affectera tous les objets.
Cette utilisation de \single permet d’appliquer individuellement
n’importe quel raccourci de fonction contenant des \override aux
notes d’un accord. Néanmoins, l’instruction \single ne permet
pas de convertir des \revert, \set ou \unset en
\tweak.
Manuel d’initiation :
La commande \tweak,
Utilisation de variables dans les retouches.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] |
Ce document a été généré le le 13 juillet 2020 par gub en utilisant texi2html 1.82.
Autres langues : English, català, česky, deutsch, español, italiano, 日本語, nederlands.
À propos de la sélection automatique de la langue.