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

5.1 Contextes d’interprétation

@translationof Interpretation contexts

Nous allons voir ici ce que sont les contextes et comment les modifier.

Voir aussi

Manuel d’initiation : (learning)Contextes et graveurs section ‘Contextes et graveurs’ dans Manuel d’initiation.

Fichiers d’initialisation : ‘ly/engraver-init.ly’, ‘ly/performer-init.ly’.

Morceaux choisis : (snippets)Contexts and engravers section ‘Contextes et graveurs’ dans Morceaux choisis.

Référence des propriétés internes : (internals)Contexts section ‘Contexts’ dans Référence des propriétés internes, (internals)Engravers and Performers section ‘Engravers and Performers’ dans Référence des propriétés internes.


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

5.1.1 Tout savoir sur les contextes

@translationof Contexts explained

Les contextes sont hiérarchisés :


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

Définitions de la sortie – hiérarchie des contextes

@translationof Output definitions - blueprints for contexts

Les lignes qui suivent traitent de l’intérêt des définitions de sorties lorsque l’on travaille avec les contextes. Des exemples de définitions seront présentés plus avant – voir Modification de tous les contextes d’un même type.

Alors que la musique écrite dans un fichier fait référence à des types ou noms de contexte, les contextes ne sont effectivement créés que lorsque la musique est interprétée. LilyPond interprète la musique sous le contrôle d’une « définition de sortie », voire différemment selon le cas, et génère ainsi différents résultats. La définition de sortie appropriée pour une sortie imprimable est spécifiée à l’aide d’un \layout.

Une définition de sortie beaucoup plus simple sera utilisée pour produire une sortie MIDI, spécifiée à l’aide d’un \midi. LilyPond utilise en interne plusieurs autres définitions de sortie, notamment dans le cadre du combinateur automatique de parties (voir Regroupement automatique de parties) ou la reproduction d’extraits (voir Citation d’autres voix).

Les définitions de sortie ont pour objet non seulement de définir la relation entre les contextes, mais aussi leurs réglages par défaut. Si la plupart des adaptations prennent habituellement place au sein d’un bloc \layout, les réglages affectant le Midi ne seront effectifs que s’ils interviennent au sein d’un bloc \midi.

Certains réglages affectent plusieurs sorties : par exemple, lorsque autoBeaming est désactivé dans un contexte, les ligatures sont considérées comme marquant un mélisme dans le but de faire correspondre la musique aux paroles comme indiqué dans Durée automatique des syllabes. Cette correspondance est respectée autant à l’écrit qu’à l’oral. Des modifications apportées à autoBeaming par une définition de contexte au sein d’un bloc \layout ne seront pas reportées dans le bloc \midi correspondant ; paroles et musique ne seront alors plus synchrones dans le fichier Midi.

Voir aussi

Fichiers d’initialisation : ‘ly/engraver-init.ly’, ‘ly/performer-init.ly’.


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

Score – le père de tous les contextes

@translationof Score - the master of all contexts

Il s’agit en l’occurrence du contexte le plus élevé, autrement dit le plus important, en matière de notation. En effet, c’est au niveau de la partition – score en anglais – que se gèrent le temps et la tonalité ; c’est donc là qu’il faut s’assurer que les différents éléments, tels les clefs, métriques et armures sont bien répercutés sur toutes les portées.

Dès lors que LilyPond rencontre un bloc \score {…} se crée implicitement un contexte Score.


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

Contextes de haut niveau – les systèmes

@translationof Top-level contexts - staff containers

De nombreuses partitions sont écrites sur plus d’une portée. Ces portées peuvent être regroupées de différentes manières.

StaffGroup

Le groupe de portées est attaché par un crochet et les barres de mesure sont d’un seul tenant, de la première à la dernière portée. Le StaffGroup constitue le regroupement le plus simple.

ChoirStaff

Ce regroupement est identique au StaffGroup, à ceci près que les barres de mesure ne traversent pas l’espace inter-portées.

GrandStaff

Le groupe de portées est attaché par une accolade sur la gauche et les barres de mesure sont d’un seul tenant.

