5.3.2 La commande \set

Chaque contexte peut avoir plusieurs propriétés, c’est-à-dire des variables qu’il inclut. Ces dernières peuvent être modifiées « à la volée », c’est-à-dire pendant que la compilation s’accomplit. C’est là le rôle de la commande \set.

\set contexte.propriété = #valeur

Ainsi :

R1*2
\set Score.skipBars = ##t
R1*2

[image of music]

Cette commande permet de condenser les mesures vides de notes, en des silences multi-mesures. Il s’agit d’un objet Scheme, auquel on attribue la valeur booléenne ‘vrai’, c’est-à-dire la lettre #t pour ‘True’ en anglais.

Ce changement étant appliqué ‘à la volée’, il n’affecte que le second groupe de notes.

Si l’argument contexte n’est pas spécifié, alors la propriété cherchera à s’appliquer dans le contexte le plus restreint où elle est employée : le plus souvent ChordNames, Voice, ou Lyrics. Dans l’exemple suivant,

c8 c c c
\set autoBeaming = ##f
c8 c c c

[image of music]

aucun argument contexte n’a été donné à la commande \set. De ce fait, les ligatures automatiques sont désactivées dans le contexte actuel, c’est-à-dire Voice. Notez que le contexte le plus restreint n’est pas toujours le bon, et peut ne pas contenir la propriété qui vous intéresse : ainsi, la propriété skipBars, évoquée plus haut, ne relève pas du contexte Voice, et le code suivant ne fonctionnera pas.

R1*2
\set skipBars = ##t
R1*2

[image of music]

Les contextes s’organisent de façon hiérarchique : aussi, lorsqu’un contexte de niveau supérieur est spécifié (par exemple Staff), la propriété sera modifée dans tous les contextes inférieurs (tous les contextes Voice, par exemple) qu’il contient.

La commande \unset permet d’annuler la définition d’une propriété :

\unset contexte.propriété

si et seulement si cette propriété à été définie dans ce contexte précis ; ainsi,

\set Staff.autoBeaming = ##f

même s’il s’applique à tous les contextes Voice contenus dans le contexte Staff, ne peut être annulé au niveau Voice. Le code suivant sera sans effet.

\unset Voice.autoBeaming

En d’autres termes, la commande \unset doit impérativement être accompagnée du même contexte que la commande \set d’origine. Pour annuler l’effet, dans notre exemple, de Staff.autoBeaming = ##f, il faut donc entrer :

\unset Staff.autoBeaming

Si l’on se trouve dans le contexte le plus restreint, il n’est pas obligatoire, là encore, de spécifier le contexte. Ainsi, les deux lignes suivantes sont équivalentes.

\set Voice.autoBeaming = ##t
\set autoBeaming = ##t

Pour modifier une propriété de façon à ce qu’elle ne s’applique qu’une seule fois, il convient d’employer la commande \once :

c4
\once \set fontSize = #4.7
c4
c4

[image of music]

Ici le changement de taille est annulé aussitôt après la note concernée.

La référence du programme contient une description exhaustive de toutes les propriétés contexte par contexte : voir Tunable context properties.


Autres langues : English, español.

Manuel de notation