5.1.6 Définition de nouveaux contextes
Les contextes tels que Staff
ou Voice
sont faits
de briques de construction empilées. En combinant divers graveurs,
il est possible de créer de nouveaux types de contextes.
Dans l’exemple suivant on construit, de zéro, un nouveau contexte très
semblable à Voice
, mais qui n’imprime que des têtes de notes en
forme de barre oblique au centre de la portée. Un tel contexte peut
servir, par exemple, à indiquer un passage improvisé dans un morceau de
jazz.
On a rassemblé les réglages dans un bloc \context
, lui-même placé
dans le bloc \layout
:
\layout { \context { … } }
En lieu et place des points (…), voici les éléments à saisir :
Tout d’abord, il convient de donner un nom à notre nouveau contexte :
\name ImproVoice
Comme il est très semblable à Voice
, nous souhaitons que
toutes les commandes associées au Voice
déjà existant restent
valables. D’où nécessité de la commande \alias
, qui va
l’associer au contexte Voice
:
\alias Voice
Ce contexte doit pouvoir imprimer des notes et des indications textuelles ; on ajoute donc les graveurs appropriés :
\consists Note_heads_engraver \consists Text_engraver
Cependant, on veut que les notes s’affichent toutes au centre de la portée :
\consists Pitch_squash_engraver squashedPosition = #0
Le graveur
Pitch_squash_engraver intercepte les notes
créées par le
Note_heads_engraver, et les « écrase » pour
qu’elles aient toutes la même position verticale, définie par
squashedPosition
: ici il s’agit de la valeur 0
,
c’est-à-dire la ligne du milieu.
On veut que les notes aient la forme d’une barre oblique, sans aucune hampe :
\override NoteHead #'style = #'slash \override Stem #'transparent = ##t \override Flag #'transparent = ##t
Afin que tous ces graveurs puissent travailler de concert, on leur
adjoint un sous-programme spécial, introduit par la commande
\type
: il s’agit de Engraver_group
,
\type "Engraver_group"
Récapitulons ; on se retrouve avec le bloc suivant :
\context { \name ImproVoice \type "Engraver_group" \consists "Note_heads_engraver" \consists "Text_engraver" \consists Pitch_squash_engraver squashedPosition = #0 \override NoteHead #'style = #'slash \override Stem #'transparent = ##t \override Flag #'transparent = ##t \alias Voice }
Ce n’est pas tout. En effet, on veut intégrer le nouveau contexte
ImproVoice
dans la hiérarchie des contextes. Tout comme le
contexte Voice
, sa place est au sein du contexte Staff
.
Nous allons donc modifier le contexte Staff
,
au moyen de la commande \accepts
:
\context { \Staff \accepts ImproVoice }
Le contraire de \accepts
est \denies
; il est parfois
utile lorsque l’on recycle des définitions de contextes déjà existantes.
Enfin, tout cela doit prendre place dans le bloc \layout
,
comme ici :
\layout { \context { \name ImproVoice … } \context { \Staff \accepts "ImproVoice" } }
On peut alors saisir la musique, comme dans l’exemple plus haut :
\relative c'' { a4 d8 bes8 \new ImproVoice { c4^"ad lib" c c4 c^"dévêtez-vous" c c_"tout en jouant :)" } a1 }
Autres langues : English, deutsch, español, italiano, 日本語.
About automatic language selection.