PianoStaff

Ce regroupement est identique au GrandStaff, à ceci près que le nom de l’instrument sera directement attaché au système.


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

Contextes de niveau intermédiaire – les portées

@translationof Intermediate-level contexts - staves

Staff

La portée prend en charge les clefs, barres de mesure, armures et les altérations accidentelles. Un contexte Staff peut contenir plusieurs contextes Voice.

RhythmicStaff

De même nature qu’un Staff, ce contexte est destiné à n’imprimer que du rythme. Quelle que soit la hauteur, les notes seront imprimées sur une même et unique ligne ; la sortie MIDI rendra les hauteurs saisies.

TabStaff

Ce contexte permet de générer des tablatures. La mise en forme par défaut correspond à une tablature pour guitare, sur six lignes.

DrumStaff

Contexte dévolu tout spécialement aux parties de percussion ; il peut contenir plusieurs DrumVoice.

VaticanaStaff

Identique au contexte Staff, à ceci près qu’il est tout particulièrement adapté au grégorien.

MensuralStaff

Identique au contexte Staff, à ceci près qu’il est tout particulièrement adapté au style mensural de musique ancienne.


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

Contextes de bas niveau – les voix

@translationof Bottom-level contexts - voices

Les contextes de niveau « voix » initialisent un certain nombre de propriétés et activent les graveurs appropriés. Un contexte de bas niveau est un contexte n’ayant aucun contexte enfant – ou defaultchild. Bien qu’ils puissent accepter ou contenir des sous-contextes, ceux-ci devront être libellés et créés explicitement.

Voice

Correspond à une voix positionnée sur une portée. Le contexte Voice s’occupe des indications de nuance, des hampes, des ligatures, des scripts placés au-dessus ou au-dessous de la portée, des différentes liaisons et des silences. Lorsque plusieurs voix doivent cohabiter sur la même portée, il est indispensable de les instancier explicitement.

VaticanaVoice

Fonctionnant comme le contexte Voice, il est tout particulièrement destiné à gérer le grégorien.

MensuralVoice

Fonctionnant comme le contexte Voice, il est tout particulièrement adapté aux musiques anciennes.

Lyrics

Correspond à une voix contenant des paroles. Le contexte Lyrics gère l’impression d’une ligne de paroles.

DrumVoice

Contexte de voix dévolu à une portée de percussions.

FiguredBass

Contexte prenant en charge les objets BassFigure – la basse chiffrée – créés à partir de ce qui a été saisi en mode \figuremode.

TabVoice

Contexte de voix dévolu au contexte TabStaff, il est habituellement créé implicitement.

CueVoice

Contexte de voix utilisé essentiellement dans le cadre de citations ajoutées à une portée – voir Mise en forme d’une citation –, il est habituellement créé implicitement.

ChordNames

Permet d’imprimer des noms d’accord.


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

5.1.2 Création et référencement d’un contexte

@translationof Creating and referencing contexts

LilyPond crée automatiquement des contextes de bas niveau lorsque l’expression musicale intervient avant qu’un contexte adéquat n’existe, ce qui peut être pratique dans le cadre d’une partition simple ou de courts fragments tels ceux inclus dans cette documentation. Dès que la structure s’étoffe, il devient nécessaire de créer explicitement tous les contextes, à l’aide des commandes \new ou \context. Leur syntaxe est très similaire :

 
[\new | \context] Contexte [ = nom] [musique]

où peuvent intervenir aussi bien \new que \context. Le Contexte est le nom du contexte à créer, qui éventuellement s’appellera plus particulièrement nom ; il contient l’expression musicale unique musique qui devra être interprétée dans ce contexte par les graveurs ou exécutants.

Le préfixe \new non suivi d’un nom s’utilise principalement pour créer une partition avec plusieurs portées :

 
<<
  \new Staff \relative {
    % leave the Voice context to be created implicitly
    c''4 c
  }
  \new Staff \relative {
    d''4 d
}
>>

[image of music]

et pour regrouper des voix sur une même portée :

 
\new Staff <<
  \new Voice \relative {
    \voiceOne
    c''8 c c4 c c
  }
  \new Voice \relative {
    \voiceTwo
    g'4 g g g
  }
