[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

4.1 Retouches élémentaires

@translationof Tweaking basics


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

4.1.1 Introduction aux retouches

@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] [ ? ]

4.1.2 Objets et interfaces

@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] [ ? ]

4.1.3 Conventions de nommage des objets et propriétés

@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 nommageExemples
ContextesAaaa ou AaaaAaaaAaaaStaff, GrandStaff
Objets de renduAaaa ou AaaaAaaaAaaaSlur, NoteHead
GraveursAaaa_aaa_engraverClef_engraver, Note_heads_engraver
Interfacesaaa-aaa-interfacegrob-interface, break-aligned-interface
Propriétés de contexteaaa ou aaaAaaaAaaaalignAboveContext, skipBars
Propriétés d’objet de renduaaa ou aaa-aaa-aaadirection, 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.

Voir aussi

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] [ ? ]

4.1.4 Méthodes de retouche

@translationof Tweaking methods


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

La commande \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 |
}

[image of music]


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

La commande \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 |
}

[image of music]


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Le préfixe \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 |
}

[image of music]

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) |
}

[image of music]


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

La commande \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] [ ? ]

La commande \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
}

[image of music]

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
}

[image of music]

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"

[image of music]

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''>

[image of music]

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] }
  }
}

[image of music]

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] }
  }
}

[image of music]

Voir aussi

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] [ ? ]

Le préfixe \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 |
}

[image of music]

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
}

[image of music]

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.

Voir aussi

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.