[ << Concepts fondamentaux ] | [Top][Contents][Index] | [ Retouche de partition >> ] |
[ < Écriture d’une partition à partir de zéro ] | [ Up : Extension des modèles ] | [ Conducteurs et parties > ] |
4.4.4 Économie de saisie grâce aux identificateurs et fonctions
Jusqu’à maintenant, vous avez vu ce type de code :
hornNotes = \relative { c''4 b dis c } \score { { \hornNotes } }
Vous comprendrez combien cela peut être utile pour écrire de la musique minimaliste :
fragmentA = \relative { a'4 a8. b16 } fragmentB = \relative { a'8. gis16 ees4 } violin = \new Staff { \fragmentA \fragmentA | \fragmentB \fragmentA | } \score { { \violin } }
Néanmoins vous pouvez aussi utiliser ces identificateurs – aussi connus sous le nom de variables, macros, ou commandes (définies par l’utilisateur) – pour des retouches :
dolce = \markup { \italic \bold dolce } centerText = { \once \override TextScript.self-alignment-X = #CENTER } fthenp = _\markup { \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p } violin = \relative { \repeat volta 2 { c''4._\dolce b8 a8 g a b | \centerText c4.^"hi there!" d8 e f g d | c4.\fthenp b8 c4 c-. | } } \score { { \violin } }
Ces identificateurs sont évidemment utiles pour économiser de la frappe. Mais ils peuvent l’être même si vous ne les utilisez qu’une seule fois : ils réduisent la complexité. Regardons l’exemple précédent sans aucun identificateur. C’est beaucoup plus laborieux à lire, et particulièrement la dernière ligne.
violin = \relative { \repeat volta 2 { c''4._\markup { \italic \bold dolce } b8 a8 g a b | \once \override TextScript.self-alignment-X = #CENTER c4.^"hi there!" d8 e f g d | c4._\markup { \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p } b8 c4 c-. | } }
Vous n’avez pas oublié les « postévénements » ? Rappelez-vous les articulations, doigtés, tout ce qui peut s’ajouter après une note – voir Structuration de la saisie des notes –, souvent introduit par un tiret ou un indicateur de positionnement. Ces événements peuvent eux-même s’enregistrer sous forme de variable, auquel cas les habituelles accolades ne seront pas nécessaires puiqu’elles n’apparaîtraient pas entre la note et son articulation.
Lorsqu’une telle définition inclut un préfixe, la variable peut alors s’utiliser directement après la note, à moins de vouloir en changer le positionnement à l’aide de l’indicateur adéquat.
articulationVar = -^-. artEsprVar = \articulationVar ^> \relative c' { c\articulationVar d e2^\articulationVar d2\artEsprVar c_\artEsprVar }
Jusqu’ici nous avons vu des substitutions statiques : quand LilyPond
rencontre \centerText
, il le remplace par le contenu que nous lui
avons défini – c’est-à-dire le contenu à droite de centerText =
.
LilyPond gère également des substitutions non-statiques – vous pouvez les voir comme des fonctions.
padText = #(define-music-function (padding) (number?) #{ \once \override TextScript.padding = #padding #}) \relative { c''4^"piu mosso" b a b \padText 1.8 c4^"piu mosso" b a b \padText 2.6 c4^"piu mosso" b a b }
Utiliser des identificateurs est aussi un bon moyen pour vous épargner
du travail si la syntaxe de LilyPond change un jour – voir
Mise à jour avec
convert-ly. Si vous avez une seule définition, par exemple
\dolce
, pour tous vos fichiers (voir Feuilles de style) et que
la syntaxe change, alors vous n’aurez qu’à mettre à jour votre seule
définition \dolce
, au lieu de devoir modifier chaque fichier
.ly.
[ << Concepts fondamentaux ] | [Top][Contents][Index] | [ Retouche de partition >> ] |
[ < Écriture d’une partition à partir de zéro ] | [ Up : Extension des modèles ] | [ Conducteurs et parties > ] |