>>

[image of music]

\new est à priviliégier lorsque les contextes ne sont pas nommés.

La différence entre les commandes \new et \context se situe au niveau de leurs effets :

Un contexte auquel il est ultérieurement fait référence doit impérativement être nommé. C’est le cas par exemple lorsque des paroles sont associées à de la musique :

 
\new Voice = "tenor" musique
…
\new Lyrics \lyricsto "tenor" paroles

L’association de paroles à de la musique est abordée en détails à la rubrique Durée automatique des syllabes.

Les propriétés de tous les contextes d’un même type se modifient au sein d’un bloc \layout, selon une syntaxe différente – voir Modification de tous les contextes d’un même type. Une telle construction permet de séparer mise en forme et contenu musical. Lorsque un seul contexte requiert une adaptation, mieux vaut recourir à un bloc \with – voir Modification d’un contexte particulier.

Voir aussi

Manuel d’initiation : (learning)Organisation du code source avec des variables section ‘Organisation du code source avec des variables’ dans Manuel d’initiation.

Manuel de notation : Durée automatique des syllabes, Modification d’un contexte particulier.


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

5.1.3 Conservation d’un contexte

@translationof Keeping contexts alive

En règle générale, un contexte disparaît dès qu’il n’y a plus rien à faire. Autrement dit, un contexte Voice disparaît dès après le dernier événement qu’il contient, et un contexte Staff dès que les contextes Voice qu’il supporte ne contiennent plus rien. Ceci peut avoir des conséquences néfastes lorsqu’il est fait référence à un contexte alors disparu, comme dans le cas d’un changement de portée introduit par la commande \change, l’association de paroles à l’aide de la commande \lyricsto ou si des événements surviennent à nouveau pour ce contexte précédemment actif.

Une exception cependant à cette règle : en présence d’un contexte Staff ou dans une construction << … >>, un seul des contextes Voice inclus restera actif jusqu’à la fin du contexte Staff ou de la construction << … >>, y compris s’il y a des « trous ». Le contexte alors persistant sera le premier rencontré dans la construction { … } sans tenir compte des éventuels << … >> qu’elle pourrait contenir.

Un contexte restera actif dès lors qu’il s’y passera toujours quelque chose. Un contexte Staff restera actif si l’une des voix qu’il supporte est toujours active. L’un des moyens de s’en assurer consiste à ajouter des silences invisibles parallèlement à la musique. Vous devrez les ajouter dans tous les contextes Voice qui doivent rester actifs. Nous vous conseillons, lorsque plusieurs voix interviennent de manière sporadique, de toutes les maintenir actives plutôt que de vous fier aux exceptions mentionnées plus haut.

