@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
+
@ignore
- Translation of GIT committish: 0
+ Translation of GIT committish: 58aaa226bb22be92f59fec8da680d135666222cc
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.17.6"
+@c \version "2.17.18"
@c Translators: Valentin Villenave, Jean-Charles Malahieude
@c Translation checkers: Gilles Thibault
@section Contextes d'interprétation
@translationof Interpretation contexts
-Cette section traite des contextes.
+Nous allons voir ici ce que sont les contextes et comment les modifier.
@menu
* Tout savoir sur les contextes::
-* Création d'un contexte::
+* Création et référencement d'un contexte::
* Conservation d'un contexte::
* Modification des greffons de contexte::
* Modification des réglages par défaut d'un contexte::
I knew it would... And leaving out some of them is perfectly fine
with me.
I do think that a list like this, with the main contexts and a
-brief
-description of what they do (perhaps also with a note about what
-default
-behavior is associated with each of them, but this may be
-unmanageable),
-should be there, and then we could simply list the remaining ones
-without
-further explanation and with links to the IR.
+brief description of what they do (perhaps also with a note about what
+default behavior is associated with each of them, but this may be
+unmanageable), should be there, and then we could simply list the
+remaining ones without further explanation and with links to the IR.
@end ignore
@c TODO Improve layout, order and consistency of wording -td
@unnumberedsubsubsec Contextes de bas niveau -- les voix
@translationof Bottom-level contexts - voices
-Les contextes de niveau @qq{voix} initialisent un certain nombre de
-propriétés et activent les graveurs appropriés. S'agissant de contextes
-du plus bas niveau, ils ne sauraient contenir d'autre contexte.
+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
+@code{defaultchild}. Bien qu'ils puissent accepter ou contenir des
+sous-contextes, ceux-ci devront être libellés et créés explicitement.
@strong{@emph{Voice}}
@end ignore
-@node Création d'un contexte
-@subsection Création d'un contexte
-@translationof Creating contexts
-
-@c TODO more complete descriptions rather than learning style
-
-Lorsqu'une partition ne comporte qu'une portée avec une seule voix, les
-contextes sont créés automatiquement. Dès que la structure s'étoffe, il
-devient nécessaire de les créer explicitement, en suivant l'une des
-trois méthodes suivantes :
-
-@itemize
+@node Création et référencement d'un contexte
+@subsection Création et référencement d'un contexte
+@translationof Creating and referencing contexts
-@item
-La commande la plus simple à utiliser est @code{\new} ; c'est aussi
-la plus courte. Elle se place juste avant une expression musicale et se
-libelle ainsi :
+@cindex contexte, création
+@cindex contexte, référencement
@funindex \new
-@cindex nouveau contexte
-@cindex contexte, création
+@funindex \context
+
+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 @code{\new} ou @code{\context}.
+Leur syntaxe est très similaire :
@example
-\new @var{type} @var{expression_musicale}
+[\new | \context] @var{Contexte} [ = @var{nom}] [@var{musique}]
@end example
@noindent
-où @var{type} est le nom d'un contexte (par ex. @code{Staff} ou
-@code{Voice}). Cette commande crée un nouveau contexte et y interprète
-le contenu de l'@var{expression_musicale}.
+où peuvent intervenir aussi bien @code{\new} que @code{\context}.
+Le @var{Contexte} est le nom du contexte à créer, qui éventuellement
+s'appellera plus particulièrement @var{nom} ; il contient l'expression
+musicale unique @var{musique} qui devra être interprétée dans ce
+contexte par les graveurs ou exécutants.
-C'est ce qui se passe lorsqu'une partition comporte plusieurs portées :
-chaque partie qui doit apparaître sur une portée spécifique est précédée
-d'un @code{\new Staff}.
+Le préfixe @code{\new} non suivi d'un nom s'utilise principalement pour
+créer une partition avec plusieurs portées :
-@lilypond[quote,verbatim,relative=2,ragged-right]
+@lilypond[quote,verbatim,relative=2]
<<
- \new Staff { c4 c }
- \new Staff { d4 d }
+ \new Staff {
+ % leave the Voice context to be created implicitly
+ c4 c
+ }
+ \new Staff {
+ d4 d
+ }
>>
@end lilypond
-La commande @code{\new} vous permet aussi d'attribuer un nom au
-contexte que vous créez.
-
-@example
-\new @var{type} = @var{nom} @var{musique}
-@end example
-Le nom que vous spécifiez ne pourra être utilisé que s'il n'a pas déjà
-été attribué à un autre contexte.
+@noindent
+et pour regrouper des voix sur une même portée :
-@funindex \context
-@item
-Tout comme @code{\new}, la commande @code{\context} affectera une
-expression musicale à un objet contextuel ; elle lui attribuera de
-surcroît un nom. La commande @code{\context} s'emploie de la façon
-suivante :
+@lilypond[quote,verbatim,relative=2]
+<<
+ \new Staff <<
+ \new Voice {
+ \voiceOne
+ c8 c c4 c c
+ }
+ \new Voice {
+ \voiceTwo
+ g4 g g g
+ }
+ >>
+>>
+@end lilypond
-@example
-\context @var{type} = @var{nom} @var{musique}
-@end example
+@noindent
+@code{\new} est à priviliégier lorsque les contextes ne sont pas nommés.
-LilyPond va dans un premier temps vérifier l'existence d'un contexte du
-type @var{type} appelé @var{nom}. En l'absence d'un tel contexte,
-LilyPond crée un nouveau contexte du nom que vous avez spécifié. Cette
-procédure est tout à fait pertinente lorsque vous faites appel à ce
-contexte particulier par la suite. Prenons le cas d'un chant :
-nous commençons par nommer la ligne mélodique,
+La différence entre les commandes @code{\new} et @code{\context} se
+situe au niveau de leurs effets :
-@example
-\context Voice = "@b{tenor}" @var{musique}
-@end example
+@itemize
+@item
+La commande @code{\new}, suivie ou non d'un nom, crée un tout
+nouveau contexte même s'il en existe déjà un portant le même nom :
-@noindent
-de telle sorte que le texte s'aligne correctement sur les notes :
+@lilypond[quote,verbatim,relative=2]
+<<
+ \new Staff <<
+ \new Voice = "A" {
+ \voiceOne
+ c8 c c4 c c
+ }
+ \new Voice = "A" {
+ \voiceTwo
+ g4 g g g
+ }
+ >>
+>>
+@end lilypond
-@example
-\new Lyrics \lyricsto "@b{tenor}" @var{paroles}
-@end example
+@item
+La commande @code{\context} avec nommage créera un contexte distinct
+uniquement dans le cas où ne préexiste aucun contexte du même nom dans
+la même hiérarchie de contextes. Dans le cas contraire, il servira de
+référence au contexte précédemment créé, et son expression musicale sera
+transmise dans ce contexte pour interprétation.
-@noindent
+Cette procédure est tout à fait pertinente lorsque l'on sépare mise en
+forme de la partition et contenu musical. Les deux formulations
+ci-après sont tout à fait valides :
-L'une des autres utilisations de contextes explicitement nommés consiste
-à fusionner deux expressions musicales dans un même contexte. Dans
-l'exemple qui suit, notes et articulations sont saisies indépendamment.
+@lilypond[quote,verbatim]
+\score {
+ <<
+ % score layout
+ \new Staff <<
+ \new Voice = "one" {
+ \voiceOne
+ }
+ \new Voice = "two" {
+ \voiceTwo
+ }
+ >>
-@example
-music = @{ c4 c4 @}
-arts = @{ s4-. s4-> @}
-@end example
+ % musical content
+ \context Voice = "one" {
+ \relative c'' {
+ c4 c c c
+ }
+ }
+ \context Voice = "two" {
+ \relative c'' {
+ g8 g g4 g g
+ }
+ }
+ >>
+}
+@end lilypond
-Elles sont ensuite fusionnées par affectation au même contexte
-@code{Voice} :
+@lilypond[quote,verbatim]
+\score {
+ <<
+ % score layout
+ \new Staff <<
+ \context Voice = "one" {
+ \voiceOne
+ }
+ \context Voice = "two" {
+ \voiceTwo
+ }
+ >>
-@example
-<<
- \new Staff \context Voice = "A" \music
- \context Voice = "A" \arts
->>
-@end example
-@lilypond[quote,ragged-right]
-music = { c4 c4 }
-arts = { s4-. s4-> }
-\relative c'' <<
- \new Staff \context Voice = "A" \music
- \context Voice = "A" \arts
->>
+ % musical content
+ \context Voice = "one" {
+ \relative c'' {
+ c4 c c c
+ }
+ }
+ \context Voice = "two" {
+ \relative c'' {
+ g8 g g4 g g
+ }
+ }
+ >>
+}
@end lilypond
-Grâce à ce mécanisme, vous pouvez tout à fait générer une version
-@qq{Urtext} (édition originale) et optionnellement ajouter distinctement
-des articulations à ces mêmes notes.
-
-@cindex création de contextes
+@noindent
+Par ailleurs, le recours à des variables produira les mêmes effets --
+voir @rlearning{Organisation du code source avec des variables}.
@item
-Voici une troisième manière de créer un contexte :
+La commande @code{\context} utilisée sans nommage recherchera le premier
+de tous les contextes du même type précédemment créés dans la même
+hiérarchie de contextes ; l'expression musicale lui sera alors transmise
+pour interprétation. Bien que rarement utilisée, cette formulation de
+@code{\context} sans nommage ni expression musicale permet de définir le
+contexte dans lequel une procédure Scheme comportant une clause
+@code{\applyContext} devra s'exécuter.
@example
-\context @var{type} @var{musique}
+\new Staff \relative c' @{
+ c1
+ \context Timing
+ \applyContext #(lambda (ctx)
+ (newline)
+ (display (ly:context-current-moment ctx)))
+ c1
+@}
@end example
-@noindent
-Très comparable à une déclaration @code{\context = @var{nom}},
-cette méthode permet de s'affranchir du type de contexte.
+@end itemize
-Cette variante s'utilise lorsque les expression musicales peuvent être
-interprétées à différents niveaux, comme par exemple lorsque intervient
-la commande @code{\applyOutput} -- pour de plus amples détails, voir
-@rextend{Application d'une fonction à tous les objets de mise en forme}.
-En l'absence de @code{\context} explicite, LilyPond considère qu'il
-s'agit de @code{Voice}.
+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 :
@example
-\applyOutput #'@var{contexte} #@var{fonction} % s'applique à Voice
+\new Voice = "tenor" @var{musique}
+...
+\new Lyrics \lyricsto "tenor" @var{paroles}
@end example
-Vous devrez respecter ces formulations si la fonction doit
-s'interpréter au niveau @code{Score} ou @code{Staff} :
+@noindent
+L'association de paroles à de la musique est abordée en détails à la
+rubrique @ref{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 @code{\layout}, selon une syntaxe différente -- voir
+@ref{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 @code{\with} -- voir
+@ref{Modification d'un contexte particulier}.
-@example
-\applyOutput #'Score #@var{fonction}
-\applyOutput #'Staff #@var{fonction}
-@end example
+@seealso
-@end itemize
+Manuel d'initiation :
+@rlearning{Organisation du code source avec des variables}.
+
+Manuel de notation :
+@ref{Modification d'un contexte particulier},
+@ref{Durée automatique des syllabes}.
@node Conservation d'un contexte
@item
à l'aide d'une variable personnalisée contenant un bloc @code{\with} :
-pour de plus amples iformations sur le bloc @code{\with}, voir
+pour de plus amples informations sur le bloc @code{\with}, voir
@ref{Modification d'un contexte particulier}.
@c KEEP LY
Dans le cas d'un contexte pris individuellement, ses propriétés se
modifient à l'aide d'un bloc @code{\with}. Toutes les autres instances
-de contexte appartenant au même type seront affectés des réglages
+de contexte appartenant au même type seront affectées des réglages
prédéfinis par LilyPond, modifiés le cas échéant par un bloc
@code{\layout}. Le bloc @code{\with} se place directement à la suite de
la commande @code{\new} @var{type-de-contexte}.
\name ImproVoice
@end example
-Comme il est très semblable à @code{Voice}, nous souhaitons que
-toutes les commandes associées au @code{Voice} déjà existant restent
-valables. D'où nécessité de la commande @code{\alias}, qui va
-l'associer au contexte @code{Voice} :
+Comme il est très semblable à un contexte @code{Voice}, nous
+souhaitons que toutes les commandes associées au @code{Voice} déjà
+existant restent valables. D'où nécessité de la commande
+@code{\alias}, qui va l'associer au contexte @code{Voice} :
@example
\alias Voice
@end example
Ce contexte doit pouvoir imprimer des notes et des indications
-textuelles ; on ajoute donc les graveurs appropriés :
+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 :
@example
\consists "Note_heads_engraver"
\consists "Text_engraver"
+\consists "Rhythmic_column_engraver"
@end example
-Cependant, on veut que les notes s'affichent toutes au centre de
-la portée :
+Toutes les notes devraient s'afficher au centre de la portée :
@example
\consists "Pitch_squash_engraver"
squashedPosition = #0
@end example
-Le graveur @rinternals{Pitch_squash_engraver} intercepte les notes
-créées par le @rinternals{Note_heads_engraver}, et les @qq{écrase} pour
-qu'elles aient toutes la même position verticale, définie par
-@code{squashedPosition} : ici il s'agit de la valeur @code{0},
-c'est-à-dire la ligne du milieu.
+Le graveur @code{Pitch_squash_engraver} intercepte les notes créées par
+le @code{Note_heads_engraver}, et les « écrase » pour qu'elles aient
+toutes la même position verticale, définie par @code{squashedPosition} :
+ici il s'agit de la valeur @code{0}, c'est-à-dire la ligne du milieu.
On veut que les notes aient la forme d'une barre oblique, sans
aucune hampe :
\type "Engraver_group"
\consists "Note_heads_engraver"
\consists "Text_engraver"
+ \consists "Rhythmic_column_engraver"
\consists "Pitch_squash_engraver"
squashedPosition = #0
\override NoteHead.style = #'slash
Ce n'est pas tout. En effet, on veut intégrer le nouveau contexte
@code{ImproVoice} dans la hiérarchie des contextes. Tout comme le
contexte @code{Voice}, sa place est au sein du contexte @code{Staff}.
-Nous allons donc modifier le contexte @code{Staff},
+Nous allons donc modifier la définition du contexte @code{Staff},
au moyen de la commande @code{\accepts} :
@example
@}
@end example
+@seealso
+
+Référence des propriétés internes :
+@rinternals{Engraver_group},
+@rinternals{Note_heads_engraver},
+@rinternals{Text_engraver},
+@rinternals{Rhythmic_column_engraver},
+@rinternals{Pitch_squash_engraver}.
+
@node Ordonnancement des contextes
@subsection Ordonnancement des contextes
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 @qq{agréés}. Les contextes imbriqués qui ne font pas partie de
-la @qq{liste d'agréments} du contexte englobant se retrouveront en
+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 @qq{agréments} d'un contexte se gère à l'aide des
+La liste des « agréments » d'un contexte se gère à l'aide des
instructions @code{\accepts} et @code{\denies} -- @code{\accepts} pour
ajouter un contexte à la liste, et @code{\denies} pour retirer
l'agrément. Il est par exemple peu conventionnel que les accords nommés
-apparaissent dans un contexte @code{Staff} ; autrement dit, le
-contexte @code{ChordNames} ne fait pas partie de la @qq{liste
-d'agréments} du contexte @code{Staff} par défaut. Néanmoins, et s'il
-devait en être ainsi, vous pourriez le spécifier.
+apparaissent dans un contexte @code{Staff} ; autrement dit, le contexte
+@code{ChordNames} ne fait pas partie de la « liste d'agréments » du
+contexte @code{Staff} par défaut. Néanmoins, et s'il devait en être
+ainsi, vous pourriez le spécifier.
@lilypond[verbatim,quote]
\score {
les définitions d'un contexte existant, d'en ajuster les composantes.
C'est par exemple le cas du contexte @code{VaticanaStaff}, réplique du
contexte @code{Staff} au sein duquel le contexte @code{VaticanaVoice} se
-substitue au contexte @code{Voice} dans la @qq{liste d'agrément}.
+substitue au contexte @code{Voice} dans la « liste d'agrément ».
+
+@cindex contextes implicites
+@cindex implicites, contextes
+@funindex \defaultchild
Gardez à l'esprit que, face à une instruction qui ne s'appliquerait à
aucun contexte déjà existant, LilyPond créera un nouveau contexte
-implicite. Ceci peut engendrer une nouvelle portée ou une autre
-partition.
+implicite.
+
+Lors de la définition d'un contexte, les types de contextes
+sous-jascents susceptibles d'être créés implicitement sont spécifiés à
+l'aide d'une commande @code{\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 @emph{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 @code{\new} pour créer explicitement des
+contextes permet d'éviter ces problèmes.
@cindex alignAboveContext
@cindex alignBelowContext
Il en va de même pour les contextes temporaires de paroles au sein d'un
système à plusieurs portées comme un @code{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
-@code{alignBelowContext} dès son initialisation permet de l'accoler au
-contexte de paroles (nommé) qui contient le premier couplet.
+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 @code{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 @rlearning{Expressions musicales imbriquées},
@cindex interfaces de rendu
@cindex rendu, interfaces de
@cindex objets graphiques
+@cindex grob
Tous les éléments de notation sont considérés comme des objets
graphiques (en anglais @emph{Graphical Object}, d'où le diminutif
@item @code{KeySignature} @tab @code{Staff} @tab @code{begin-of-line-visible}
@c omit LeftEdge until it can be explained -td
@c @item @code{LeftEdge} @tab @code{Score} @tab @code{center-invisible}
-@item @code{OctavateEight} @tab @code{Staff} @tab @code{begin-of-line-visible}
+@item @code{ClefModifier} @tab @code{Staff} @tab @code{begin-of-line-visible}
@item @code{RehearsalMark} @tab @code{Score} @tab @code{end-of-line-invisible}
@item @code{TimeSignature} @tab @code{Staff} @tab @code{all-visible}
@cindex clef, visibilité de l'octaviation
L'indication d'octaviation d'une clef est produite par l'objet de rendu
-@code{OctavateEight}. Sa visibilité étant gérée par héritage direct de
+@code{ClefModifier}. Sa visibilité étant gérée par héritage direct de
l'objet @code{Clef}, nul n'est besoin de forcer un quelconque
-@code{break-visibility} au niveau des objets @code{OctavateEight} pour
+@code{break-visibility} au niveau des objets @code{ClefModifier} pour
éliminer une indication d'octaviation lorsque la clef est invisible.
Lors d'un changement explicite de clef, la propriété
@code{custos}, @code{staff-bar}, @code{left-edge},
@code{key-cancellation}, @code{key-signature}, et @code{time-signature}.
-Ces indications et numéros de mesure sont par défaut centrés
-horizontalement au-dessus de l'objet :
+Chaque objet possède son propre point de référence par défaut, sur
+lequel viendra s'aligner les indications de repère :
@lilypond[verbatim,quote,relative=1]
-% The rehearsal mark will be centered above the Clef
+% The rehearsal mark will be aligned to right edge of the Clef
\override Score.RehearsalMark.break-align-symbols = #'(clef)
\key a \major
\clef treble
de mesure est invisible, à l'endroit même où la barre prendrait place.
@lilypond[verbatim,quote,relative=1]
-% The rehearsal mark will be centered above the Key Signature
+% The rehearsal mark will be aligned to the right edge of the Key Signature
\override Score.RehearsalMark.break-align-symbols = #'(key-signature clef)
\key a \major
\clef treble
\mark "↓"
e1
-% The rehearsal mark will be centered above the Clef
+% The rehearsal mark will be aligned to the right edge of the Clef
\set Staff.explicitKeySignatureVisibility = #all-invisible
\override Score.RehearsalMark.break-align-symbols = #'(key-signature clef)
\key a \major
plusieurs portées, ce réglage devra apparaître dans chacune des portées.
@lilypond[verbatim,quote,relative=1]
-% The RehearsalMark will be centered above the Key Signature
+% The RehearsalMark will be aligned with the right edge of the Key Signature
\override Score.RehearsalMark.break-align-symbols = #'(key-signature)
\key a \major
\clef treble
\time 4/4
\mark "↓"
e1
-% The RehearsalMark will be aligned with the left edge of the Key Signature
-\once \override Score.KeySignature.break-align-anchor-alignment = #LEFT
+% The RehearsalMark will be centered above the Key Signature
+\once \override Score.KeySignature.break-align-anchor-alignment = #CENTER
\mark "↓"
\key a \major
e1
-% The RehearsalMark will be aligned with the right edge of the Key Signature
-\once \override Score.KeySignature.break-align-anchor-alignment = #RIGHT
+% The RehearsalMark will be aligned with the left edge of the Key Signature
+\once \override Score.KeySignature.break-align-anchor-alignment = #LEFT
\key a \major
\mark "↓"
e1