Dans l’exemple suivant, les deux voix A et B sont maintenues actives jusqu’à la fin du morceau :

 
musicA = \relative { d''4 d d d }
musicB = \relative { g'4 g g g }
keepVoicesAlive = {
  <<
    \new Voice = "A" { s1*5 }  % Keep Voice "A" alive for 5 bars
    \new Voice = "B" { s1*5 }  % Keep Voice "B" alive for 5 bars
  >>
}

music = {
  \context Voice = "A" {
    \voiceOneStyle
    \musicA
  }
  \context Voice = "B" {
    \voiceTwoStyle
    \musicB
  }
  \context Voice = "A" { \musicA }
  \context Voice = "B" { \musicB }
  \context Voice = "A" { \musicA }
}

\score {
  \new Staff <<
    \keepVoicesAlive
    \music
  >>
}

[image of music]

L’exemple suivant illustre la manière d’écrire selon cette méthode une mélodie discontinue à laquelle se rattachent des paroles. Dans la réalité, mélodie et accompagnement feraient l’objet de portées séparées.

 
melody = \relative { a'4 a a a }
accompaniment = \relative { d'4 d d d }
words = \lyricmode { These words fol -- low the mel -- o -- dy }
\score {
  <<
    \new Staff = "music" {
      <<
        \new Voice = "melody" {
          \voiceOne
          s1*4  % Keep Voice "melody" alive for 4 bars
        }
        {
          \new Voice = "accompaniment" {
            \voiceTwo
            \accompaniment
          }
          <<
            \context Voice = "melody" { \melody }
            \context Voice = "accompaniment" { \accompaniment }
          >>
          \context Voice = "accompaniment" { \accompaniment }
          <<
            \context Voice = "melody" { \melody }
            \context Voice = "accompaniment" { \accompaniment }
          >>
        }
      >>
    }
    \new Lyrics \with { alignAboveContext = "music" }
    \lyricsto "melody" { \words }
  >>
}

[image of music]

Une autre méthode, qui s’avère plus productive dans nombre de cas, consiste à maintenir active la ligne mélodique en y insérant des silences invisibles tout au long de l’accompagnement :

 
melody = \relative {
  s1  % skip a bar
  a'4 a a a
  s1  % skip a bar
  a4 a a a
}
accompaniment = \relative {
  d'4 d d d
  d4 d d d
  d4 d d d
  d4 d d d
}
words = \lyricmode { These words fol -- low the mel -- o -- dy }

\score {
  <<
    \new Staff = "music" {
      <<
        \new Voice = "melody" {
          \voiceOne
          \melody
        }
        \new Voice = "accompaniment" {
          \voiceTwo
          \accompaniment
        }
      >>
    }
    \new Lyrics \with { alignAboveContext = "music" }
    \lyricsto "melody" { \words }
  >>
}

[image of music]


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

5.1.4 Modification des greffons de contexte

@translationof Modifying context plug-ins

Les contextes, tels que Score ou Staff, ne contiennent pas que des propriétés ; ils mettent également en œuvre certains sous-programmes (plug-ins pour employer le terme consacré) nommés « graveurs » (engravers pour reprendre le terme anglais). Ces sous-programmes sont chargés de créer les différents éléments de notation : on trouve ainsi dans le contexte Voice un graveur Note_heads_engraver, chargé des têtes de notes et, dans le contexte Staff, un graveur Key_engraver, chargé de l’armure.

Vous trouverez une description exhaustive de chaque graveur dans (internals)Engravers and Performers section ‘Engravers and Performers’ dans Référence des propriétés internes. Chaque contexte mentionné dans (internals)Contexts section ‘Contexts’ dans Référence des propriétés internes répertorie les graveurs mis en œuvre.

On peut faire, au moyen de ces graveurs, sa propre « cuisine », en modifiant les contextes à volonté.

Lorsqu’un contexte est créé, par la commande \new ou \context, on peut y adjoindre un bloc \with (en anglais « avec »), dans lequel il est possible d’ajouter (commande \consists) ou d’enlever (commande \remove) des graveurs :

 
\new contexte \with {
  \consists …
  \consists …
  \remove …
  \remove …
  etc.
}
{
  …musique…
}

Ici chacun des points de suspension … devront être remplacés par le nom des graveurs désirés. Dans l’exemple suivant, on enlève du contexte Staff la métrique (graveur Time_signature_engraver) et la clef (graveur Clef_engraver).

 
<<
  \new Staff \relative {
    f'2 g
  }
  \new Staff \with {
     \remove "Time_signature_engraver"
     \remove "Clef_engraver"
  } \relative {
    f'2 g2
  }
>>

[image of music]

La clef et le chiffre de mesure ont disparu de la deuxième portée. C’est une méthode quelque peu radicale puisqu’elle affectera toute la portée jusqu’à la fin de la partition. L’espacement s’en trouve également affecté, ce qui peut être ou non l’effet recherché. Une méthode plus sophistiquée aurait été de rendre ces objets transparents (voir (learning)Visibilité et couleur des objets section ‘Visibilité et couleur des objets’ dans Manuel d’initiation).

Dans l’exemple suivant, voici une mise en pratique plus utile. En temps normal, les barres de mesure et la métrique sont synchronisées verticalement dans toute la partition. Les graveurs qui en sont responsables se nomment Timing_translator et Default_bar_line_engraver. En les enlevant du contexte Score pour les attribuer au contexte Staff, chaque portée peut désormais avoir sa propre métrique.

 
\score {
  <<
    \new Staff \with {
      \consists "Timing_translator"
      \consists "Default_bar_line_engraver"
    }
    \relative {
        \time 3/4
        c''4 c c c c c
    }
  \new Staff \with {
    \consists "Timing_translator"
    \consists "Default_bar_line_engraver"
  }
  \relative {
      \time 2/4
      c''4 c c c c c
  }
>>
\layout {
  \context {
    \Score
    \remove "Timing_translator"
    \remove "Default_bar_line_engraver"
    }
  }
}

[image of music]

Problèmes connus et avertissements

L’ordre dans lequel les graveurs sont spécifiés correspond à leur ordre d’apparition dans le processus d’élaboration de la partition. En règle générale, l’ordre dans lequel les graveurs sont mentionnés importe peu. Il se peut toutefois qu’un graveur écrive une propriété qui sera interprétée par un autre, ou qu’un graveur crée un objet graphique qui sera traité par un autre ; l’ordre d’apparition de ces graveurs prendra alors toute son importance.

Pour information, les ordonnancements suivants sont importants :

Voir aussi

Fichiers d’initialisation : ‘ly/engraver-init.ly’.


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

5.1.5 Modification des réglages par défaut d’un contexte

@translationof Changing context default settings

Les propriétés des contextes et objets graphiques se modifient à l’aide des commandes \set et \override, comme indiqué à la rubrique Modification de propriétés. Ces commandes créent des événements musicaux qui feront que la modification produira ses effets dès l’instant où la musique est traitée.

Le propos est ici de voir comment modifier les valeurs par défaut des propriétés de contexte ou d’objet graphique dès la création de ces contextes. Deux manières de procéder sont envisageables : l’une consiste à modifier les valeurs pour tous les contextes d’un même type, l’autre s’attache à adapter les valeurs par défaut d’une instance particulière d’un contexte.


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

Modification de tous les contextes d’un même type

@translationof Changing all contexts of the same type

L’adaptation des réglages par défaut d’un contexte, qu’il s’agisse de Score, Staff ou Voice, peut se réaliser indépendamment de la musique dans un bloc \layout – placé dans le bloc \score auquel ces modifications doivent s’appliquer – au moyen d’un bloc \context.

Les réglages dévolus à la sortie MIDI viendront quant à eux se placer dans un bloc \midi – voir Définitions de la sortie – hiérarchie des contextes.

 
\layout {
  \context {
    \Voice
    [réglage de contexte pour tous les contextes Voice]
  }
  \context {
    \Staff
    [réglage de contexte pour tous les contextes Staff]
  }
}

La spécification des adaptations peut se faire de différentes manières :

Les instructions destinées à modifier les propriétés peuvent se placer dans un bloc \layout sans pour autant être incluses dans un bloc \context. Expliciter des réglages de la sorte équivaut à inclure les commandes de modification des propriétés au début de chacun des contextes du type en question. Lorsque le contexte n’est pas spécifié, tous les contextes de bas niveau seront affectés – voir Contextes de bas niveau – les voix. La syntaxe appropriée répond aux mêmes critères que si la commande était écrite dans le flot musical.

 
\score {
  \new Staff {
    \relative {
      a'4^"Petite police" a a a
      a4 a a a
    }
  }
  \layout {
    \accidentalStyle dodecaphonic
    \set fontSize = #-4
    \override Voice.Stem.thickness = #4.0
  }
}

[image of music]


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

Modification d’un contexte particulier

@translationof Changing just one specific context

Dans le cas d’un contexte pris individuellement, ses propriétés se modifient à l’aide d’un bloc \with. Toutes les autres instances de contexte appartenant au même type seront affectées des réglages prédéfinis par LilyPond, modifiés le cas échéant au sein d’un bloc \layout. Le bloc \with se place directement à la suite de la commande \new type-de-contexte.

 
\new Staff \with { [réglages pour ce contexte pris individuellement] }
{
  …
}

De la même manière, si la musique est saisie à la suite d’une commande abrégée, telle que \chords au lieu de \chordmode, l’instruction \with viendra se placer juste après la commande spécifiant le mode :

 
\chords \with { [réglages pour ce contexte (implicite) pris individuellement] }
{
  …
}

puisque c’est le contexte implicite alors créé qui devra être modifié. Cette manière de procéder s’applique à toutes les autres formes abrégées de spécification du mode de saisie (\drums, \figures) – voir Modes de saisie.

Dans la mesure où une telle « modification de contexte » est spécifiée au sein même de la musique, ses effets toucheront toutes les sorties (imprimable et Midi), contrairement à ce qui se passe lorsque les adaptations sont réalisées dans la définition d’une sortie.

La spécification des adaptations peut se faire de différentes manières :

Voir aussi

Manuel de notation : Modes de saisie.


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

Ordre de préséance

@translationof Order of precedence

La valeur d’une propriété qui doit s’appliquer à un instant particulier est déterminée comme suit :

Voir aussi

Manuel d’initiation : (learning)Modification des propriétés d’un contexte section ‘Modification des propriétés d'un contexte’ dans Manuel d’initiation.

Manuel de notation : Contextes de bas niveau – les voix, La commande de dérogation \override, La commande de fixation \set, Le bloc \layout, Tout savoir sur les contextes.


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

5.1.6 Définition de nouveaux contextes

@translationof Defining new contexts

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.

[image of music]

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 à un contexte 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 ainsi que celui dévolu au regroupement sous forme de colonne des notes, hampes et silences qui interviennent au même moment musical :

 
\consists "Note_heads_engraver"
\consists "Text_engraver"
\consists "Rhythmic_column_engraver"

Toutes les notes devraient s’afficher 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
\hide Stem

Tous ces modules doivent communiquer sous le contrôle du contexte. Les mécanismes permettant aux contextes de communiquer sont établis dès lors que le mot-clé \type précède le contexte. La plupart des contextes mentionnés au sein d’un bloc \layout seront de type Engraver_group. Certains contextes spécifiques, ainsi que ceux mentionnés dans les blocs \midi, reposent sur d’autres types de contexte. Recopier un contexte préexistant pour en modifier la définition lui affecte le type adéquat. Dans la mesure où notre exemple consiste à créer une définition de toute pièce, son type doit être explicitement spécifié.

 
\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 "Rhythmic_column_engraver"
  \consists "Pitch_squash_engraver"
  squashedPosition = #0
  \override NoteHead.style = #'slash
  \hide Stem
  \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 la définition du 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 ceci :

 
\layout {
  \context {
    \name ImproVoice
    …
  }
  \context {
    \Staff
    \accepts "ImproVoice"
  }
}

On peut alors saisir la musique, comme dans l’exemple plus haut :

 
\relative {
  a'4 d8 bes8
  \new ImproVoice {
    c4^"ad lib" c
    c4 c^"dévêtez-vous"
    c c_"tout en jouant :)"
  }
  a1
}

Pour être tout à fait complet, les modifications apportée à la hiérarchie des contextes devraient être répétés au niveau du bloc \midi de telle sorte que la sortie Midi dépende des mêmes relations.

Voir aussi

Référence des propriétés internes : (internals)Note_heads_engraver section ‘Note_heads_engraver’ dans Référence des propriétés internes, (internals)Pitch_squash_engraver section ‘Pitch_squash_engraver’ dans Référence des propriétés internes, (internals)Rhythmic_column_engraver section ‘Rhythmic_column_engraver’ dans Référence des propriétés internes, (internals)Text_engraver section ‘Text_engraver’ dans Référence des propriétés internes.


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

5.1.7 Ordonnancement des contextes

@translationof Context layout order

Les contextes viennent en principe se positionner selon leur ordre d’apparition dans le fichier source. Lorsque plusieurs contextes sont imbriqués, le contexte englobant supportera les différents contextes mentionnés dans le fichier source, à la stricte condition qu’ils soient dûment « agréés ». Les contextes imbriqués qui ne font pas partie de la « liste d’agréments » du contexte englobant se retrouveront en dessous de celui-ci au lieu d’y être imbriqués.

La liste des « agréments » d’un contexte se gère à l’aide des instructions \accepts ou \denies – \accepts pour ajouter un contexte à la liste, \denies pour retirer l’agrément.

Par exemple, on ne trouve normalement pas de portées regroupées par un crochet au sein d’un groupe matérialisé par une accolade et des barres d’un seul tenant ; un GrandStaff n’accepte donc pas, par défaut, d’englober un StaffGroup.

 
\score {
  \new GrandStaff <<
    \new StaffGroup <<
      \new Staff { c'1 }
      \new Staff { d'1 }
    >>
    \new Staff { \set Staff.instrumentName = bottom f'1 }
  >>
}

[image of music]

Néanmoins, et grâce à une instruction \accepts, un StaffGroup peut se voir ajouté au contexte GrandStaff :

 
\score {
  \new GrandStaff <<
    \new StaffGroup <<
      \new Staff { c'1 }
      \new Staff { d'1 }
    >>
    \new Staff { \set Staff.instrumentName = bottom f'1 }
  >>
  \layout {
    \context {
      \GrandStaff
      \accepts "StaffGroup"
    }
  }
}

[image of music]

L’instruction \denies permet, lorsqu’un nouveau contexte reprend les définitions d’un contexte existant, d’en ajuster les composantes. C’est par exemple le cas du contexte VaticanaStaff, réplique du contexte Staff, au sein duquel le contexte VaticanaVoice se substitue au contexte Voice dans la « liste d’agrément ».

Gardez à l’esprit que, face à une instruction qui ne s’appliquerait à aucun contexte déjà existant, LilyPond créera un nouveau contexte implicite.

Lors de la définition d’un contexte, les types de contextes sous-jacents susceptibles d’être créés implicitement sont spécifiés à l’aide d’une commande \defaultchild. Un certain nombre d’événements musicaux requièrent un contexte de plus bas niveau ; face à un tel événement, LilyPond crée autant de « sous-contextes » que nécessaire, jusqu’au contexte ne comportant aucun defaultchild.

La création implicite de contexte peut donc finir par engendrer de manière intempestive une nouvelle portée ou une autre partition. L’utilisation d’une instruction \new pour créer explicitement des contextes permet d’éviter ces problèmes.

Il arrive qu’un contexte ne doive exister que pendant un court instant, ce qui est le cas par exemple pour une ossia. Le plus simple consiste alors à initialiser la définition d’un contexte à l’endroit approprié, en parallèle avec le fragment correspondant dans la musique principale. Ce contexte temporaire sera par défaut positionné sous les autres contextes existants. Le repositionner au-dessus du contexte « principal » demande de le définir ainsi :

 
\new Staff \with { alignAboveContext = "principal" }

Il en va de même pour les contextes temporaires de paroles au sein d’un système à plusieurs portées comme un ChoirStaff lorsque, par exemple, un couplet supplémentaire apparaît à l’occasion d’une reprise. Ce contexte de paroles temporaire se place par défaut sous les portées inférieures. Lui adjoindre une instruction alignBelowContext dès son initialisation permet de l’accoler au contexte de paroles (nommé) qui contient le premier couplet.

Des exemples de repositionnement de contexte temporaire sont disponibles aux rubriques (learning)Expressions musicales imbriquées section ‘Expressions musicales imbriquées’ dans Manuel d’initiation, Modification de portées individuelles et Situations particulières en matière de paroles.

Voir aussi

Manuel d’initiation : (learning)Expressions musicales imbriquées section ‘Expressions musicales imbriquées’ dans Manuel d’initiation.

Manuel de notation : Modification de portées individuelles, Situations particulières en matière de paroles.

Manuel d’utilisation : (usage)Apparition d’une portée supplémentaire section ‘Apparition d'une portée supplémentaire’ dans Utilisation des programmes.

Fichiers d’initialisation : ‘ly/engraver-init.ly’.


[ < ] [ > ]   [ << ] [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à, deutsch, español, italiano, 日本語.
À propos de la sélection automatique de la langue.