]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/fr/learning/fundamental.itely
89e64434db89f5d6155ec23de8ae1bec853a3ea2
[lilypond.git] / Documentation / fr / learning / fundamental.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
2
3 @ignore
4    Translation of GIT committish: 93be41a1622bc33a01719d1d75af3dca40d75354
5
6    When revising a translation, copy the HEAD committish of the
7    version that you are working on.  For details, see the Contributors'
8    Guide, node Updating translation committishes..
9 @end ignore
10
11 @c \version "2.19.22"
12
13 @c Translators: Valentin Villenave, Jean-Charles Malahieude
14 @c Translation checkers: John Mandereau
15 @c Translation status: post-GDP
16
17 @node Concepts fondamentaux
18 @chapter Concepts fondamentaux
19 @translationof Fundamental concepts
20
21 Le tutoriel nous a montré comment obtenir une édition de toute beauté à
22 partir d'un simple fichier texte.  Nous nous intéresserons dans cette
23 partie aux concepts et techniques qui permettent d'obtenir des
24 partitions complexes de même qualité.
25
26 @menu
27 * Organisation des fichiers LilyPond::
28 * Les voix contiennent la musique::
29 * Contextes et graveurs::
30 * Extension des modèles::
31 @end menu
32
33
34 @node Organisation des fichiers LilyPond
35 @section Organisation des fichiers LilyPond
36 @translationof How LilyPond input files work
37
38 La mise en forme des fichiers d'entrée de LilyPond est vraiment peu
39 astreignante, afin d'offrir assez de souplesse aux utilisateurs
40 expérimentés pour qu'ils puissent organiser leurs fichiers comme ils
41 l'entendent.  Cependant, les nouveaux utilisateurs peuvent parfois se
42 perdre en raison de cette souplesse. Cette section présente sommairement
43 l'organisation du code LilyPond, en privilégiant la simplicité au
44 détriment de certains détails. Vous trouverez une description plus
45 complète dans @ruser{Structure de fichier}.
46
47 @menu
48 * Introduction à la structure de fichier LilyPond::
49 * La partition est une (unique) expression musicale composée::
50 * Expressions musicales imbriquées::
51 * Non-imbrication des crochets et liaisons::
52 @end menu
53
54
55 @node Introduction à la structure de fichier LilyPond
56 @subsection Introduction à la structure de fichier LilyPond
57 @translationof Introduction to the LilyPond file structure
58
59 @cindex format d'entrée
60 @cindex structure de ficher
61
62 Un fichier d'entrée LilyPond ressemble à :
63
64 @example
65 \version @w{"@version{}"}
66 \header @{ @}
67 \score @{
68   @var{ @dots{} expression musicale composite @dots{} }  % c'est là qu'est la musique !
69   \layout @{ @}
70   \midi @{ @}
71 @}
72 @end example
73
74 @noindent
75 Il existe de nombreuses variantes à ce schéma simpliste, mais cet
76 exemple est un préambule à notre propos.
77
78 @funindex \book
79 @funindex \score
80
81 @cindex book, livre, ouvrage
82 @cindex livre
83 @cindex score, partition
84 @cindex partition
85
86 Jusqu'à présent, les exemples que nous avons pu voir ne faisaient pas
87 appel à la commande @code{\score@{@}}.  En fait, LilyPond ajoute
88 automatiquement les commandes nécessaires au traitement d'un code
89 simpliste.  LilyPond considère
90
91 @example
92 \relative @{
93   c''4 a d c
94 @}
95 @end example
96
97 @noindent
98 comme un raccourci de
99
100 @example
101 \book @{
102   \score @{
103     \new Staff @{
104       \new Voice @{
105         \relative @{
106           c''4 a b c
107         @}
108       @}
109     @}
110     \layout @{ @}
111   @}
112 @}
113 @end example
114
115 En d'autres termes, si le code n'est constitué que d'une expression
116 musicale simple, LilyPond interprétera le fichier tout comme si cette
117 expression était incluse dans les commandes de notre premier exemple.
118
119 @cindex contextes implicites
120 @cindex implicites, contextes
121
122 @strong{Attention :}  de nombreux exemples, dans la documentation de
123 LilyPond, ne font pas apparaître les commandes @code{\new Staff} ou
124 @code{\new Voice}, qui sont créées implicitement.  Ce qui
125 n'est pas primordial pour des exemples simples le devient dès que la
126 situation se complexifie un tant soit peu.  Le fait de ne pas déclarer
127 explicitement un contexte peut alors amener à des résultats quelque peu
128 surprenants, comme la création d'une portée supplémentaire et
129 indésirable.  La manière de créer explicitement des contextes est
130 traitée plus en détails au chapitre @ref{Contextes et graveurs}.
131
132 @warning{Dès lors que votre musique dépasse quelques lignes, nous vous
133 engageons fortement à créer explicitement les voix et portées.}
134
135 Mais revenons à notre premier exemple, et penchons-nous tout d'abord sur
136 la commande @code{\score}.
137
138 Un bloc @code{\score} doit contenir une et une seule expression
139 musicale, exprimée immédiatement à la suite de la commande
140 @code{\score}.  Rappelez-vous que cette expression peut être n'importe
141 quoi, d'une note isolée à un gigantesque
142
143 @example
144 @{
145   \new StaffGroup <<
146     @var{ @dots{} collez ici la partition complète d'un opéra de Wagner@dots{} }
147   >>
148 @}
149 @end example
150
151 @noindent
152 Dès lors que tout cela est entre accolades : @code{@{ @dots{} @}},
153 LilyPond le considère comme une et une seule expression musicale.
154
155 Comme nous l'avons vu précédemment, un bloc @code{\score} peut contenir
156 d'autres informations :
157
158 @example
159 \score @{
160   @{ c'4 a b c' @}
161   \header @{ @}
162   \layout @{ @}
163   \midi @{ @}
164 @}
165 @end example
166
167 @funindex \header
168 @funindex \layout
169 @funindex \midi
170
171 @cindex header
172 @cindex en-tête
173 @cindex layout
174 @cindex mise en forme
175 @cindex midi
176
177 @noindent
178 Gardez à l'esprit que ces trois commandes -- @code{\header},
179 @code{\layout} et @code{\midi} -- sont spécifiques : à l'inverse de
180 toutes les commandes débutant par une oblique inversée @code{\}
181 (@emph{backslash} en anglais), @strong{elles ne constituent pas} des
182 expressions musicales et ne peuvent pas faire partie d'expressions
183 musicales.  Elles peuvent de ce fait être placées à l'intérieur du
184 bloc @code{\score}, ou bien à l'extérieur.  En réalité, ces commandes
185 sont la plupart du temps indépendantes du bloc @code{\score} -- par
186 exemple, la commande @code{\header} intervient souvent avant le bloc
187 @code{\score}, comme le montre l'exemple ci-dessus.
188
189 Les deux autres commandes -- @code{\layout @{@}} et @code{\midi @{@}}
190 -- que nous n'avons pas détaillées pour l'instant, auront respectivement
191 pour effet, lorsqu'elles interviennent, de produire une sortie
192 imprimable et un fichier MIDI.  Nous nous y intéressons plus
193 particulièrement dans le manuel de notation, aux chapitres
194 @ruser{Mise en forme de la partition} et
195 @ruser{Génération de fichiers MIDI}.
196
197 @cindex partitions multiples
198 @cindex book,  bloc implicite
199 @cindex implicite, bloc book
200
201 @funindex \book
202
203 Vous pouvez tout à fait mentionner plusieurs blocs @code{\score}.  Ils
204 seront traités comme autant de partitions indépendantes qui seront
205 regroupées dans un seul fichier résultant.  La commande @code{\book}
206 (@emph{recueil} ou @emph{ouvrage}) n'est pas obligatoire -- elle sera
207 créée implicitement.  Néanmoins, le recours à la commande @code{\book}
208 vous permettra d'obtenir des fichiers résultants distincts à partir
209 d'un même fichier source @file{.ly} -- par exemple un fichier par
210 pupitre.
211
212 En résumé :
213
214 Dès que LilyPond rencontre un bloc @code{\book}, il crée un fichier
215 distinct (@file{.pdf} par exemple).  Dans le cas où il n'est pas
216 mentionné explicitement, LilyPond regroupera l'intégralité du code dans
217 un bloc @code{\book}.
218
219 Tout bloc @code{\score} inclus dans un bloc @code{\book} constitue un
220 fragment de musique, par exemple un mouvement d'une symphonie.
221
222 @cindex layout, effets selon l'emplacement
223
224 Tout bloc @code{\layout} affecte le bloc @code{\score} ou @code{\book}
225 au sein duquel il intervient : si c'est à l'intérieur d'un bloc
226 @code{\score}, seul celui-ci en sera affecté.  Dans le cas où le bloc
227 @code{\layout} se trouve à l'extérieur du bloc @code{\score}, que le
228 bloc @code{\book} soit explicite ou non, il affectera chacun des
229 @code{\score} compris dans ce @code{\book}.
230
231 Pour plus de détail à ce sujet, consultez
232 @ruser{Plusieurs partitions dans un même ouvrage}.
233
234 @cindex variables
235 @cindex identifiants
236
237 Un autre raccourci pratique est la possibilité de définir
238 des variables, également appelées @qq{identificateurs} -- voir
239 @ref{Organisation du code source avec des variables} à ce sujet.  Dans
240 tous les modèles, vous trouverez :
241
242 @example
243 melodie = \relative @{
244   c'4 a b c
245 @}
246
247 \score @{
248   @{ \melodie @}
249 @}
250 @end example
251
252 Lorsque LilyPond examinera ce fichier, il va prendre la valeur de la
253 variable @code{melodie}, c'est-à-dire tout ce qui suit le signe
254 @code{=}, et l'insérer partout où il rencontrera @code{\melodie}.  Vous
255 êtes libre de choisir comment dénommer vos variables@footnote{Les noms
256 de variables sont sensibles à la casse, et ne peuvent contenir ni
257 chiffre, ni ponctuation, ni caractère accentué, ni espace.} ; ce peut
258 être @code{melodie}, @code{global}, @code{maindroitepiano}, ou
259 @code{laTeteAToto}, tant qu'il ne s'agit pas de @qq{mot réservé}.  Pour
260 plus de détails, voir
261 @ref{Économie de saisie grâce aux identificateurs et fonctions}.
262
263 @seealso
264 Pour une description complète du format des fichiers d'entrée, voir
265 @ruser{Structure de fichier}.
266
267
268 @node La partition est une (unique) expression musicale composée
269 @subsection La partition est une (unique) expression musicale composée
270 @translationof Score is a (single) compound musical expression
271
272 @funindex \score
273
274 @cindex partition
275 @cindex bloc score, contenu
276 @cindex expression musicale composite
277
278 Dans la section précédente,
279 @ref{Introduction à la structure de fichier LilyPond},  nous
280 avons vu l'organisation générale des fichiers d'entrée de LilyPond.
281 Mais c'est comme si nous avions éludé la question essentielle :
282 comment diable peut-on savoir quoi mettre après @code{\score} ?
283
284 En fait, nous ne l'avons pas éludée du tout : le grand mystère est
285 tout simplement qu'@strong{il n'y a pas} de mystère.  Allez,
286 expliquons-le en une ligne :
287
288 @quotation
289 @emph{Un bloc @code{\score} doit contenir une et une seule expression
290 musicale.}
291 @end quotation
292
293 @noindent
294 Peut-être serait-il judicieux de relire la section
295 @ref{Les expressions musicales en clair}, dans laquelle vous avez
296 appris à construire de grandes expressions musicales petit bout
297 par petit bout -- nous avons vu les notes, puis les accords, etc.
298 Maintenant, nous allons partir d'une grande expression musicale,
299 et remonter la pente.  Pour rester simple, nous nous contenterons d'un
300 chanteur accompagné au piano.  On n'a pas besoin d'une partition
301 d'orchestre -- c.-à-d. des portées regroupées en @code{StaffGroup} --
302 donc laissons cela de côté.  Par contre, nous voulons bien une voix et
303 une double portée de piano.
304
305 @example
306 \score @{
307   @{
308     <<
309       \new Staff = "chanteur" <<
310       >>
311       \new PianoStaff = "piano" <<
312       >>
313     >>
314   @}
315   \layout @{ @}
316 @}
317 @end example
318
319 Nous avons ici attribué des noms aux portées -- @qq{chanteur} et
320 @qq{piano}.  Bien que cela ne soit pas primordial, c'est une
321 habitude qu'il est bon d'adopter dès le départ : vous saurez au
322 premier coup d'œil à quoi correspond chaque portée.
323
324 Vous vous souvenez que nous avons recours à @code{<<} et @code{>>}
325 en lieu et place de @code{@{ @dots{} @}} pour gérer des musiques
326 simultanées.  Et, pour le coup, on aimerait @emph{vraiment} que la
327 partie vocale et l'accompagnement soient imprimés ensemble@dots{}  Bien
328 que faire appel à @code{<< @dots{} >>} ne soit pas réellement nécessaire
329 pour la portée du chanteur, dans la mesure où elle ne contient qu'une
330 seule expression musicale, nous vous recommandons de prendre l'habitude
331 de l'encadrer ainsi plutôt que par de simples accolades -- une portée
332 peut en effet contenir plusieurs voix, ou bien des notes @strong{et} des
333 paroles.  Dans la mesure où nous y ajouterons des paroles, les chevrons
334 sont donc obligatoires.  Si vous avez oublié comment ajouter des
335 paroles à l'aide de la commande @code{\addlyrics}, relisez le chapitre
336 @ref{Écriture de chants simples}.
337
338 @lilypond[verbatim,quote,ragged-right]
339 \score {
340   <<
341     \new Staff = "singer" <<
342       \new Voice = "vocal" { c'1 }
343       \addlyrics { And }
344     >>
345     \new PianoStaff = "piano" <<
346       \new Staff = "upper" { c'1 }
347       \new Staff = "lower" { c'1 }
348     >>
349   >>
350   \layout { }
351 }
352 @end lilypond
353
354 On y voit nettement plus clair maintenant.  Nous voici donc avec la
355 partie du chanteur, qui contient un ensemble @code{Voice}, ce qui dans
356 LilyPond correspond à une voix, au sens de voix d'une polyphonie plutôt
357 que de voix chantée -- ce pourrait être une partie de violon par
358 exemple --, et des paroles.  Nous avons également une partie de piano,
359 qui contient deux portées : une pour la main droite, une autre pour la
360 main gauche.  Il nous faudra d'ailleurs ajouter une clef de fa à cette
361 dernière.
362
363 À ce point, on pourrait commencer à ajouter les notes.  Dans les
364 accolades qui suivent @code{\new Voice = "chant"}, on pourrait
365 commencer à écrire
366
367 @example
368 \relative @{
369   r4 d''8\noBeam g, c4 r
370 @}
371 @end example
372
373 Mais si l'on procédait ainsi, la section @code{\score} deviendrait
374 vite assez touffue, et très rapidement on ne s'y retrouverait plus.
375 C'est pourquoi on utilisera plutôt des variables, ou identificateurs,
376 comme nous l'avons vu plus haut.  Pour s'assurer que le contenu de la
377 variable @code{texte} soit bien interprété comme des paroles, nous le
378 préfixons d'un @code{\lyricmode}.  Sans cette précaution, LilyPond
379 tenterait d'interpréter le contenu de cette variable comme des notes, ce
380 qui déclencherait immanquablement des erreurs.  LilyPond dispose de
381 différents types de données -- voir @ruser{Modes de saisie} pour plus de
382 détails.
383
384 Avec quelques notes de plus et une clef de fa, nous pourrions avoir :
385
386 @lilypond[verbatim,quote,ragged-right]
387 melody = \relative { r4 d''8\noBeam g, c4 r }
388 text   = \lyricmode { And God said, }
389 upper  = \relative { <g' d g,>2~ <g d g,> }
390 lower  = \relative { b,2 e2 }
391
392 \score {
393   <<
394     \new Staff = "singer" <<
395       \new Voice = "vocal" { \melody }
396       \addlyrics { \text }
397     >>
398     \new PianoStaff = "piano" <<
399       \new Staff = "upper" { \upper }
400       \new Staff = "lower" {
401         \clef "bass"
402         \lower
403       }
404     >>
405   >>
406   \layout { }
407 }
408 @end lilypond
409
410 Quand on écrit ou que l'on lit une section @code{\score}, mieux vaut
411 y aller lentement et soigneusement.  Commencez par le niveau le plus
412 large, puis travaillez sur chaque niveau plus détaillé.  À ce propos,
413 une indentation stricte et propre est vraiment d'une aide précieuse :
414 assurez-vous que chaque élément d'un même niveau a le même décalage
415 horizontal dans votre éditeur de texte !
416
417 @seealso
418 Manuel de notation :
419 @ruser{Structure d'une partition}.
420
421
422 @node Expressions musicales imbriquées
423 @subsection Expressions musicales imbriquées
424 @translationof Nesting music expressions
425
426 @cindex portées, temporaires
427 @cindex ossias
428
429 Déclarer toutes les portées dès le départ n'est pas une
430 obligation ; elles peuvent intervenir temporairement n'importe où
431 dans la partition.  Ceci est tout à fait indiqué pour créer des sections
432 @rglos{ossia}.  L'exemple suivant illustre la manière de créer
433 temporairement une nouvelle portée, l'espace de trois notes :
434
435 @lilypond[verbatim,quote,ragged-right]
436 \new Staff {
437   \relative {
438     r4 g'8 g c4 c8 d |
439     e4 r8
440     <<
441       { f c c }
442       \new Staff {
443         f8 f c
444       }
445     >>
446     r4 |
447   }
448 }
449 @end lilypond
450
451 @noindent
452 Vous noterez la taille de la clef, identique à celle que l'on trouve
453 lors d'un changement en cours de ligne -- légèrement plus petite que
454 celle imprimée en tête de ligne.
455
456 @cindex portée, positionnement
457
458 Une section ossia se placera au dessus de la portée en procédant ainsi :
459
460 @lilypond[verbatim,quote,ragged-right]
461 \new Staff = "main" {
462   \relative {
463     r4 g'8 g c4 c8 d |
464     e4 r8
465     <<
466       { f c c }
467       \new Staff \with {
468         alignAboveContext = #"main" }
469       { f8 f c }
470     >>
471     r4 |
472   }
473 }
474 @end lilypond
475
476 Cet exemple recourt à @code{\with}, que nous verrons en détail plus
477 avant.  C'est un moyen de modifier le comportement par défaut d'une
478 portée individuelle.  Nous indiquons ici que la nouvelle portée doit se
479 placer au-dessus de la portée @qq{principal} plutôt qu'en dessous, ce
480 qui est le comportement par défaut.
481
482 @seealso
483 Les ossias apparaissent souvent sans clef ni métrique, et dans une
484 taille plus petite.  Ceci requiert des commandes dont nous n'avons pas
485 encore parlé.  Voir @ref{Taille des objets} et @ruser{Portées d'ossia}.
486
487
488 @node Non-imbrication des crochets et liaisons
489 @subsection Non-imbrication des crochets et liaisons
490 @translationof On the un-nestedness of brackets and ties
491
492 @cindex crochets, imbrication
493 @cindex crochets, types de
494
495 Nous avons déjà rencontré plusieurs types de crochets au fil de nos
496 fichiers LilyPond.  Ils obéissent à des règles différentes qui peuvent
497 paraître déroutantes de prime abord.  Avant d'examiner ces règles, voici
498 une liste des différents types de crochet :
499
500 @c attempt to force this onto a new page
501 @need 50
502 @multitable @columnfractions .3 .7
503 @headitem Type de crochet
504   @tab Fonction
505 @item @code{@{ @dots{} @}}
506   @tab Délimite un segment de musique séquentielle
507 @item @code{< @dots{} >}
508   @tab Délimite les notes d'un accord
509 @item @code{<< @dots{} >>}
510   @tab Délimite des sections simultanées
511 @item @code{( @dots{} )}
512   @tab Marque le début et la fin d'une liaison
513 @item @code{\( @dots{} \)}
514   @tab Marque le début et la fin d'une liaison de phrasé
515 @item @code{[ @dots{} ]}
516   @tab Marque le début et la fin d'une ligature manuelle
517 @end multitable
518
519 D'autres constructions permettent d'obtenir des lignes regroupant ou en
520 travers des notes :  les liaisons de prolongation indiquées par un tilde
521 (@code{~}), les marques de n-olet avec @code{\tuplet x/y @{ @dots{} @}},
522 ou encore les notes d'ornement avec @code{\grace@{ @dots{} @}}.
523
524 En dehors de LilyPond, l'imbrication correcte de différents types de
525 crochets exige un strict respect des conventions, telles que
526 @code{<< [ @{ ( @dots{} ) @} ] >>}, où les marques de fermeture
527 interviennent obligatoirement dans l'ordre exactement inverse à celles
528 d'ouverture.  Ceci @strong{doit} être rigoureusement respecté pour les
529 trois types de crochets utilisés pour @strong{délimiter} comme l'indique
530 le tableau ci-dessus.  Une telle rigueur dans l'imbrication n'est
531 @strong{pas} requise pour les types de crochets dont la fonction est de
532 @strong{marquer}, selon le tableau ci-dessus, lorsqu'il sont utilisés en
533 combinaison avec des liaisons de prolongation ou des n-olets.  En effet,
534 il ne s'agit pas de crochets ayant pour fonction de borner quelque
535 chose ; ils agissent plutôt comme marquant le début de quelque chose et
536 sa fin.
537
538 Ainsi, et bien que ce ne soit pas très musical, une liaison de phrasé
539 peut débuter avant l'insertion d'une ligature manuelle et s'arrêter
540 avant la fin de la ligature :
541
542 @lilypond[quote,verbatim,ragged-right]
543 \relative { g'8\( a b[ c b\) a] g4 }
544 @end lilypond
545
546 De manière générale, différents types de crochets, notamment s'ils
547 indiquent des n-olets, liaisons de prolongation ou notes d'ornement,
548 peuvent se mélanger entre eux.  L'exemple suivant montre une ligature
549 qui se prolonge sur un triolet (ligne 1), puis une liaison qui se
550 prolonge sur un triolet (ligne 2) et enfin une ligature et une liaison
551 qui s'étendent sur un triolet, lui-même lié à un quintolet agrémenté
552 d'une liaison de phrasé se poursuivant (lignes 3 et 4).
553
554 @lilypond[quote,verbatim,ragged-right]
555 \relative {
556   r16[ g' \tuplet 3/2 { r16 e'8] }
557   g,16( a \tuplet 3/2 { b16 d) e }
558   g,8[( a \tuplet 3/2 { b8 d) e~] } |
559   \tuplet 5/4 { e32\( a, b d e } a4.\)
560 }
561 @end lilypond
562
563
564 @node Les voix contiennent la musique
565 @section Les voix contiennent la musique
566 @translationof Voices contain music
567
568 Les chanteurs utilisent leur voix pour chanter ; il en va de même
569 pour LilyPond.  En fait, la musique de chacun des instruments d'une
570 partition est contenue dans des voix (@emph{Voices} en anglais), qui
571 se trouvent être le concept fondamental de LilyPond.
572
573 @menu
574 * J'entends des Voix::
575 * Instanciation explicite des voix::
576 * Voix et paroles::
577 @end menu
578
579
580 @node J'entends des Voix
581 @subsection J'entends des Voix
582 @translationof I'm hearing Voices
583
584 @cindex polyphonie
585 @cindex calques (layers)
586 @cindex voix multiples
587 @cindex Voice, contexte
588 @cindex contexte de voix
589 @cindex musique simultanée
590 @cindex musique concurrente
591 @cindex voix ou accords
592 @cindex accords ou voix
593
594 Dans une partition gérée par LilyPond, le niveau le plus bas, ou bien
595 élémentaire ou fondamental, est le @qq{contexte de voix} -- @emph{Voice
596 context} en anglais.  Pour d'autres logiciels, on fait tantôt référence
597 à la notion de @qq{couche} ou de @qq{calque}.
598
599 En réalité, le contexte de voix est le seul à pouvoir contenir de la
600 musique.  S'il n'est pas déclaré explicitement, il sera créé
601 automatiquement comme nous l'avons vu au début de ce chapitre.  Certains
602 instruments, le hautbois par exemple, ne peuvent jouer qu'une seule note
603 à la fois.  Nous n'aurons besoin, pour ces instruments monodiques, que
604 d'une seule voix.  Les instruments qui, comme le piano, peuvent émettre
605 plusieurs sons en même temps sont polyphoniques et nécessitent de
606 recourir à plusieurs voix pour gérer efficacement l'alignement des notes
607 et rythmes différents.
608
609 Si une voix unique peut tout à fait contenir plusieurs notes dans un
610 accord, à partir de quand aurons-nous vraiment besoin de plusieurs
611 voix ?  Considérons déjà ces quatre accords :
612
613 @lilypond[quote,verbatim,ragged-right]
614 \relative {
615   \key g \major
616   <d' g>4 <d fis> <d a'> <d g>
617 }
618 @end lilypond
619
620 Nous exprimons ici chacun des accords par l'utilisation de
621 chevrons gauche et droite simples, @code{< @dots{} >}, puisque nous
622 n'avons besoin que d'une seule voix.  Supposons maintenant que le fa
623 dièse soit une croche, suivie d'un sol croche -- une note de passage
624 vers le la ?  Nous avons alors deux notes qui débutent au même moment,
625 mais dont la durée est différente : un ré noire et un fa dièse croche.
626 Comment coder cela ?  Dans la mesure où toutes les notes d'un accord
627 doivent avoir la même durée, nous ne pouvons pas écrire un accord.  Nous
628 ne pouvons pas non plus écrire deux notes séparées, puisqu'elles
629 débutent en même temps.  Nous avons alors besoin de deux voix.
630
631 Voyons comment cela se pratique selon la grammaire de LilyPond.
632
633 @funindex << \\ >>
634 @funindex \\
635
636 Le plus sûr moyen de saisir un fragment où plusieurs voix cohabitent
637 sur la même portée, consiste à saisir chacune des voix séquentiellement
638 (avec @code{@{ @dots{} @}}), puis à les combiner en simultané à l'aide
639 de doubles chevrons gauche/droite, @code{<< @dots{} >>}.  Les fragments
640 devront être séparés par une double oblique inversée, @code{\\}, pour
641 les affecter à des voix séparées.  Dans le cas contraire, les notes
642 seraient toutes affectées à une même voix, ce qui pourrait générer des
643 erreurs.  Cette manière de procéder est tout à fait indiquée dans le cas
644 d'une pièce homophonique ne comportant que quelques courts passages de
645 polyphonie.
646
647 Voici comment éclater les accords en deux voix, avec la note de passage
648 et la liaison :
649
650 @lilypond[quote,verbatim,ragged-right]
651 \relative {
652   \key g \major
653   %    Voice = "1"             Voice = "2"
654   << { g'4 fis8( g) a4 g } \\ { d4 d d d }  >>
655 }
656 @end lilypond
657
658 Notez que les hampes de la seconde voix sont dirigées vers le bas.
659
660 Autre exemple :
661
662 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
663 \key d \minor
664 %    Voice = "1"           Voice = "2"
665 << { r4 g g4. a8 }    \\ { d,2 d4 g }       >> |
666 << { bes4 bes c bes } \\ { g4 g g8( a) g4 } >> |
667 << { a2. r4 }         \\ { fis2. s4 }       >> |
668 @end lilypond
669
670 Le recours à une construction @code{<< \\ >>} particulière à chaque
671 mesure n'est pas nécessaire.  Bien qu'on y gagne en lisibilité si chaque
672 mesure ne contient que quelques notes, il est plus judicieux de
673 carrément séparer chaque voix :
674
675 @lilypond[quote,verbatim,ragged-right]
676 <<
677   \key d \minor
678   \relative { % Voice = "1"
679     r4 g' g4. a8 |
680     bes4 bes c bes |
681     a2. r4 |
682   } \\
683   \relative { % Voice = "2"
684     d'2 d4 g |
685     g4 g g8( a) g4 |
686     fis2. s4 |
687   }
688 >>
689 @end lilypond
690
691 @cindex voix, nommage
692 @cindex voix et constructions simultanées
693 @cindex liaisons et constructions simultanées
694
695 Cet exemple ne comporte que deux voix, mais il peut être étendu pour
696 traiter trois voix ou plus en ajoutant autant de séparateurs @code{\\}
697 que de besoin.
698
699 Les contextes @code{Voice} portent les noms @code{"1"}, @code{"2"}, etc.
700 Les premiers contextes définissent les voix @emph{extrêmes}, la plus
701 haute au contexte @code{"1"}, le plus basse au contexte @code{"2"}.  Les
702 voix intermédiaires seront affectées aux contextes @code{"3"} et
703 @code{"4"}.  Pour chacun de ces contextes, le positionnement et
704 l'orientation des liaisons, hampes, nuances, etc. est définie
705 automatiquement.
706
707 @lilypond[quote,verbatim]
708 \new Staff \relative {
709   % Main voice
710   c'16 d e f
711   %  Voice = "1"   Voice = "2"             Voice = "3"
712   << { g4 f e } \\ { r8 e4 d c8~ } >> |
713   << { d2 e }   \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> |
714 }
715 @end lilypond
716
717 @funindex \voices
718 Les voix peuvent se saisir dans un ordre différent, comme par exemple du
719 haut vers le bas, auquel cas leurs numéros respectifs seront spécifiés
720 dès avant la construction @code{<< @dots{} >>} à l'aide de la commande
721 @code{\voices} comme ici :
722
723 @lilypond[quote,verbatim]
724 \new Staff \relative {
725   % Main voice
726   c'16 d e f
727   %  Voice = "1"   Voice = "2"
728   << { g4 f e } \\ { r8 e4 d c8~ } >> |
729   \voices 1,3,2
730   %  Voice = "1"   Voice = "3"    Voice = "2"
731   << { d2 e }   \\ { s4 b c2 } \\ { c8 b16 a b8 g~ 2 } >> |
732 }
733 @end lilypond
734
735 Ces voix sont séparées de la voix principale, laquelle contient les
736 notes en dehors de la construction @code{<< @dots{} >>} -- que nous
737 appellerons @emph{construction simultanée}.  Les liaisons, de
738 prolongation ou non, ne peuvent relier des notes que si elles
739 appartiennent à la même voix ; elles ne peuvent ni pénétrer une
740 construction simultanée, ni en sortir.  Inversement, les voix parallèles
741 issues de constructions simultanées apparaissant sur une même portée
742 appartiennent à la même voix.  Les autres propriétés liées au contexte
743 de voix  s'appliquent tout au long des constructions simultanées.
744 Reprenons notre exemple, en affectant une couleur et une allure
745 différentes aux notes de chacune des voix.  Vous noterez qu'un
746 changement apporté à une voix ne se propage pas aux autres, et qu'il se
747 reporte jusqu'au bout, et que la voix aux triangles bleus comporte une
748 liaison de prolongation entre deux constructions.
749
750 @lilypond[quote,verbatim]
751 \new Staff \relative {
752   % Main voice
753   c'16 d e f
754   <<  % Bar 1
755     {
756       \voiceOneStyle
757       g4 f e
758     }
759   \\
760     {
761       \voiceTwoStyle
762       r8 e4 d c8~
763     }
764   >> |
765   <<  % Bar 2
766      % Voice 1 continues
767     { d2 e }
768   \\
769      % Voice 2 continues
770     { c8 b16 a b8 g~ 2 }
771   \\
772     {
773       \voiceThreeStyle
774       s4 b c2
775     }
776   >> |
777 }
778 @end lilypond
779
780 @funindex \voiceOneStyle
781 @funindex \voiceTwoStyle
782 @funindex \voiceThreeStyle
783 @funindex \voiceFourStyle
784 @funindex \voiceNeutralStyle
785
786 Les commandes @code{\voiceXXXStyle} sont principalement dédiées à une
787 utilisation pédagogique, comme l'est ce document.  Elles modifient la
788 couleur des hampes et ligatures et le style de tête des note, pour
789 permettre une meilleure distinction entre les différentes voix.   La
790 première voix comporte des têtes en losange rouge, la deuxième en
791 triangle bleu, la troisième en cercle barré vert, la quatrième (non
792 utilisée ici) en croix magenta ;  @code{\voiceNeutralStyle} (non utilisé
793 ici) revient au style par défaut.  Nous verrons plus tard comment créer
794 de telles commandes.  Voir @ref{Visibilité et couleur des objets} et
795 @ref{Utilisation de variables dans les retouches}.
796
797 @cindex polyphonie et mode relatif
798 @cindex mode relatif et polyphonie
799
800 La polyphonie ne modifie en rien la relation entre les notes au sein
801 d'un bloc @code{\relative}.  Chaque note est calculée par rapport à
802 celle qui la précède, ou bien par rapport à la première note de l'accord
803 qui précède.  Ainsi, dans
804
805 @example
806 \relative c' @{ noteA << < noteB noteC > \\ noteD >> noteE @}
807 @end example
808
809 @noindent
810 @code{noteB} est relative à @code{noteA}                        @*
811 @code{noteC} est relative à @code{noteB}, pas à @code{noteA}    @*
812 @code{noteD} est relative à @code{noteB}, pas à @code{noteA} ni
813 @code{noteC}                                                    @*
814 @code{noteE} est relative à @code{noteD}, pas à @code{noteA}
815
816 Une méthode alternative, et qui peut simplifier les choses si les notes
817 des différentes voix sont espacées, consiste à placer une commande
818 @code{\relative} au début de chacune des voix :
819
820 @example
821 \relative @{ noteA @dots{} @}
822 <<
823   \relative @{ < noteB noteC > @dots{} @}
824 \\
825   \relative @{ noteD @dots{} @}
826 >>
827 \relative @{ noteE @dots{} @}
828 @end example
829
830 Pour finir, analysons le principe d'utilisation des voix dans une pièce
831 complexe.  Nous allons nous concentrer sur les deux premières mesures du
832 second des Deux nocturnes, opus 32 de Chopin.  Cet exemple nous servira
833 à plusieurs reprises, y compris dans le chapitre suivant, pour illustrer
834 certaines techniques de notation.  Aussi, ne prêtez pas trop d'attention
835 à ce qui pour l'instant pourrait vous paraître vraiment mystérieux dans
836 le code, et intéressons-nous uniquement à ce qui concerne la musique et
837 les voix -- ce qui est plus compliqué sera décortiqué plus tard.
838
839 @c The following should appear as music without code
840 @lilypond[quote,ragged-right]
841 \new Staff \relative {
842   \key aes \major
843   \voices 1,2,4    % No voice three
844   <<  % Voice one
845     { c''2 aes4. bes8 }
846   \\  % Voice two
847     {
848       % Ignore these for now - they are explained in Ch 4
849       \once \override NoteColumn.ignore-collision = ##t
850       <ees, c>2
851       \once \override NoteColumn.force-hshift = #0.5
852       des2
853     }
854   \\  % Voice four
855     {
856       \override NoteColumn.force-hshift = #0
857       aes'2 f4 fes
858     }
859   >> |
860   <c ees aes c>1 |
861 }
862 @end lilypond
863
864 La direction des hampes sert souvent à indiquer dans la continuité deux
865 lignes mélodiques simultanées.  Ici, les hampes des notes les plus
866 hautes vont vers le haut, et celles des notes plus basses vers le
867 bas.  C'est une première indication de ce que nous avons eu recours à
868 plus d'une voix.
869
870 Mais le réel besoin de multiples voix se fait sentir dès lors que
871 plusieurs notes qui débutent en même temps ont des durées différentes.
872 C'est évident au troisième temps de la première mesure : le la bémol est
873 une noire pointée, le fa une noire, et le ré bémol une blanche.  On ne
874 peut les grouper dans un accord, puisque toutes les notes composant un
875 accord doivent être de même durée.  On ne peut non plus les écrire
876 séquentiellement, puisqu'elles débutent toutes au même instant.  Ce
877 fragment de mesure nécessite trois voix, et une bonne pratique voudrait
878 que l'intégralité de la mesure soit sur trois voix, comme ci-dessous où
879 nous avons une allure et une couleur différentes aux notes de chacune
880 d'entre elles.  Une fois de plus, nous reviendrons plus tard sur le code
881 que vous ne comprendriez pas.
882
883 @c The following should appear as music without code
884 @c The three voice styles should be defined in -init
885 @lilypond[quote,ragged-right]
886 \new Staff \relative {
887   \key aes \major
888   \voices 1,2,4  % No Voice three (we want stems down)
889   <<
890     {  % Voice one
891       \voiceOneStyle
892       c''2 aes4. bes8
893     }
894   \\  % Voice two
895     { \voiceTwoStyle
896       % Ignore these for now - they are explained in Ch 4
897       \once \override NoteColumn.ignore-collision = ##t
898       <ees, c>2
899       \once \override NoteColumn.force-hshift = #0.5
900       des2
901     }
902   \\  % Voice four
903     { \voiceThreeStyle
904       \override NoteColumn.force-hshift = #0
905       aes'2 f4 fes
906     }
907   >> |
908   <c ees aes c>1 |
909 }
910 @end lilypond
911
912 Essayons à présent de coder cette musique en partant de zéro.  Comme
913 nous le verrons, certaines difficultés vont se présenter.  Partons de ce
914 que nous avons appris : utilisons la construction @code{<< \\ >>} pour
915 saisir la première mesure dans trois voix :
916
917 @lilypond[quote,verbatim,ragged-right]
918 \new Staff \relative {
919   \key aes \major
920   <<
921     { c''2 aes4. bes8 } \\ { <ees, c>2 des } \\ { aes'2 f4 fes }
922   >> |
923   <c ees aes c>1 |
924 }
925 @end lilypond
926
927 @cindex stem down
928 @cindex hampes en bas
929 @cindex stem up
930 @cindex hampes en haut
931 @cindex voix et direction des hampes
932 @cindex direction des hampes et voix
933
934 La direction des hampes est attribuée automatiquement : les voix
935 impaires portent des hampes vers le haut, les voix paires des hampes
936 vers le bas.  Les hampes des voix 1 et 2 sont orientées comme il faut
937 mais celles de la voix 3 devraient, dans le cas qui nous occupe, aller
938 vers le bas.  Nous pouvons corriger cela en sautant la voix 3 et en
939 plaçant la musique dans la voix 4.  Ceci pourrait s'obtenir à l'aide
940 d'un @code{\\} supplémentaire, mais nous utiliserons plutôt la commande
941 @code{\voices} qui, par ailleurs, nous permettrait de saisir les voix
942 dans un autre ordre selon notre convenance :
943
944 @lilypond[quote,verbatim,ragged-right]
945 \new Staff \relative {
946   \key aes \major
947   \voices 1,2,4   % Omit Voice three
948   <<  % Voice one
949     { c''2 aes4. bes8 }
950   \\  % Voice two
951     { <ees, c>2 des }
952   \\  % Voice four
953     { aes'2 f4 fes }
954   >> |
955   <c ees aes c>1 |
956 }
957 @end lilypond
958
959 @noindent
960 Cette manipulation nous permet de régler la direction des hampes, mais
961 le positionnement horizontal des notes n'est pas satisfaisant.  LilyPond
962 décale les notes des voix intermédiaires lorsque leur tête ou leur hampe
963 viendrait à chevaucher celles des voix extrêmes.  Bien entendu, ce n'est
964 pas souhaitable dans le cas d'une partition pour piano.  Dans d'autres
965 situations, les décalages que LilyPond applique peuvent ne pas éviter
966 certaines collisions.  LilyPond met à notre disposition plusieurs moyens
967 d'ajuster le positionnement horizontal des notes.  Nous ne sommes pas
968 encore tout à fait prêts pour voir comment corriger cela, aussi nous
969 examinerons ce problème dans un autre chapitre (voir la propriété
970 @code{force-hshift} dans @ref{Correction des collisions d'objets}).
971
972 @warning{Paroles et objets étendus (liaisons, soufflets, etc.) ne peuvent
973 passer d'une voix à l'autre.}
974
975 @seealso
976 Manuel de notation :
977 @ruser{Plusieurs voix}.
978
979
980 @node Instanciation explicite des voix
981 @subsection Instanciation explicite des voix
982 @translationof Explicitly instantiating voices
983
984 @funindex \voiceOne
985 @funindex \voiceTwo
986 @funindex \voiceThree
987 @funindex \voiceFour
988 @funindex \oneVoice
989 @funindex \new Voice
990 @cindex Voice, création de contextes
991
992 Les contextes @rinternals{Voice} peuvent être déclarés manuellement
993 dans un bloc @code{<< >>} pour créer de la musique polyphonique, en
994 utilisant @code{\voiceOne}@dots{} jusqu'à @code{\voiceFour} pour
995 assigner des directions de hampes et un déplacement horizontal pour
996 chaque partie.  Cette méthode apporte de la clarté pour des partitions
997 plus importantes puisqu'elle permet de bien séparer les voix et de leur
998 affecter un nom plus parlant.
999
1000 En particulier, la construction @code{<< \\ >>} que nous avons vue
1001 précédemment :
1002
1003 @example
1004 \new Staff @{
1005   \relative @{
1006     << @{ e'4 f g a @} \\ @{ c,4 d e f @} >>
1007   @}
1008 @}
1009 @end example
1010
1011 @noindent
1012 équivaut à
1013
1014 @example
1015 \new Staff <<
1016   \new Voice = "1" @{ \voiceOne \relative @{ e'4 f g a @} @}
1017   \new Voice = "2" @{ \voiceTwo \relative @{ c'4 d e f @} @}
1018 >>
1019 @end example
1020
1021 Toutes deux produiront
1022
1023 @c The following example should not display the code
1024 @lilypond[ragged-right,quote]
1025 \new Staff <<
1026   \new Voice = "1" { \voiceOne \relative { e'4 f g a } }
1027   \new Voice = "2" { \voiceTwo \relative { c'4 d e f } }
1028 >>
1029 @end lilypond
1030
1031 @cindex Voice, retour à un seul contexte
1032 @cindex retour à un contexte Voice unique
1033
1034 Les commandes @code{\voiceXXX} fixent la direction des hampes, des
1035 liaisons de prolongation et de phrasé, des articulations, des
1036 annotations, des points d'augmentation des notes pointées et des
1037 doigtés.  @code{\voiceOne} et @code{\voiceThree} font pointer ces objets
1038 vers le haut, alors que @code{\voiceTwo} et @code{\voiceFour} les font
1039 pointer vers le bas.  Ces commandes génèrent par ailleurs un décalage
1040 horizontal de chacune des voix pour éviter tout risque de chevauchement
1041 entre plusieurs notes.  La commande @code{\oneVoice} les ramène aux
1042 critères normaux.
1043
1044 Voyons, à l'aide de ces exemples simples, les effets respectifs de
1045 @code{\oneVoice}, @code{\voiceOne} et @code{\voiceTwo} sur les
1046 annotations, liaisons de prolongation ou de phrasé, et sur les nuances.
1047
1048 @lilypond[quote,ragged-right,verbatim]
1049 \relative {
1050   % Default behavior or behavior after \oneVoice
1051   c'4 d8~ 8 e4( f | g4 a) b-> c |
1052 }
1053 @end lilypond
1054
1055 @lilypond[quote,ragged-right,verbatim]
1056 \relative {
1057   \voiceOne
1058   c'4 d8~ 8 e4( f | g4 a) b-> c |
1059   \oneVoice
1060   c,4 d8~ 8 e4( f | g4 a) b-> c |
1061 }
1062 @end lilypond
1063
1064 @lilypond[quote,ragged-right,verbatim]
1065 \relative {
1066   \voiceTwo
1067   c'4 d8~ 8 e4( f | g4 a) b-> c |
1068   \oneVoice
1069   c,4 d8~ 8 e4( f | g4 a) b-> c |
1070 }
1071 @end lilypond
1072
1073 Voyons à présent quatre différentes façons d'exprimer un passage
1074 polyphonique, à partir d'un exemple de la section précédente.  Chacune
1075 d'elles aura ses avantages selon les circonstances.
1076
1077 Une expression séquentielle qui apparaît en premier dans un @code{<< >>}
1078 -- attention, @strong{pas} dans une construction @code{<< \\ >>} --
1079 appartient à la voix principale.  Ceci est utile lorsque des voix
1080 supplémentaires apparaissent pendant que la voix principale est jouée.
1081 Voici une meilleure réalisation de notre exemple.  Les notes colorées et
1082 en croix mettent en évidence le fait que la mélodie principale est
1083 maintenant dans un seul contexte de voix, ce qui permet d'ajouter une
1084 liaison de phrasé à l'ensemble.
1085
1086 @lilypond[quote,ragged-right,verbatim]
1087 \new Staff \relative {
1088   \voiceOneStyle
1089   % The following notes are homophonic
1090   c'16^( d e f
1091   % Start simultaneous section of three voices
1092   <<
1093     % Continue the main voice in parallel
1094     { g4 f e | d2 e) | }
1095     % Initiate second voice
1096     \new Voice {
1097       % Set stems, etc., down
1098       \voiceTwo
1099       r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
1100     }
1101     % Initiate third voice
1102     \new Voice {
1103       % Set stems, etc, up
1104       \voiceThree
1105       s2. | s4 b c2 |
1106     }
1107   >>
1108 }
1109 @end lilypond
1110
1111 @cindex voix, continuation
1112 @funindex \voices
1113
1114 La commande @code{\voices} peut aussi servir à maintenir une voix
1115 principale dans une construction simultanée :
1116
1117 @lilypond[quote,ragged-right,verbatim]
1118 \new Staff \relative {
1119   \new Voice = "main" {
1120     \voiceOneStyle
1121     % This section is homophonic
1122     c'16^( d e f
1123     % Start simultaneous section of three voices
1124     \voices "main",2,3
1125     <<
1126       % Continue the main voice in parallel
1127       { g4 f e | d2 e) | }
1128       % Initiate second voice
1129     \\
1130       % Set stems, etc., down
1131       { r8 e4 d c8~ | 8 b16 a b8 g~ 2 | }
1132     \\
1133       % Initiate third voice
1134       % Set stems, etc, up
1135       { s2. | s4 b c2 | }
1136     >>
1137   }
1138 }
1139 @end lilypond
1140
1141 @cindex imbrication d'expressions musicales
1142 @cindex imbrication de constructions simultanées
1143 @cindex voix temporaires
1144 @cindex voix, imbrication
1145
1146 Dans certaines circonstances de polyphonie complexe, vous pourrez être
1147 amené à recourir à une voix temporaire, ce qui peut être une manière
1148 plus naturelle de saisir la musique :
1149
1150 @lilypond[quote,ragged-right,verbatim]
1151 \new Staff \relative {
1152   c'16^( d e f
1153   <<
1154     { g4 f e | d2 e) | }
1155     \new Voice {
1156       \voiceTwo
1157       r8 e4 d c8~ |
1158       <<
1159         { c8 b16 a b8 g~ 2 | }
1160         \new Voice {
1161           \voiceThree
1162           s4 b c2 |
1163         }
1164       >>
1165     }
1166   >>
1167 }
1168 @end lilypond
1169
1170 @cindex espacement des notes
1171
1172 Cette manière de brièvement imbriquer des voix est bien utile pour de
1173 courts fragments de musique polyphonique.  Mais lorsqu'une portée est
1174 très souvent polyphonique, on peut y gagner en clarté si l'on utilise
1175 plusieurs voix sur l'ensemble de cette portée et que l'on positionne des
1176 silences invisibles pour sauter les moments où il n'y a rien dans cette
1177 voix.
1178
1179 @lilypond[quote,ragged-right,verbatim]
1180 \new Staff \relative <<
1181   % Initiate first voice
1182   \new Voice {
1183     \voiceOne
1184     c'16^( d e f g4 f e | d2 e2) |
1185   }
1186   % Initiate second voice
1187   \new Voice {
1188     % Set stems, etc, down
1189     \voiceTwo
1190     s4 r8 e4 d c8 ~ | 8 b16 a b8 g ~ 2 |
1191   }
1192   % Initiate third voice
1193   \new Voice {
1194     % Set stems, etc, up
1195     \voiceThree
1196     s1 | s4 b4 c2 |
1197   }
1198 >>
1199 @end lilypond
1200
1201
1202 @subsubheading Empilement des notes
1203 @translationof Note columns
1204
1205 @cindex note column
1206 @cindex empilement de notes
1207 @cindex collisions de notes
1208 @cindex shift, commandes
1209 @cindex décalage, commandes
1210
1211 @funindex \shiftOff
1212 @funindex \shiftOn
1213 @funindex \shiftOnn
1214 @funindex \shiftOnnn
1215
1216 Les notes rapprochées d'un accord, ou des notes de différentes voix qui
1217 tombent ensemble, seront rangées sur deux colonnes, voire plus, pour
1218 palier d'éventuels chevauchements des têtes.  On appelle cela des
1219 empilements de notes.  Chaque voix dispose de plusieurs empilements, et
1220 l'attribution d'un décalage à une voix en particulier s'appliquera à
1221 l'empilement en question s'il y avait risque de collision.
1222 Nous en avons une illustration à la deuxième mesure de l'exemple
1223 ci-dessus : le do de la deuxième voix est décalé à droite du ré de
1224 la première voix et, dans l'accord final, le do de la troisième voix est
1225 lui aussi décalé à droite des autres notes.
1226
1227 Les commandes @code{\shiftOn}, @code{\shiftOnn}, @code{\shiftOnnn} et
1228 @code{\shiftOff} spécifient le degré nécessaire de décalage qui sera
1229 appliqué aux notes ou accords de la voix en question afin d'éviter une
1230 collision.  Par défaut, les voix extérieures -- normalement les
1231 première et deuxième -- se verront attribuer @code{\shiftOff}, alors
1232 que les voix intérieures -- trois et quatre -- se verront attribuer
1233 @code{\shiftOn}.  Lorsqu'un décalage s'applique, les voix un et trois
1234 iront vers la droite, et les voix deux et quatre vers la gauche.
1235
1236 @code{\shiftOnn} et @code{\shiftOnnn} définissent des degrés augmentés
1237 de décalage auquel on peut devoir temporairement recourir dans des
1238 situations complexes -- voir @ref{Exemple concret}.
1239
1240 Un empilement peut ne contenir qu'une note ou un accord dans une voix
1241 aux hampes vers le haut, et une note ou un accord dans une voix
1242 aux hampes vers le bas.  Dans le cas où des notes, issues de deux voix
1243 ayant toutes deux des hampes dans la même direction, se retrouvent au
1244 même moment et qu'aucun décalage n'a été spécifié ou qu'ils sont
1245 identiques, LilyPond vous le signalera par le message « Cette voix
1246 requiert un @code{@bs{}voiceXx} ou un réglage @code{@bs{}shiftXx}  ».
1247
1248 @seealso
1249 Manuel d'initiation :
1250 @ref{Déplacement d'objets}
1251
1252 Manuel de notation :
1253 @ruser{Plusieurs voix}.
1254
1255
1256 @node Voix et paroles
1257 @subsection Voix et paroles
1258 @translationof Voices and vocals
1259
1260 La musique vocale est une gageure en soi : il nous faut combiner
1261 deux expressions différentes -- des notes et des paroles.
1262
1263 @funindex \new Lyrics
1264 @funindex \lyricsto
1265 @funindex Lyrics
1266
1267 @cindex Lyrics, création d'un contexte
1268 @cindex paroles, affectation à une voix
1269
1270 Nous avons déjà abordé la commande @code{\addlyrics@{@}}, qui permet de
1271 gérer des partitions simples.  Cette technique est cependant
1272 relativement limitée.  Pour de la musique un peu plus compliquée, il
1273 vous faudra contenir les paroles dans un contexte @code{Lyrics}, créé
1274 par la commande @code{\new Lyrics} ; vous relierez ensuite ces paroles
1275 aux notes grâce à la commande @code{\lyricsto@{@}} et au nom assigné à
1276 la voix en question.
1277
1278 @lilypond[quote,verbatim]
1279 <<
1280   \new Voice = "one" {
1281     \relative {
1282       \autoBeamOff
1283       \time 2/4
1284       c''4 b8. a16 | g4. f8 | e4 d | c2 |
1285     }
1286   }
1287   \new Lyrics \lyricsto "one" {
1288     No more let | sins and | sor -- rows | grow. |
1289   }
1290 >>
1291 @end lilypond
1292
1293 Notez bien que les paroles sont liées à un contexte de voix
1294 (@code{Voice}), @strong{non} à un contexte de portée (@code{Staff}).  Il
1295 est donc nécessaire de créer explicitement les contextes @code{Staff}
1296 et @code{Voice}.
1297
1298 @cindex paroles et ligatures
1299 @cindex ligatures et paroles
1300
1301 @funindex \autoBeamOff
1302
1303 Si la ligature automatique que LilyPond applique par défaut est
1304 pleinement adaptée en matière de musique instrumentale, il n'en va pas
1305 de même dans le cas d'une musique associée à des paroles, et pour
1306 laquelle soit les ligatures sont carrément absentes, soit elles servent
1307 à indiquer un mélisme -- plusieurs notes pour une même syllabe.
1308 Dans l'exemple qui suit, nous utilisons la commande @code{\autoBeamOff}
1309 afin de désactiver les ligatures automatiques.
1310
1311 @funindex \new ChoirStaff
1312 @funindex ChoirStaff
1313 @funindex \lyricmode
1314
1315 @cindex structure d'une partition vocale
1316 @cindex chœur, partie de
1317
1318 Nous allons reprendre un extrait de Judas Maccabæus pour illustrer ce
1319 que cette technique apporte en flexibilité.  Nous commençons par
1320 utiliser des variables -- ou identificateurs --  afin de séparer de la
1321 structure de la portée aussi bien la musique que les paroles.  Nous
1322 ajoutons par la même occasion un crochet spécifique aux portées pour
1323 chœur (@code{ChoirStaff}).  Quant aux blocs de paroles, nous les faisons
1324 précéder de la commande @code{\lyricmode} pour nous assurer qu'elles
1325 seront interprétées comme telles, et non comme de la musique.
1326
1327 @lilypond[quote,verbatim]
1328 global = { \key f \major \time 6/8 \partial 8 }
1329
1330 SopOneMusic = \relative {
1331   c''8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4
1332 }
1333 SopOneLyrics = \lyricmode {
1334   Let | flee -- cy flocks the | hills a -- dorn, __
1335 }
1336 SopTwoMusic = \relative {
1337   r8 | r4. r4 c'8 | a'8([ g)] f f([ e)] d | e8([ d)] c bes'
1338 }
1339 SopTwoLyrics = \lyricmode {
1340   Let | flee -- cy flocks the | hills a -- dorn,
1341 }
1342
1343 \score {
1344   \new ChoirStaff <<
1345     \new Staff <<
1346       \new Voice = "SopOne" {
1347         \global
1348         \SopOneMusic
1349       }
1350       \new Lyrics \lyricsto "SopOne" {
1351         \SopOneLyrics
1352       }
1353     >>
1354     \new Staff <<
1355       \new Voice = "SopTwo" {
1356         \global
1357         \SopTwoMusic
1358       }
1359       \new Lyrics \lyricsto "SopTwo" {
1360         \SopTwoLyrics
1361       }
1362     >>
1363   >>
1364 }
1365 @end lilypond
1366
1367 Voici donc la structure de base valable pour toute partition vocale.  On
1368 peut y ajouter d'autres portées si besoin est, d'autres voix à chaque
1369 portée, plusieurs couplets aux paroles, et les variables contenant la
1370 musique peuvent même être stockées dans des fichiers indépendants dès
1371 lors que leur longueur devient conséquente.
1372
1373 @cindex structure d'hymne
1374 @cindex SATB, structure
1375 @cindex partition vocale avec plusieurs couplets
1376 @cindex couplets multiples et musique vocale
1377
1378 Voici maintenant la première ligne d'une hymne pour chœur à quatre voix
1379 mixtes, comportant quatre couplets.  Les paroles sont ici identiques
1380 pour les quatre voix.  Vous remarquerez le recours aux variables afin de
1381 séparer de la structure de portée aussi bien les notes que les paroles.
1382 Vous noterez aussi une variable particulière, que nous avons appelée
1383 @qq{ArmureMetrique}, et qui contient plusieurs commandes que nous
1384 utiliserons dans les deux portées.  Dans de nombreux autres exemples,
1385 elle s'appelle @qq{global}.
1386
1387 @lilypond[quote,verbatim]
1388 keyTime = { \key c \major \time 4/4 \partial 4 }
1389
1390 SopMusic   = \relative { c'4 | e4. e8 g4  g    | a4   a   g  }
1391 AltoMusic  = \relative { c'4 | c4. c8 e4  e    | f4   f   e  }
1392 TenorMusic = \relative  { e4 | g4. g8 c4.   b8 | a8 b c d e4 }
1393 BassMusic  = \relative  { c4 | c4. c8 c4  c    | f8 g a b c4 }
1394
1395 VerseOne =
1396   \lyricmode { E -- | ter -- nal fa -- ther, | strong to save, }
1397 VerseTwo   =
1398   \lyricmode { O | Christ, whose voice the | wa -- ters heard, }
1399 VerseThree =
1400   \lyricmode { O | Ho -- ly Spi -- rit, | who didst brood }
1401 VerseFour  =
1402   \lyricmode { O | Tri -- ni -- ty of | love and pow'r }
1403
1404 \score {
1405   \new ChoirStaff <<
1406     \new Staff <<
1407       \clef "treble"
1408       \new Voice = "Sop"  { \voiceOne \keyTime \SopMusic }
1409       \new Voice = "Alto" { \voiceTwo \AltoMusic }
1410       \new Lyrics \lyricsto "Sop" { \VerseOne   }
1411       \new Lyrics \lyricsto "Sop" { \VerseTwo   }
1412       \new Lyrics \lyricsto "Sop" { \VerseThree }
1413       \new Lyrics \lyricsto "Sop" { \VerseFour  }
1414     >>
1415     \new Staff <<
1416       \clef "bass"
1417       \new Voice = "Tenor" { \voiceOne \keyTime \TenorMusic }
1418       \new Voice = "Bass"  { \voiceTwo \BassMusic }
1419     >>
1420   >>
1421 }
1422 @end lilypond
1423
1424 @seealso
1425 Manuel de notation :
1426 @ruser{Musique vocale}.
1427
1428
1429 @node Contextes et graveurs
1430 @section Contextes et graveurs
1431 @translationof Contexts and engravers
1432
1433 Nous avons évoqué rapidement les contextes et graveurs dans les
1434 chapitres précédents ; examinons en détail ces concepts essentiels
1435 à la maîtrise de LilyPond.
1436
1437 @menu
1438 * Tout savoir sur les contextes::
1439 * Création d'un contexte::
1440 * Tout savoir sur les graveurs::
1441 * Modification des propriétés d'un contexte::
1442 * Ajout et suppression de graveurs::
1443 @end menu
1444
1445
1446 @node Tout savoir sur les contextes
1447 @subsection Tout savoir sur les contextes
1448 @translationof Contexts explained
1449
1450 @cindex contextes, les différents
1451
1452 Imprimer de la musique impose d'ajouter un certain nombre d'éléments de
1453 notation.  Par exemple, voici un fragment de partition, précédé du code
1454 qui l'engendre :
1455
1456 @lilypond[quote,verbatim]
1457 \relative { cis''4 cis2. | a4 a2. | }
1458 @end lilypond
1459
1460 Si le code est assez austère, dans la partition ont été ajoutés un
1461 chiffre de mesure, des barres de mesure, des altérations et une clé.
1462 Pour une bonne raison : LilyPond @emph{interprète} le code.  Il le
1463 compulse dans l'ordre chronologique, de même qu'on lit une partition de
1464 gauche à droite ; et pendant ce traitement, le logiciel garde en
1465 mémoire les limites des mesures, ou encore quelles hauteurs de note
1466 demandent des altérations accidentelles.  Ces informations se présentent
1467 à plusieurs niveaux : ainsi, une altération n'a d'effet que sur une
1468 seule portée, tandis qu'une barre de mesure doit être synchronisée sur
1469 toute l'étendue verticale de la partition.
1470
1471 LilyPond regroupe ces règles et ces fragments d'information dans des
1472 @emph{Contextes}.  Certains contextes sont les voix (contexte
1473 @code{Voice}), les portées (contexte @code{Staff}), ou la partition dans
1474 son ensemble (contexte @code{Score}).  Ils sont ordonnés
1475 hiérarchiquement : ainsi un contexte @code{Staff} peut contenir
1476 plusieurs contextes @code{Voice}, et un contexte @code{Score} peut
1477 contenir plusieurs contextes @code{Staff}.
1478
1479 @quotation
1480 @sourceimage{context-example,5cm,,}
1481 @end quotation
1482
1483 Chaque contexte est chargé de faire appliquer certaines règles de
1484 gravure, de créer certains objets, et de prendre en compte les
1485 propriétés qui leur sont associées.  Ainsi, le contexte @code{Voice}
1486 peut faire intervenir une altération accidentelle, puis le contexte
1487 @code{Staff} devra déterminer s'il faudra imprimer ou non cette dernière
1488 dans la suite de la mesure.
1489
1490 Les barres de mesure, quant à elles, sont alignées verticalement grâce
1491 au contexte @code{Score} par défaut.  En revanche, dans une musique
1492 polymétrique, par exemple mêlant une portée à 3/4 et une autre à 4/4,
1493 les barres de mesures n'ont plus à être alignées : il faut alors
1494 modifier les comportement par défaut des contextes @code{Score} et
1495 @code{Staff}.
1496
1497 Dans une partition très simple, les contextes sont créés implicitement
1498 et peuvent être ignorés.  Mais lorsqu'il s'agit de morceaux plus amples
1499 -- entendons par là tout ce qui s'écrit sur plus d'une portée -- il faut
1500 les créer explicitement pour être sûr d'obtenir toutes les portées
1501 nécessaires, et dans le bon ordre.  Enfin, pour des morceaux impliquant
1502 une notation spéciale, modifier les contextes ou en créer de nouveaux
1503 devient extrêmement utile.
1504
1505 En plus des contextes @code{Score}, @code{Staff} et @code{Voice} sont
1506 disponibles d'autres contextes intermédiaires entre les niveaux
1507 partition et portée, chargés de gérer certains regroupement, tels que
1508 @code{PianoStaff} ou @code{ChoirStaff}.  Vous disposez aussi d'autres
1509 contextes de portée ou de voix alternatifs, ainsi que des contextes
1510 spécifiques pour les paroles, les percussions, les diagrammes pour
1511 instruments frettés, la basse chiffrée, etc.
1512
1513 Le nom de chacun des contextes est formé d'un ou plusieurs mots aux
1514 initiales en capitale et directement accolés les uns aux autres sans
1515 ponctuation, comme par exemple @code{GregorianTranscriptionStaff}.
1516
1517 @seealso
1518 Manuel de notation :
1519 @ruser{Tout savoir sur les contextes}.
1520
1521
1522 @node Création d'un contexte
1523 @subsection Création d'un contexte
1524 @translationof Creating contexts
1525
1526 @funindex \new
1527
1528 @cindex nouveaux contextes
1529 @cindex contextes, création de
1530
1531 Il en va des contextes comme de toute hiérarchie : il faut un sommet --
1532 le contexte @code{Score} en l'occurrence.  La commande @code{\score} est
1533 chargée de le créer, mais pour des partitions simples, il le sera
1534 automatiquement.  Le bloc @code{\score} contient donc une expression
1535 musicale unique ainsi que, éventuellement, la définition des supports à
1536 produire -- @code{\layout} pour du visuel, @code{\midi} pour de
1537 l'acoustique, ou bien les deux.
1538
1539 Lorsqu'une partition ne comporte qu'une voix et une seule portée, vous
1540 pouvez laisser LilyPond créer automatiquement les contextes @code{Voice}
1541 et @code{Staff} ; mais leur présence explicite devient indispensable dès
1542 que la situation se complique.  Le moyen le plus simple est d'utiliser
1543 la commande @code{\new}.  Elle doit intervenir avant une expression
1544 musicale, ainsi :
1545
1546 @example
1547 \new @var{type} @var{expression-musicale}
1548 @end example
1549
1550 @noindent
1551 où @var{type} correspond au nom du contexte (tels @code{Staff} ou
1552 @code{Voice}).  Cette commande crée un nouveau contexte, puis
1553 interprète l'@var{expression-musicale} contenue dans ledit
1554 contexte.
1555
1556 @warning{La commande @bs{}@code{new Score} ne devrait jamais servir en
1557 début de partition, puisque le contexte premier que constitue
1558 @code{Score} est créé automatiquement par l'interprétation de
1559 l'@var{expression-musicale} contenue dans le bloc @code{\score}.  Les
1560 adaptations affectant les propriétés des différents contextes et qui
1561 s'appliqueront à l'ensemble de la partition trouvent leur place au sein
1562 d'un bloc @bs{}@code{layout}, en suivant les préceptes énoncés au
1563 chapitre @ref{Modification des propriétés d'un contexte}.}
1564
1565 Nous avons déjà vu au cours des chapitres précédents de nombreux
1566 exemples où des contextes @code{Staff} ou @code{Voice} étaient créés au
1567 besoin.  Dans un but didactique, voici maintenant une application
1568 complète et abondamment commentée :
1569
1570 @lilypond[quote,verbatim,ragged-right]
1571 \score {  % start of single compound music expression
1572   <<  % start of simultaneous staves section
1573     \time 2/4
1574     \new Staff {  % create RH staff
1575       \key g \minor
1576       \clef "treble"
1577       \new Voice {  % create voice for RH notes
1578         \relative {  % start of RH notes
1579           d''4 ees16 c8. |
1580           d4 ees16 c8. |
1581         }  % end of RH notes
1582       }  % end of RH voice
1583     }  % end of RH staff
1584     \new Staff <<  % create LH staff; needs two simultaneous voices
1585       \key g \minor
1586       \clef "bass"
1587       \new Voice {  % create LH voice one
1588         \voiceOne
1589         \relative {  % start of LH voice one notes
1590           g8 <bes d> ees, <g c> |
1591           g8 <bes d> ees, <g c> |
1592         }  % end of LH voice one notes
1593       }  % end of LH voice one
1594       \new Voice {  % create LH voice two
1595         \voiceTwo
1596         \relative {  % start of LH voice two notes
1597           g4 ees |
1598           g4 ees |
1599         }  % end of LH voice two notes
1600       }  % end of LH voice two
1601     >>  % end of LH staff
1602   >>  % end of simultaneous staves section
1603 }  % end of single compound music expression
1604 @end lilypond
1605
1606 Notez que toute déclaration qui ouvre un bloc par une accolade,
1607 @code{@{}, ou un double chevron gauche, @code{<<}, est indentée de deux
1608 espaces supplémentaires, et de deux autres pour sa marque de fermeture.
1609 Bien que ceci ne soit pas obligatoire, nous vous invitons à adopter
1610 cette pratique qui vous évitera nombre d'erreurs @qq{accolades non
1611 appariées}.  La structure de la musique apparaît ainsi au premier coup
1612 d'œil, et les défauts de parité sont plus facilement repérables.  Vous
1613 remarquerez que la portée MG est créée à l'aide d'un double chevron
1614 gauche -- nécessaire pour gérer ses deux voix -- alors que la portée MD
1615 ne contient qu'une seule expression musicale -- il n'y a qu'une voix --
1616 bornée par des accolades simples.
1617
1618 @cindex contexte, nommage
1619 @cindex nommage des contextes
1620
1621 La commande @code{\new} peut aussi permettre de nommer le contexte créé,
1622 et ainsi le distinguer des autres contextes déjà existants :
1623
1624 @example
1625 \new @var{type} = @var{"UnNom"} @var{expression-musicale}
1626 @end example
1627
1628 Vous noterez la distinction entre le nom du type de contexte,
1629 @code{Staff}, @code{Voice}, etc. et le nom -- une simple suite de
1630 lettres au bon gré de l'utilisateur -- permettant d'identifier une
1631 instance particulière du type en question.  Vous pouvez utiliser des
1632 chiffres et espaces, à la stricte condition d'englober le tout dans des
1633 guillemets ; l'identificateur suivant est tout à fait valide :
1634 @code{\new Staff = "MaPortee 1" @var{expression-musicale}}.
1635 Comme nous l'avons déjà vu dans le chapitre consacré aux paroles
1636 (@ref{Voix et paroles}), cet identifiant permettra ensuite de se
1637 référer à ce contexte particulier.
1638
1639 @seealso
1640 Manuel de notation :
1641 @ruser{Création et référencement d'un contexte}.
1642
1643
1644 @node Tout savoir sur les graveurs
1645 @subsection Tout savoir sur les graveurs
1646 @translationof Engravers explained
1647
1648 @cindex engravers
1649 @cindex graveurs
1650
1651 Tout point qui compose une partition générée par LilyPond est
1652 produit par un graveur (@emph{engraver} en anglais).   Ainsi, il y en a
1653 un qui imprime les portées, un autre les têtes de note, un autre les
1654 hampes, un autre encore pour les ligatures, etc.  LilyPond dispose de
1655 plus de 120 graveurs !  La plupart des partitions ne requièrent de
1656 s'intéresser qu'à quelques-uns seulement, et pour des partitions
1657 simples, vous n'aurez même pas à vous en préoccuper.
1658
1659 Les graveurs résident et opèrent au sein des contextes.
1660 Les graveurs tels que le @code{Metronome_mark_engraver}, dont les effets
1661 s'appliquent à la partition dans son intégralité, opèrent au sein du
1662 contexte de plus haut niveau -- le contexte @code{Score}.
1663
1664 Les graveurs @code{Clef_engraver} et @code{Key_engraver} seront logés
1665 dans chacun des contextes @code{Staff} ; deux portées peuvent
1666 requérir des clefs et des armures différentes.
1667
1668 Les graveurs @code{Note_heads_engraver} et @code{Stem_engraver} résident
1669 dans chacun des contextes @code{Voice}, contexte du plus bas niveau.
1670
1671 Chaque graveur confectionne les objets spécifiquement associés à sa
1672 fonction et traite les propriétés attachées à cette fonction.  Ces
1673 propriétés, tout comme celles relatives aux contextes, peuvent être
1674 modifiées afin d'influencer le comportement du graveur et par voie de
1675 conséquence le rendu des éléments dont il a la charge.
1676
1677 Les graveurs ont tous un nom composé, formé des différents mots
1678 décrivant leur fonction.  Seule l'initiale du premier mot est en
1679 majuscule, et les mots qui le composent sont joints par un caractère
1680 souligné.  Ainsi, le @code{Staff_symbol_engraver} est chargé de créer
1681 les lignes de la portée, et le @code{Clef_engraver} détermine la hauteur
1682 de référence de la portée en dessinant le symbole de la clef.
1683
1684 Voici quelques-uns des graveurs les plus courants, ainsi que leur
1685 fonction.  Vous noterez qu'il est facile d'en connaître la fonction à
1686 partir du nom, et vice versa.
1687
1688 @multitable @columnfractions .3 .7
1689 @headitem Graveur
1690   @tab Fonction
1691 @item Accidental_engraver
1692   @tab Crée les altérations, y compris de précaution, accidentelles ou
1693   suggérées
1694 @item Beam_engraver
1695   @tab Grave les ligatures (@emph{beams})
1696 @item Clef_engraver
1697   @tab Grave les clefs
1698 @item Completion_heads_engraver
1699   @tab Divise les notes qui dépassent de la mesure
1700 @item Dynamic_engraver
1701   @tab Crée les soufflets et textes de nuance
1702 @item Forbid_line_break_engraver
1703   @tab Empêche un saut de ligne si un élément musical est toujours actif
1704 @item Key_engraver
1705   @tab Crée l'armure
1706 @item Metronome_mark_engraver
1707   @tab Grave les indications métronomiques
1708 @item Note_heads_engraver
1709   @tab Grave les têtes de note
1710 @item Rest_engraver
1711   @tab Grave les silences
1712 @item Staff_symbol_engraver
1713   @tab Grave les cinq lignes (par défaut) de la portée
1714 @item Stem_engraver
1715   @tab Crée les hampes et les trémolos sur une hampe unique
1716 @item Time_signature_engraver
1717   @tab Crée les métriques
1718 @end multitable
1719
1720 @smallspace
1721
1722 Nous verrons plus avant comment le résultat de LilyPond peut changer
1723 lorsqu'on modifie l'action des graveurs.
1724
1725 @seealso
1726 Référence des propriétés internes :
1727 @rinternals{Engravers and Performers}.
1728
1729
1730 @node Modification des propriétés d'un contexte
1731 @subsection Modification des propriétés d'un contexte
1732 @translationof Modifying context properties
1733
1734 @cindex contexte, propriétés
1735 @cindex propriétés d'un contexte, modification
1736 @cindex modification des propriétés d'un contexte
1737
1738 @funindex \set
1739 @funindex \unset
1740
1741 Les contextes gèrent les différentes valeurs des nombreuses
1742 @emph{propriétés} qui leur sont attachées.  Beaucoup d'entre elles
1743 sont susceptibles d'être modifiées afin d'influer sur l'interprétation
1744 de l'input et ainsi changer l'apparence du résultat.  On les modifie
1745 grâce à la commande @code{\set}, qui s'utilise ainsi :
1746
1747 @example
1748 \set @emph{ContexteNommé}.@emph{propriétéNommée} = #@emph{valeur}
1749 @end example
1750
1751 où @emph{ContexteNommé} est habituellement @code{Score},
1752 @code{Staff} ou @code{Voice}.  S'il n'est pas mentionné, il sera
1753 considéré comme étant @code{Voice}.
1754
1755 Les noms des propriétés de contexte sont composés de mots accolés sans
1756 trait d'union ni caractère souligné, et dont seul le premier n'aura pas
1757 d'initiale en majuscule.  Voici quelques exemples de celles les plus
1758 communément utilisées.
1759
1760 @c attempt to force this onto a new page
1761 @need 50
1762 @multitable @columnfractions .25 .15 .45 .15
1763 @headitem propriétéNommée
1764   @tab Type
1765   @tab Fonction
1766   @tab Exemple de valeur
1767 @item extraNatural
1768   @tab Booléen
1769   @tab Si vrai, ajoute un bécarre avant une altération accidentelle
1770   @tab @code{#t}, @code{#f}
1771 @item currentBarNumber
1772   @tab Entier
1773   @tab Détermine le numéro de la mesure en cours
1774   @tab @code{50}
1775 @item doubleSlurs
1776   @tab Booléen
1777   @tab Si vrai, imprime les liaisons au-dessous @strong{et} au-dessus
1778   des notes
1779   @tab @code{#t}, @code{#f}
1780 @item instrumentName
1781   @tab Texte
1782   @tab Détermine le nom à afficher en début de portée
1783   @tab @code{"Cello I"}
1784 @item fontSize
1785   @tab Réel
1786   @tab Augmente ou diminue la taille de la fonte
1787   @tab @code{2.4}
1788 @item stanza
1789   @tab Texte
1790   @tab Détermine le texte à imprimer avant le début d'un couplet
1791   @tab @code{"2"}
1792 @end multitable
1793
1794 @noindent
1795 où un booléen correspond soit à vrai (@code{#t} pour @emph{True} en
1796 anglais) ou faux (@code{#f} pour @emph{False} en anglais), un entier est
1797 un nombre entier positif, un réel est un nombre décimal positif ou
1798 négatif, et texte correspond à une suite de caractères encadrée par des
1799 apostrophes doubles.  Attention à la présence des signes dièse
1800 (@code{#}) dans deux cas particuliers : ils sont partie intégrante
1801 des valeurs booléennes et précèdent les @code{t} ou @code{f}, mais
1802 doivent aussi précéder @emph{valeur} dans le libellé de la commande
1803 @code{\set}. Il faudra donc, dans le cas d'une valeur booléenne, ne pas
1804 oublier de saisir deux signes dièse -- par exemple @code{##t}.
1805
1806 @cindex propriétés et contextes
1807 @cindex réglage de propriétés au sein des contextes
1808
1809 Avant de déterminer l'une de ces propriétés, nous devons savoir dans
1810 quel contexte elle intervient.  Si cela est bien souvent évident, il
1811 peut arriver que cela tourne au cauchemar.  Lorsque vous ne spécifiez
1812 pas le bon contexte, aucun message d'erreur ne s'affiche et l'effet
1813 attendu n'est pas au rendez-vous.  Par exemple, le @code{clefGlyph} est
1814 de manière incontestable membre du contexte @code{Staff}, puisque c'est
1815 bien le glyphe de clef de la portée qui doit être changé.
1816 Dans l'exemple suivant, la première portée affiche effectivement la
1817 bonne clef, alors que ce n'est pas le cas pour la deuxième -- qui porte
1818 la clef de sol par défaut au lieu d'une clef de basse (clef de fa) --
1819 dans la mesure où le contexte n'a pas été spécifié.
1820
1821 @lilypond[quote,verbatim,ragged-right]
1822 <<
1823   \new Staff \relative {
1824     \set Staff.clefGlyph = "clefs.C"
1825     c''4 c
1826  }
1827   \new Staff \relative {
1828     \set clefGlyph = "clefs.F"  % Wrong!
1829   d'4 d
1830  }
1831 >>
1832 @end lilypond
1833
1834 Dans la mesure où le nom de contexte par défaut est @code{Voice}, la
1835 deuxième commande @code{\set} a défini la propriété @code{clefGlyph}
1836 dans le contexte de voix.  Puisque LilyPond n'ira pas chercher une telle
1837 propriété dans le contexte @code{Voice}, celle-ci ne sera pas
1838 interprétée.  Il ne s'agit pas d'une erreur, aucun message d'erreur ne
1839 sera ni émis ni enregistré.
1840
1841 De la même manière, une faute d'orthographe dans le nom de la propriété
1842 ne générera aucun message d'erreur et l'action escomptée ne se produira
1843 pas.  Vous pourriez déterminer par la commande @code{\set} n'importe
1844 quelle @qq{propriété}, même fictive, à partir de n'importe quel nom et
1845 dans n'importe lequel des contextes disponibles.  Mais tant que ce nom
1846 est inconnu de LilyPond, rien ne se passera.  Certains éditeurs de texte
1847 disposent d'une prise en charge spécifique aux fichiers source LilyPond,
1848 à l'instar de LilyPondTool couplé à JEdit et qui documente les noms des
1849 propriétés dans une infobulle lorsque vous les survolez à la souris, ou
1850 les souligne différemment s'ils sont inconnus, comme ConTEXT.  Dans le
1851 cas où votre éditeur ne dispose pas de ces fonctionnalités, nous vous
1852 recommandons de vérifier le nom des propriétés que vous manipulez dans
1853 la Référence des propriétés internes -- voir
1854 @rinternals{Tunable context properties}, ou @rinternals{Contexts}.
1855
1856 La propriété @code{clefGlyph} ne sera prise en compte que si elle
1857 est définie dans un contexte @code{Staff} ; d'autres propriétés
1858 peuvent par contre être définies dans plusieurs contextes différents.
1859 C'est le cas de la propriété @code{extraNatural} qui est définie par
1860 défaut à @code{##t} (vrai) pour toutes les portées.  Si vous lui
1861 attribuez la valeur @code{##f} (faux) dans un contexte @code{Staff}
1862 particulier, elle ne s'appliquera qu'aux altérations de la portée en
1863 question ; si vous lui attribuez la valeur @qq{faux} au niveau du
1864 contexte @code{Score}, cela s'appliquera alors à toutes les portées.
1865
1866 Voici comment supprimer les bécarres supplémentaires pour une portée :
1867
1868 @lilypond[quote,verbatim,ragged-right]
1869 <<
1870   \new Staff \relative {
1871     aeses'2 aes
1872   }
1873   \new Staff \relative {
1874     \set Staff.extraNatural = ##f
1875     aeses'2 aes
1876   }
1877 >>
1878 @end lilypond
1879
1880 @noindent
1881 et pour toutes les portées :
1882
1883 @lilypond[quote,verbatim,ragged-right]
1884 <<
1885   \new Staff \relative {
1886     aeses'2 aes
1887   }
1888   \new Staff \relative {
1889     \set Score.extraNatural = ##f
1890     aeses'2 aes
1891   }
1892 >>
1893 @end lilypond
1894
1895 Autre exemple, si la propriété @code{clefTransposition} est déterminée
1896 au niveau du contexte @code{Score}, elle modifiera la valeur de la
1897 transposition en cours pour toutes les portées actives ; cette valeur
1898 sera considérée comme étant la nouvelle valeur par défaut pour toutes
1899 les portées à venir.
1900
1901 La commande opposée, @code{\unset}, efface la propriété du contexte ; la
1902 plupart des propriétés reviennent de ce fait à leur valeur par défaut.
1903 En règle générale, la commande @code{\unset} n'est pas nécessaire dès
1904 lors que vous faites appel à une nouvelle commande @code{\set} pour
1905 modifier le réglage.
1906
1907 Les commandes @code{\set} et @code{\unset} peuvent intervenir n'importe
1908 où dans votre fichier source.  Elles seront effectives dès leur
1909 apparition et jusqu'à la fin de la partition, à moins d'être affectées
1910 par un @code{\unset} ou un nouveau @code{\set}.  À titre d'exemple, nous
1911 allons jouer avec la taille des fontes, ce qui affecte entre autres la
1912 grosseur des têtes de note.  Les modifications s'appliquent toujours par
1913 rapport à la valeur par défaut, non par rapport à la dernière valeur
1914 définie.
1915
1916 @lilypond[quote,verbatim,ragged-right]
1917 \relative {
1918   c'4 d
1919   % make note heads smaller
1920   \set fontSize = #-4
1921   e4 f |
1922   % make note heads larger
1923   \set fontSize = #2.5
1924   g4 a
1925   % return to default size
1926   \unset fontSize
1927   b4 c |
1928 }
1929 @end lilypond
1930
1931 Nous venons de voir comment déterminer la valeur de différents types de
1932 propriété.  N'oubliez pas que les nombres, entiers ou réels, doivent
1933 être précédés d'un signe dièse (@code{#}) et les valeurs vrai ou faux de
1934 deux signes dièse -- respectivement @code{##t} et @code{##f} --. Une
1935 valeur textuelle doit être encadrée de guillemets anglais,
1936 @code{"@dots{}"}, bien que, comme nous le constaterons plus tard, la
1937 commande @code{\markup} permet aussi de spécifier du texte.
1938
1939
1940 @subsubheading Définition des propriétés de contexte avec @code{\with}
1941 @translationof Setting context properties with @code{\with}
1942
1943 @funindex \with
1944
1945 @cindex propriétés d'un contexte, définition avec \with
1946
1947 Les propriétés d'un contexte peuvent aussi être réglées lors de la
1948 création de ce contexte.  Ceci constitue parfois une façon plus claire
1949 de spécifier les valeurs d'une propriété pour la durée de vie du
1950 contexte.  Lorsque vous créez un contexte à l'aide de la commande
1951 @code{\new}, vous pouvez la faire suivre immédiatement d'un bloc
1952 @code{\with @{ @dots{} @}} qui contiendra les réglages des différentes
1953 propriétés.  Ainsi, si nous voulions par exemple annuler l'impression
1954 des bécarres supplémentaires sur la durée d'une portée, nous
1955 écririons :
1956
1957 @example
1958 \new Staff \with @{ extraNatural = ##f @}
1959 @end example
1960
1961 @noindent
1962 ce qui donnerait :
1963
1964 @lilypond[quote,verbatim,ragged-right]
1965 <<
1966   \new Staff
1967     \relative {
1968       gisis'4 gis aeses aes
1969     }
1970   \new Staff \with { extraNatural = ##f } {
1971     \relative {
1972       gisis'4 gis aeses aes
1973     }
1974   }
1975 >>
1976 @end lilypond
1977
1978 Les propriétés réglées de cette manière peuvent néanmoins être modifiées
1979 de façon dynamique grâce à @code{\set} ; un @code{\unset} les ramènera à
1980 leur valeur initialisée par @code{\with}.
1981
1982 @cindex fontSize, valeur par défaut et réglage
1983
1984 La propriété @code{fontSize} constitue une exception : lorsqu'elle
1985 est déterminée au sein d'un bloc @code{\with}, cela redéfinit la valeur
1986 par défaut de la taille de fonte.  Une modification est possible par la
1987 commande @code{\set}, mais la commande @code{\unset fontSize} fera
1988 revenir à la nouvelle valeur par défaut.
1989
1990
1991 @subsubheading Définition des propriétés de contexte avec @code{\context}
1992 @translationof Setting context properties with @code{\context}
1993
1994 @cindex propriétés d'un contexte, définition avec \context
1995
1996 @funindex \context
1997
1998 Vous pouvez régler les valeurs des propriétés de contexte en une seule
1999 fois pour tous les contextes d'un même type, par exemple tous les
2000 contextes @code{Staff}.  Le type du contexte doit être donné
2001 explicitement d'après son nom, par exemple @code{Staff}, précédé d'une
2002 oblique inverse, donc nous saisirons @code{\Staff}.  La manière de
2003 régler la valeur des propriétés est la même que ce que nous avons vu
2004 avec la commande @code{\with}, puisqu'on se place dans un bloc
2005 @code{\context} inclus dans un bloc @code{\layout}.  Chaque bloc
2006 @code{\context} affectera tous les contextes concernés par le bloc
2007 @code{\score} ou @code{\book} au sein duquel apparaît ce bloc
2008 @code{\layout}.  Voici comment le mettre en place :
2009
2010 @lilypond[verbatim,quote]
2011 \score {
2012   \new Staff {
2013     \relative {
2014       cisis''4 e d cis
2015     }
2016   }
2017   \layout {
2018     \context {
2019       \Staff
2020       extraNatural = ##t
2021     }
2022   }
2023 }
2024 @end lilypond
2025
2026 Dans le cas où ces ajustements de propriété doivent affecter
2027 toutes les portées de la partition, nous utiliserons alors :
2028
2029 @lilypond[quote,verbatim]
2030 \score {
2031   <<
2032     \new Staff {
2033       \relative {
2034         gisis'4 gis aeses aes
2035       }
2036     }
2037     \new Staff {
2038       \relative {
2039         gisis'4 gis aeses aes
2040       }
2041     }
2042   >>
2043   \layout {
2044     \context {
2045       \Score extraNatural = ##f
2046     }
2047   }
2048 }
2049 @end lilypond
2050
2051 @noindent
2052 Les propriétés de contexte ainsi définies peuvent être adaptées pour
2053 chacun des contextes en particulier grâce à un bloc @code{\with} ou bien
2054 une commande @code{\set} au fil des notes.
2055
2056 @seealso
2057 Manuel de notation :
2058 @ruser{Modification des réglages par défaut d'un contexte},
2059 @ruser{La commande de fixation (set)}.
2060
2061 Référence des propriétés internes :
2062 @rinternals{Contexts},
2063 @rinternals{Tunable context properties}.
2064
2065
2066 @node Ajout et suppression de graveurs
2067 @subsection Ajout et suppression de graveurs
2068 @translationof Adding and removing engravers
2069
2070 @cindex graveurs, ajout
2071 @cindex graveurs, suppression
2072
2073 @funindex \consists
2074 @funindex \remove
2075
2076 Nous avons vu que chaque contexte met en œuvre plusieurs graveurs, et
2077 que chacun de ces graveurs est chargé de générer une composante
2078 particulière du fichier de sortie, qui les barres de mesure, qui la
2079 portée, qui les têtes de note, les hampes, etc.  Le fait de supprimer un
2080 graveur d'un contexte éliminera sa contribution au fichier de sortie.
2081 Bien que ce soit là un moyen radical de modifier le résultat, cette
2082 pratique est dans quelques cas fort utile.
2083
2084
2085 @subsubheading Modification d'un seul contexte
2086 @translationof Changing a single context
2087
2088 Nous utilisons, pour supprimer un graveur d'un contexte, la commande
2089 @code{\with} dès la création du-dit contexte, comme nous l'avons vu dans
2090 la section précédente.
2091
2092 Illustrons notre propos en reprenant un exemple du chapitre précédent,
2093 duquel nous supprimerons les lignes de la portée.  Pour mémoire, les
2094 lignes d'une portée sont générées par le @code{Staff_symbol_engraver}.
2095
2096 @lilypond[quote,verbatim,ragged-right]
2097 \new Staff \with {
2098   \remove "Staff_symbol_engraver"
2099 }
2100 \relative {
2101   c'4 d
2102   \set fontSize = #-4  % make note heads smaller
2103   e4 f |
2104   \set fontSize = #2.5  % make note heads larger
2105   g4 a
2106   \unset fontSize  % return to default size
2107   b4 c |
2108 }
2109 @end lilypond
2110
2111 @cindex ambitus, graveur
2112
2113 Vous pouvez aussi ajouter individuellement un graveur à un contexte. La
2114 commande se formule ainsi :
2115
2116 @code{\consists @var{Nom_du_graveur}}
2117
2118 @noindent
2119 et se place dans un bloc @code{\with}.  Certaines partitions vocales
2120 font apparaître un @rglos{ambitus} au début de la portée, afin
2121 d'indiquer ses notes extrêmes.  L'ambitus est généré par
2122 l'@code{Ambitus_engraver}, que l'on peut adjoindre à n'importe quel
2123 contexte.  Si nous l'ajoutons au contexte @code{Voice}, seule la
2124 tessiture de cette voix sera calculée :
2125
2126 @lilypond[quote,verbatim,ragged-right]
2127 \new Staff <<
2128   \new Voice \with {
2129     \consists "Ambitus_engraver"
2130   } {
2131     \relative {
2132       \voiceOne
2133       c''4 a b g
2134     }
2135   }
2136   \new Voice {
2137     \relative {
2138       \voiceTwo
2139       c'4 e d f
2140     }
2141   }
2142 >>
2143 @end lilypond
2144
2145 @noindent
2146 alors que si nous l'ajoutons au contexte @code{Staff},
2147 l'@code{Ambitus_engraver} calculera l'écart maximal à partir de toutes
2148 les notes de toutes les voix de la portée :
2149
2150 @lilypond[quote,verbatim,ragged-right]
2151 \new Staff \with {
2152   \consists "Ambitus_engraver"
2153 }
2154 <<
2155   \new Voice {
2156     \relative {
2157       \voiceOne
2158       c''4 a b g
2159     }
2160   }
2161   \new Voice {
2162     \relative {
2163       \voiceTwo
2164       c'4 e d f
2165     }
2166   }
2167 >>
2168 @end lilypond
2169
2170
2171 @subsubheading Modification de tous les contextes d'un même type
2172 @translationof Changing all contexts of the same type
2173
2174 @funindex \layout
2175
2176 Les exemples ci-dessus nous ont montré comment ajouter ou retirer des
2177 graveurs à des contextes individuels.  Nous pourrions aussi ajouter ou
2178 supprimer des graveurs à tous les contextes d'un même type en insérant
2179 les commandes pour le contexte approprié au sein d'un bloc
2180 @code{\layout}.  Si nous voulions afficher un ambitus pour chacune des
2181 portées d'un système à quatre portées, il nous suffirait d'écrire :
2182
2183 @lilypond[quote,verbatim,ragged-right]
2184 \score {
2185   <<
2186     \new Staff {
2187       \relative {
2188         c''4 a b g
2189       }
2190     }
2191     \new Staff {
2192       \relative {
2193         c'4 a b g
2194       }
2195     }
2196     \new Staff {
2197       \clef "G_8"
2198       \relative {
2199         c'4 a b g
2200       }
2201     }
2202     \new Staff {
2203       \clef "bass"
2204       \relative {
2205         c4 a b g
2206       }
2207     }
2208   >>
2209   \layout {
2210     \context {
2211       \Staff
2212       \consists "Ambitus_engraver"
2213     }
2214   }
2215 }
2216 @end lilypond
2217
2218 @noindent
2219 Vous réglerez de la même manière les propriétés de tous les contextes
2220 d'un type particulier si vous insérez les commandes @code{\set} dans un
2221 bloc @code{\context}.
2222
2223 @seealso
2224 Manuel de notation :
2225 @ruser{Modification des greffons de contexte},
2226 @ruser{Modification des réglages par défaut d'un contexte}.
2227
2228 @knownissues
2229 Dans la mesure où les @code{Stem_engraver} et @code{Beam_engraver}
2230 rattachent à des têtes de note les objets qu'ils créent, désactiver le
2231 @code{Note_heads_engraver} entraîne l'absence de hampe et de ligature.
2232
2233
2234 @node Extension des modèles
2235 @section Extension des modèles
2236 @translationof Extending the templates
2237
2238 Bon, vous avez lu le tutoriel, vous savez écrire de la musique.  Mais
2239 comment obtenir les portées que vous voulez ?  Les @ref{Modèles}, c'est
2240 bien beau, mais que faire quand ils ne traitent pas ce que l'on veut
2241 précisément ?
2242
2243 Les exemples qui suivent vous donneront des méthodes générales pour
2244 adapter des modèles.
2245
2246 @menu
2247 * Soprano et violoncelle::
2248 * Partition pour chœur à quatre voix mixtes::
2249 * Écriture d'une partition à partir de zéro::
2250 * Économie de saisie grâce aux identificateurs et fonctions::
2251 * Conducteurs et parties::
2252 @end menu
2253
2254
2255 @node Soprano et violoncelle
2256 @subsection Soprano et violoncelle
2257 @translationof Soprano and cello
2258
2259 @cindex modèles, modification des
2260
2261 Commencez par le modèle qui vous semblera le plus proche de ce à quoi
2262 vous voulez aboutir.  Disons par exemple que vous voulez écrire une pièce
2263 pour soprano et violoncelle : dans ce cas, on pourrait commencer par les
2264 @qq{notes et paroles}, pour la partie de soprano.
2265
2266 @example
2267 \version @w{"@version{}"}
2268
2269 melodie = \relative @{
2270   \clef "treble"
2271   \key c \major
2272   \time 4/4
2273   a4 b c d
2274 @}
2275
2276 texte = \lyricmode @{
2277   Aaa Bee Cee Dee
2278 @}
2279
2280 \score@{
2281   <<
2282     \new Voice = "un" @{
2283       \autoBeamOff
2284       \melodie
2285     @}
2286     \new Lyrics \lyricsto "un" \texte
2287   >>
2288   \layout @{ @}
2289   \midi @{ @}
2290 @}
2291 @end example
2292
2293 Maintenant, on veut ajouter une partie de violoncelle.
2294 Jetons un coup d'œil sur l'exemple avec les notes seules :
2295
2296 @example
2297 \version @w{"@version{}"}
2298
2299 melodie = \relative @{
2300   \clef "treble"
2301   \key c \major
2302   \time 4/4
2303   a4 b c d
2304 @}
2305
2306 \score @{
2307   \new Staff \melodie
2308   \layout @{ @}
2309   \midi @{ @}
2310 @}
2311 @end example
2312
2313 On n'a pas besoin de deux commandes @code{\version}.  Ce dont on a
2314 besoin, c'est de la section @code{melodie}. De même, on n'a pas besoin
2315 de deux sections @code{\score} -- si nous les gardions toutes les deux,
2316 on obtiendrait deux parties séparées ; mais nous voulons un vrai duo,
2317 avec les deux parties ensemble.  Dans la section @code{\score}, on n'a
2318 pas besoin non plus de deux @code{\layout} ni de deux @code{\midi}.
2319
2320 Si on se contente de couper et coller les sections @code{melodie}, on se
2321 retrouvera avec deux sections de ce nom ; il nous faut donc les
2322 renommer.  Appelons la section pour la soprano @code{sopranoMusique} et
2323 celle pour le violoncelle @code{violoncelleMusique}.  Tant qu'on y est,
2324 renommons @code{texte} en @code{sopranoParoles}.  Attention à bien
2325 renommer les deux occurrences de chacune de ces dénominations :
2326 c'est-à-dire la définition de départ, où l'on trouve
2327 @code{melodie = \relative @{ }, et l'endroit où cette dénomination
2328 est utilisée, dans la section @code{\score}.
2329
2330 Et puis, toujours tant qu'on y est, mettons le violoncelle en clé de fa,
2331 comme le veut l'usage, et donnons-lui d'autres notes.
2332
2333 @example
2334 \version @w{"@version{}"}
2335
2336 sopranoMusique = \relative @{
2337   \clef "treble"
2338   \key c \major
2339   \time 4/4
2340   a4 b c d
2341 @}
2342
2343 sopranoParoles = \lyricmode @{
2344   Laaa Siii Dooo Rééé
2345 @}
2346
2347 violoncelleMusique = \relative @{
2348   \clef "bass"
2349   \key c \major
2350   \time 4/4
2351   d4 g fis8 e d4
2352 @}
2353
2354 \score@{
2355   <<
2356     \new Voice = "un" @{
2357       \autoBeamOff
2358       \sopranoMusique
2359     @}
2360     \new Lyrics \lyricsto "un" \sopranoParoles
2361   >>
2362   \layout @{ @}
2363   \midi @{ @}
2364 @}
2365 @end example
2366
2367 Voilà qui est mieux, mais la partie de violoncelle n'apparaît pas sur
2368 la partition -- en effet, nous n'y avons pas fait appel dans la section
2369 @code{\score}.  Si l'on veut que la partie de violoncelle s'imprime sous
2370 la partie de soprano, on va devoir ajouter :
2371
2372 @example
2373 \new Staff \musiqueVioloncelle
2374 @end example
2375
2376 @noindent
2377 en dessous de tout ce qui concerne la soprano.  Il nous faut également
2378 encadrer la musique par des @code{<<} et @code{>>}, qui feront comprendre
2379 à LilyPond que plusieurs événements -- ici, des objets @code{Staff} --
2380 se déroulent en même temps.  Le bloc @code{\score} ressemble maintenant à
2381
2382 @c Indentation in this example is deliberately poor
2383 @example
2384 \score @{
2385   <<
2386   <<
2387     \new Voice = "un" @{
2388       \autoBeamOff
2389       \sopranoMusique
2390     @}
2391     \new Lyrics \lyricsto "un" \sopranoParoles
2392   >>
2393   \new Staff \violoncelleMusique
2394   >>
2395   \layout @{ @}
2396   \midi @{ @}
2397 @}
2398 @end example
2399
2400 @noindent
2401 C'est un peu le bazar dans tout ça ; mais il vous sera facile de
2402 mettre un peu d'ordre dans l'indentation.  Voici le modèle pour
2403 soprano et violoncelle au complet :
2404
2405 @lilypond[quote,verbatim,ragged-right,addversion]
2406 sopranoMusic = \relative {
2407   \clef "treble"
2408   \key c \major
2409   \time 4/4
2410   a4 b c d
2411 }
2412
2413 sopranoLyrics = \lyricmode {
2414   Aaa Bee Cee Dee
2415 }
2416
2417 celloMusic = \relative {
2418   \clef "bass"
2419   \key c \major
2420   \time 4/4
2421   d4 g fis8 e d4
2422 }
2423
2424 \score {
2425   <<
2426     <<
2427       \new Voice = "one" {
2428         \autoBeamOff
2429         \sopranoMusic
2430       }
2431       \new Lyrics \lyricsto "one" \sopranoLyrics
2432     >>
2433     \new Staff \celloMusic
2434   >>
2435   \layout { }
2436   \midi { }
2437 }
2438 @end lilypond
2439
2440 @seealso
2441 Les patrons originaux sont disponibles à l'annexe
2442 @ref{Modèles pour portée unique}.
2443
2444
2445 @node Partition pour chœur à quatre voix mixtes
2446 @subsection Partition pour chœur à quatre voix mixtes
2447 @translationof Four-part SATB vocal score
2448
2449 @cindex exemple, SATB
2450 @cindex SATB, squelette
2451
2452 La plupart des œuvres écrites pour chœur à quatre voix mixtes et
2453 orchestre, comme Elias de Mendelssohn ou le Messie de Haendel, disposent
2454 la musique et les paroles du chœur sur quatre portées -- soprano, alto,
2455 ténor et basse -- surmontant une réduction pour piano de
2456 l'accompagnement orchestral.  En voici un exemple, tiré du Messie de
2457 Haendel :
2458
2459 @c The following should appear as music without code
2460 @lilypond[quote,ragged-right]
2461 global = { \key d \major \time 4/4 }
2462
2463 sopranoMusic = \relative {
2464   \clef "treble"
2465   r4 d''2 a4 | d4. d8 a2 | cis4 d cis2 |
2466 }
2467 sopranoWords = \lyricmode {
2468   Wor -- thy | is the lamb | that was slain |
2469 }
2470
2471 altoMusic = \relative {
2472   \clef "treble"
2473   r4 a'2 a4 | fis4. fis8 a2 | g4 fis e2 |
2474 }
2475 altoWords = \sopranoWords
2476
2477 tenorMusic = \relative {
2478   \clef "G_8"
2479   r4 fis'2 e4 | d4. d8 d2 | e4 a, cis2 |
2480 }
2481 tenorWords = \sopranoWords
2482
2483 bassMusic = \relative {
2484   \clef "bass"
2485   r4 d'2 cis4 | b4. b8 fis2 | e4 d a'2 |
2486 }
2487 bassWords = \sopranoWords
2488
2489 upper = \relative {
2490   \clef "treble"
2491   \global
2492   r4 <a' d fis>2 <a e' a>4 |
2493   <d fis d'>4. <d fis d'>8 <a d a'>2 |
2494   <g cis g'>4 <a d fis> <a cis e>2 |
2495 }
2496
2497 lower = \relative {
2498   \clef "bass"
2499   \global
2500   <d, d'>4 <d d'>2 <cis cis'>4 |
2501   <b b'>4. <b' b'>8 <fis fis'>2 |
2502   <e e'>4 <d d'> <a' a'>2 |
2503 }
2504
2505 \score {
2506   <<  % combine ChoirStaff and PianoStaff in parallel
2507     \new ChoirStaff <<
2508       \new Staff = "sopranos"
2509       \with { instrumentName = #"Soprano" }
2510       <<
2511         \new Voice = "sopranos" {
2512           \global
2513           \sopranoMusic
2514         }
2515       >>
2516       \new Lyrics \lyricsto "sopranos" {
2517         \sopranoWords
2518       }
2519       \new Staff = "altos"
2520       \with { instrumentName = #"Alto" }
2521       <<
2522         \new Voice = "altos" {
2523           \global
2524           \altoMusic
2525         }
2526       >>
2527       \new Lyrics \lyricsto "altos" {
2528         \altoWords
2529       }
2530       \new Staff = "tenors"
2531       \with { instrumentName = #"Tenor" }
2532       <<
2533         \new Voice = "tenors" {
2534           \global
2535           \tenorMusic
2536         }
2537       >>
2538       \new Lyrics \lyricsto "tenors" {
2539         \tenorWords
2540       }
2541       \new Staff = "basses"
2542       \with { instrumentName = #"Bass" }
2543       <<
2544         \new Voice = "basses" {
2545           \global
2546           \bassMusic
2547         }
2548       >>
2549       \new Lyrics \lyricsto "basses" {
2550         \bassWords
2551       }
2552     >>  % end ChoirStaff
2553     \new PianoStaff \with { instrumentName = #"Piano" }
2554     <<
2555       \new Staff = "upper" \upper
2556       \new Staff = "lower" \lower
2557     >>
2558   >>
2559 }
2560 @end lilypond
2561
2562 @warning{Cette présentation s'obtient facilement à l'aide du gabarit
2563 préprogrammé @code{satb.ly} -- voir @ref{Gabarits préprogrammés}.  Il
2564 masque, dans un but de simplification, totalement la structure des
2565 contextes nécessaires et les génère automatiquement.  Pour les besoins
2566 de la démonstration et à titre didactique nous procèderons ici pas à
2567 pas, ce gabarit préprogrammé ne correspondant pas forcément à vos
2568 attentes.}
2569
2570 Le gabarit qui se rapprocherait le plus de cette mise en forme est
2571 @ref{Partition pour chœur SATB avec réduction pour piano} -- voir
2572 @ref{Modèles pour ensemble vocal} -- mais encore faudrait-il en
2573 modifier la mise en forme et refaire la partie de piano qui n'est
2574 plus une simple reprise des parties vocales.  Les variables qui
2575 gèrent la musique et les paroles du chœur ne nécessitent pas de
2576 modification, mais il nous faut d'autres variables pour la
2577 réduction de piano.
2578
2579 L'ordre dans lequel apparaissent les contextes dans le @code{ChoirStaff}
2580 du modèle ne correspond pas à ce que nous voyons ci-dessus.  Il nous
2581 faudra y revenir pour obtenir quatre portées avec des paroles en dessous
2582 de chacune d'elles.  Toutes les voix devraient être @code{\voiceOne},
2583 ce qui est la position par défaut ; il nous faudra donc éliminer toutes
2584 les commandes @code{\voiceXXX}.  Les ténors auront besoin d'une clé
2585 spécifique.  Enfin, nous n'avons pas encore abordé la façon dont les
2586 paroles sont présentées dans le modèle ; nous procéderons donc comme
2587 nous en avons l'habitude.  Il faudra aussi ajouter un nom à chaque
2588 portée.
2589
2590 Une fois tout ceci accompli, voici notre @code{ChoirStaff} :
2591
2592 @example
2593 \new ChoirStaff <<
2594   \new Staff = "sopranos"
2595   \with @{ instrumentName = #"Soprano" @}
2596   <<
2597     \new Voice = "sopranos" @{
2598       \global
2599       \sopranoMusic
2600     @}
2601   >>
2602   \new Lyrics \lyricsto "sopranos" @{
2603     \sopranoWords
2604   @}
2605   \new Staff = "altos"
2606   \with @{ instrumentName = #"Alto" @}
2607   <<
2608     \new Voice = "altos" @{
2609       \global
2610       \altoMusic
2611     @}
2612   >>
2613   \new Lyrics \lyricsto "altos" @{
2614     \altoWords
2615   @}
2616   \new Staff = "tenors"
2617   \with @{ instrumentName = #"Tenor" @}
2618   <<
2619     \new Voice = "tenors" @{
2620       \global
2621       \tenorMusic
2622     @}
2623   >>
2624   \new Lyrics \lyricsto "tenors" @{
2625     \tenorWords
2626   @}
2627   \new Staff = "basses"
2628   \with @{ instrumentName = #"Bass" @}
2629   <<
2630     \new Voice = "basses" @{
2631       \global
2632       \bassMusic
2633     @}
2634   >>
2635   \new Lyrics \lyricsto "basses" @{
2636     \bassWords
2637   @}
2638 >>  % end ChoirStaff
2639 @end example
2640
2641 Il nous faut maintenant nous occuper de la partie de piano.  Nous allons
2642 nous contenter de récupérer la partie de piano du modèle @qq{Solo
2643 piano} :
2644
2645 @example
2646 \new PianoStaff \with @{ instrumentName = #"Piano" @}
2647 <<
2648   \new Staff = "upper" \superieur
2649   \new Staff = "lower" \inferieur
2650 >>
2651 @end example
2652
2653 puis d'ajouter les définitions de variable pour @code{superieur} et
2654 @code{inferieur}.
2655
2656 Les systèmes pour chœur et pour piano doivent être combinés à l'aide de
2657 doubles chevrons gauche/droite puisqu'ils doivent s'empiler :
2658
2659 @example
2660 <<  % combine ChoirStaff and PianoStaff one above the other
2661   \new ChoirStaff <<
2662     \new Staff = "sopranos" <<
2663       \new Voice = "sopranos" @{
2664         \global
2665         \sopranoMusic
2666       @}
2667     >>
2668     \new Lyrics \lyricsto "sopranos" @{
2669       \sopranoWords
2670      @}
2671     \new Staff = "altos" <<
2672       \new Voice = "altos" @{
2673         \global
2674         \altoMusic
2675       @}
2676     >>
2677     \new Lyrics \lyricsto "altos" @{
2678       \altoWords
2679     @}
2680     \new Staff = "tenors" <<
2681       \clef "G_8"  % tenor clef
2682       \new Voice = "tenors" @{
2683         \global
2684         \tenorMusic
2685       @}
2686     >>
2687     \new Lyrics \lyricsto "tenors" @{
2688       \tenorWords
2689     @}
2690     \new Staff = "basses" <<
2691       \clef "bass"
2692       \new Voice = "basses" @{
2693         \global
2694         \bassMusic
2695       @}
2696     >>
2697     \new Lyrics \lyricsto "basses" @{
2698       \bassWords
2699     @}
2700   >>  % end ChoirStaff
2701
2702   \new PianoStaff \with @{ instrumentName = #"Piano" @}
2703   <<
2704     \new Staff = "upper" \upper
2705     \new Staff = "lower" \lower
2706   >>
2707 >>
2708 @end example
2709
2710 Une fois tout cela mis en place, et après avoir ajouté les notes et les
2711 paroles de ces trois mesures du Messie, nous obtenons :
2712
2713 @lilypond[quote,verbatim,ragged-right,addversion]
2714 global = { \key d \major \time 4/4 }
2715 sopranoMusic = \relative {
2716   \clef "treble"
2717   r4 d''2 a4 | d4. d8 a2 | cis4 d cis2 |
2718 }
2719 sopranoWords = \lyricmode {
2720   Wor -- thy | is the lamb | that was slain |
2721 }
2722 altoMusic = \relative {
2723   \clef "treble"
2724   r4 a'2 a4 | fis4. fis8 a2 | g4 fis fis2 |
2725 }
2726 altoWords = \sopranoWords
2727 tenorMusic = \relative {
2728   \clef "G_8"
2729   r4 fis'2 e4 | d4. d8 d2 | e4 a, cis2 |
2730 }
2731 tenorWords = \sopranoWords
2732 bassMusic = \relative {
2733   \clef "bass"
2734   r4 d'2 cis4 | b4. b8 fis2 | e4 d a'2 |
2735 }
2736 bassWords = \sopranoWords
2737 upper = \relative {
2738   \clef "treble"
2739   \global
2740   r4 <a' d fis>2 <a e' a>4 |
2741   <d fis d'>4. <d fis d'>8 <a d a'>2 |
2742   <g cis g'>4 <a d fis> <a cis e>2 |
2743 }
2744 lower = \relative {
2745   \clef "bass"
2746   \global
2747   <d, d'>4 <d d'>2 <cis cis'>4 |
2748   <b b'>4. <b' b'>8 <fis fis'>2 |
2749   <e e'>4 <d d'> <a' a'>2 |
2750 }
2751
2752 \score {
2753   <<  % combine ChoirStaff and PianoStaff in parallel
2754     \new ChoirStaff <<
2755       \new Staff = "sopranos"
2756       \with { instrumentName = #"Soprano" }
2757       <<
2758         \new Voice = "sopranos" {
2759           \global
2760           \sopranoMusic
2761         }
2762       >>
2763       \new Lyrics \lyricsto "sopranos" {
2764         \sopranoWords
2765       }
2766       \new Staff = "altos"
2767       \with { instrumentName = #"Alto" }
2768       <<
2769         \new Voice = "altos" {
2770           \global
2771           \altoMusic
2772         }
2773       >>
2774       \new Lyrics \lyricsto "altos" {
2775         \altoWords
2776       }
2777       \new Staff = "tenors"
2778       \with { instrumentName = #"Tenor" }
2779       <<
2780         \new Voice = "tenors" {
2781           \global
2782           \tenorMusic
2783         }
2784       >>
2785       \new Lyrics \lyricsto "tenors" {
2786         \tenorWords
2787       }
2788       \new Staff = "basses"
2789       \with { instrumentName = #"Bass" }
2790       <<
2791         \new Voice = "basses" {
2792           \global
2793           \bassMusic
2794         }
2795       >>
2796       \new Lyrics \lyricsto "basses" {
2797         \bassWords
2798       }
2799     >>  % end ChoirStaff
2800
2801     \new PianoStaff
2802     \with { instrumentName = #"Piano  " }
2803     <<
2804       \new Staff = "upper" \upper
2805       \new Staff = "lower" \lower
2806     >>
2807   >>
2808 }
2809 @end lilypond
2810
2811
2812 @node Écriture d'une partition à partir de zéro
2813 @subsection Écriture d'une partition à partir de zéro
2814 @translationof Building a score from scratch
2815
2816 @cindex modèles, création
2817 @cindex squelettes, création
2818
2819 Après avoir acquis une certaine dextérité dans l'écriture de code
2820 LilyPond, vous devez vous sentir suffisamment prêt à vous lancer dans
2821 la création d'une partition à partir de zéro, autrement dit en ne
2822 partant pas d'un exemple.  Vous pourrez ainsi vous construire vos
2823 propres patrons selon le type de musique que vous affectionnez plus
2824 particulièrement.  Pour voir comment procéder, nous allons monter la
2825 partition d'un prélude pour orgue.
2826
2827 Nous débutons par une section d'en-tête ; nous y mettrons entre
2828 autres le titre et le nom du compositeur.  Puis viennent toutes les
2829 définitions de toutes les variables.  Nous terminons par le bloc
2830 @code{\score}.  Attelons-nous pour cette aventure, en gardant bien à
2831 l'esprit ce que nous venons de dire ; nous nous occuperons des
2832 détails en temps voulu.
2833
2834 Nous nous appuyons sur les deux premières mesures du prélude sur
2835 @emph{Jesu, meine Freude}, écrit pour orgue avec pédalier.  Vous pouvez
2836 voir ces deux mesures au bas de cette page.  La main droite comporte
2837 deux voix, la main gauche et le pédalier une seule.  Il nous faut donc
2838 quatre définitions de musique, plus une qui contiendra la métrique et
2839 l'armure :
2840
2841 @example
2842 \version @w{"@version{}"}
2843 \header @{
2844   title = "Jesu, meine Freude"
2845   composer = "J S Bach"
2846 @}
2847 ArmureMetrique = @{ \key c \minor \time 4/4 @}
2848 ManuelUnVoixUnMusique = @{ s1 @}
2849 ManuelUnVoixDeuxMusique = @{ s1 @}
2850 ManuelDeuxMusique = @{ s1 @}
2851 PedalierOrgueMusique = @{ s1 @}
2852
2853 \score @{
2854 @}
2855 @end example
2856
2857 Pour l'instant, nous utilisons des silences invisibles, @code{s1}, en
2858 lieu et place des notes réelles.  On verra plus tard.
2859
2860 Passons maintenant au bloc @code{\score} et à ce qu'il devrait contenir.
2861 Nous y recopions simplement la structure des portées que nous voulons.
2862 La musique pour orgue se présente généralement sous la forme de trois
2863 portées, une pour chaque main et une pour le pédalier.  Les portées du
2864 manuel sont regroupées, nous utiliserons donc un @code{PianoStaff}.  La
2865 première partie du manuel requiert deux voix et la seconde une seule.
2866
2867 @example
2868 \new PianoStaff <<
2869   \new Staff = "ManuelUn" <<
2870     \new Voice @{
2871       \ManuelUnVoixUnMusique
2872     @}
2873     \new Voice @{
2874       \ManuelUnVoixDeuxMusique
2875     @}
2876   >>  % fin du contexte de portée ManuelUn
2877   \new Staff = "ManuelDeux" <<
2878     \new Voice @{
2879       \ManuelDeuxMusique
2880     @}
2881   >>  % fin du contexte de portée ManuelDeux
2882 >>  % fin du contexte PianoStaff
2883 @end example
2884
2885 Il nous faut ajouter à cela une portée pour le pédalier.  Elle se place
2886 sous le système de piano, mais puisqu'elle doit rester synchrone avec
2887 lui, nous utilisons des doubles chevrons pour les regrouper.
2888 Négliger ceci nous renverrait une erreur, et personne n'est à l'abri de
2889 cette faute !  Pour preuve, il vous suffit de copier l'exemple
2890 complet en fin de chapitre, de supprimer ces @code{<<} et @code{>>}, et
2891 de le compiler, pour voir de quoi il retourne.
2892
2893 @example
2894 <<  % Système pianistique et portée de pédalier sont synchrones
2895   \new PianoStaff <<
2896     \new Staff = "ManuelUn" <<
2897       \new Voice @{
2898         \ManuelUnVoixUnMusique
2899       @}
2900       \new Voice @{
2901         \ManuelUnVoixDeuxMusique
2902       @}
2903     >>  % fin du contexte de portée ManuelUn
2904     \new Staff = "ManuelDeux" <<
2905       \new Voice @{
2906         \ManuelDeuxMusique
2907       @}
2908     >>  % fin du contexte de portée ManuelDeux
2909   >>  % fin du contexte PianoStaff
2910   \new Staff = "PedalierOrgue" <<
2911     \new Voice @{
2912       \PedalierOrgueMusique
2913      @}
2914   >>
2915 >>
2916 @end example
2917
2918 La construction en simultané -- @code{<< @dots{} >>} -- n'est pas
2919 strictement obligatoire pour les portées manuel deux et pédalier, qui ne
2920 contiennent chacune qu'une seule expression musicale ; mais cela ne
2921 mange pas de pain, et c'est une bonne habitude que de toujours encadrer
2922 par des doubles chevrons gauche/droite ce qui suit une commande
2923 @code{\new Staff} au cas où il y aurait plusieurs voix.  Il en va
2924 autrement pour les contextes @code{Voice} : ils doivent être toujours
2925 suivis d'accolades --  @code{@{ @dots{} @}} --  au cas où vous auriez
2926 employé plusieurs variables qui doivent intervenir consécutivement.
2927
2928 Ajoutons donc cette structure au bloc @code{\score}, tout en fignolant
2929 l'indentation.  Nous en profitons pour ajouter les clefs appropriées,
2930 effectuer les réglages concernant les hampes et liaisons de la portée
2931 supérieure grâce à @code{\voiceOne} et @code{\voiceTwo}, et mettre en
2932 place la métrique et l'armure de chaque portée grâce à notre variable
2933 @code{\MetriqueArmure}.
2934
2935 @example
2936 \score @{
2937   <<  % Système pianistique et portée de pédalier sont synchrones
2938     \new PianoStaff <<
2939       \new Staff = "ManuelUn" <<
2940         \ArmureMetrique % définition de l'armure et de la métrique
2941         \clef "treble"
2942         \new Voice @{
2943           \voiceOne
2944           \ManuelUnVoixUnMusique
2945         @}
2946         \new Voice @{
2947           \voiceTwo
2948           \ManuelUnVoixDeuxMusique
2949         @}
2950       >>  % fin du contexte de la portée ManuelUn
2951       \new Staff = "ManuelDeux" <<
2952         \ArmureMetrique
2953         \clef "bass"
2954         \new Voice @{
2955           \ManuelDeuxMusique
2956         @}
2957       >>  % fin du contexte de la portée ManuelDeux
2958     >>  % fin du contexte PianoStaff
2959     \new Staff = "PedalierOrgue" <<
2960       \ArmureMetrique
2961       \clef "bass"
2962       \new Voice @{
2963         \PedalierOrgueMusique
2964       @}
2965     >>  % fin du contexte de la portée PedalOrgan
2966   >>
2967 @}  % fin du contexte Score
2968 @end example
2969
2970 @cindex espacement des portées
2971 @cindex portées, espacement
2972
2973 Cette partition pour orgue est presque parfaite.  Reste juste ce petit
2974 défaut qui ne se remarque pas lorsque l'on considère un seul système :
2975 la distance qui sépare la portée de pédalier de celle de la main gauche
2976 devrait être plus ou moins égale à celle qui sépare les deux mains.  En
2977 fait, la distance entre les deux portées d'un @code{PianoStaff} ne
2978 saurait trop se dilater ; le pédalier devrait adopter le même
2979 comportement.
2980
2981 @cindex sous-propriétés
2982 @cindex propriétés et sous-propriétés
2983 @cindex graphical objects
2984 @cindex objets graphiques
2985 @cindex grobs
2986
2987 La propension des portées à se dilater se contrôle à l'aide de la
2988 propriété @code{staff-staff-spacing}, attachée à @qq{l'objet graphique}
2989 @code{VerticalAxisGroup} -- la documentation de LilyPond utilise souvent
2990 l'abréviation @emph{grob} pour @emph{graphical object}.  Pas de
2991 panique ! Tout ceci sera expliqué plus tard -- pour les curieux,
2992 jetez un œil au chapitre
2993 @ruser{Vue d'ensemble de la modification des propriétés}.
2994 Revenons à notre propos : nous voulons modifier uniquement la
2995 sous-propriété @code{stretchability}.  Les impatients trouveront les
2996 valeurs par défaut de la propriété @code{staff-staff-spacing} dans le
2997 fichier @file{scm/define-grobs.scm}, en examinant la définition du
2998 @emph{grob} @code{VerticalAxisGroup}.  La valeur que nous affecterons à
2999 @code{stretchability} est celle que contient la définition du contexte
3000 @code{PianoStaff} telle qu'elle apparaît dans le fichier
3001 @file{ly/engraver-init.ly}).
3002
3003 @example
3004 \score @{
3005   <<  % Système pianistique et portée de pédalier sont synchrones
3006     \new PianoStaff <<
3007       \new Staff = "ManuelUn" <<
3008         \ArmureMetrique % définition de l'armure et de la métrique
3009         \clef "treble"
3010         \new Voice @{
3011           \voiceOne
3012           \ManuelUnVoixUnMusique
3013         @}
3014         \new Voice @{
3015           \voiceTwo
3016           \ManuelUnVoixDeuxMusique
3017         @}
3018       >>  % fin du contexte de la portée ManuelUn
3019       \new Staff = "ManuelDeux" \with @{
3020         \override VerticalAxisGroup.staff-staff-spacing.stretchability = 5
3021       @} <<
3022         \ArmureMetrique
3023         \clef "bass"
3024         \new Voice @{
3025           \ManuelDeuxMusique
3026         @}
3027       >>  % fin du contexte de la portée ManuelDeux
3028     >>  % fin du contexte PianoStaff
3029     \new Staff = "PedalierOrgue" <<
3030       \ArmureMetrique
3031       \clef "bass"
3032       \new Voice @{
3033         \PedalierOrgueMusique
3034       @}
3035     >>  % fin du contexte de la portée PedalOrgan
3036   >>
3037 @}  % fin du contexte Score
3038 @end example
3039
3040 Nous en avons fini avec la structure.  Toutes les partitions pour orgue
3041 auront cette structure, même si le nombre de voix peut changer.  Tout ce
3042 qui nous reste à faire maintenant consiste à saisir la musique et à
3043 regrouper toutes les parties.
3044
3045 @lilypond[quote,verbatim,ragged-right,addversion]
3046 \header {
3047   title = "Jesu, meine Freude"
3048   composer = "J S Bach"
3049 }
3050 keyTime = { \key c \minor \time 4/4 }
3051 ManualOneVoiceOneMusic = \relative {
3052   g'4 g f ees |
3053   d2 c |
3054 }
3055 ManualOneVoiceTwoMusic = \relative {
3056   ees'16 d ees8~ 16 f ees d c8 d~ d c~ |
3057   8 c4 b8 c8. g16 c b c d |
3058 }
3059 ManualTwoMusic = \relative {
3060   c'16 b c8~ 16 b c g a8 g~ 16 g aes ees |
3061   f16 ees f d g aes g f ees d ees8~ 16 f ees d |
3062 }
3063 PedalOrganMusic = \relative {
3064   r8 c16 d ees d ees8~ 16 a, b g c b c8 |
3065   r16 g ees f g f g8 c,2 |
3066 }
3067
3068 \score {
3069   <<  % PianoStaff and Pedal Staff must be simultaneous
3070     \new PianoStaff <<
3071       \new Staff = "ManualOne" <<
3072         \keyTime  % set key and time signature
3073         \clef "treble"
3074         \new Voice {
3075           \voiceOne
3076           \ManualOneVoiceOneMusic
3077         }
3078         \new Voice {
3079           \voiceTwo
3080           \ManualOneVoiceTwoMusic
3081         }
3082       >>  % end ManualOne Staff context
3083       \new Staff = "ManualTwo" \with {
3084         \override VerticalAxisGroup.staff-staff-spacing.stretchability = 5
3085       } <<
3086         \keyTime
3087         \clef "bass"
3088         \new Voice {
3089           \ManualTwoMusic
3090         }
3091       >>  % end ManualTwo Staff context
3092     >>  % end PianoStaff context
3093     \new Staff = "PedalOrgan" <<
3094       \keyTime
3095       \clef "bass"
3096       \new Voice {
3097         \PedalOrganMusic
3098       }
3099     >>  % end PedalOrgan Staff context
3100   >>
3101 }  % end Score context
3102 @end lilypond
3103
3104 @seealso
3105 Glossaire musicologique :
3106 @rglosnamed{system,système}.
3107
3108
3109 @node Économie de saisie grâce aux identificateurs et fonctions
3110 @subsection Économie de saisie grâce aux identificateurs et fonctions
3111 @translationof Saving typing with variables and functions
3112
3113 @cindex variables
3114 @cindex identificateurs
3115
3116 Jusqu'à maintenant, vous avez vu ce type de code :
3117
3118 @lilypond[quote,verbatim,ragged-right]
3119 hornNotes = \relative { c''4 b dis c }
3120 \score {
3121   {
3122     \hornNotes
3123   }
3124 }
3125 @end lilypond
3126
3127 Vous comprendrez combien cela peut être utile pour écrire de la
3128 musique minimaliste :
3129
3130 @lilypond[quote,verbatim,ragged-right]
3131 fragmentA = \relative { a'4 a8. b16 }
3132 fragmentB = \relative { a'8. gis16 ees4 }
3133
3134 violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA }
3135
3136 \score {
3137   {
3138     \violin
3139   }
3140 }
3141 @end lilypond
3142
3143 Néanmoins vous pouvez aussi utiliser ces identificateurs -- aussi connus
3144 sous le nom de variables, macros, ou commandes (définies par
3145 l'utilisateur) -- pour des retouches :
3146
3147 @lilypond[quote,verbatim,ragged-right]
3148 dolce = \markup { \italic \bold dolce }
3149
3150 centerText = { \once \override TextScript.self-alignment-X = #CENTER }
3151
3152 fthenp =_\markup {
3153   \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p
3154 }
3155
3156 violin = \relative {
3157   \repeat volta 2 {
3158     c''4._\dolce b8 a8 g a b |
3159     \centerText
3160     c4.^"hi there!" d8 e f g d |
3161     c4.\fthenp b8 c4 c-. |
3162   }
3163 }
3164
3165 \score {
3166   {
3167     \violin
3168   }
3169 }
3170 @end lilypond
3171
3172 Ces identificateurs sont évidemment utiles pour économiser de la
3173 frappe.  Mais ils peuvent l'être même si vous ne les utilisez qu'une
3174 seule fois : ils réduisent la complexité.  Regardons l'exemple
3175 précédent sans aucun identificateur.  C'est beaucoup plus laborieux à
3176 lire, et particulièrement la dernière ligne.
3177
3178 @example
3179 violin = \relative @{
3180   \repeat volta 2 @{
3181     c''4._\markup @{ \italic \bold dolce @} b8 a8 g a b |
3182     \once \override TextScript.self-alignment-X = #CENTER
3183     c4.^"hi there!" d8 e f g d |
3184     c4._\markup @{
3185       \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p
3186     @}
3187     b8 c4 c-. |
3188   @}
3189 @}
3190 @end example
3191
3192 Jusqu'ici nous avons vu des substitutions statiques : quand LilyPond
3193 rencontre @code{\centerText}, il le remplace par le contenu que nous lui
3194 avons défini -- c'est-à-dire le contenu à droite de @code{centerText=}.
3195
3196 LilyPond gère également des substitutions non-statiques -- vous
3197 pouvez les voir comme des fonctions.
3198
3199 @lilypond[quote,verbatim,ragged-right]
3200 padText =
3201 #(define-music-function
3202      (padding)
3203      (number?)
3204    #{
3205      \once \override TextScript.padding = #padding
3206    #})
3207
3208 \relative {
3209   c''4^"piu mosso" b a b
3210   \padText #1.8
3211   c4^"piu mosso" b a b
3212   \padText #2.6
3213   c4^"piu mosso" b a b
3214 }
3215 @end lilypond
3216
3217 Utiliser des identificateurs est aussi un bon moyen pour vous épargner
3218 du travail si la syntaxe de LilyPond change un jour -- voir
3219 @rprogram{Mise à jour avec convert-ly}.  Si vous avez une seule
3220 définition, par exemple @code{\dolce}, pour tous vos fichiers (voir
3221 @ref{Feuilles de style}) et que la syntaxe change, alors vous n'aurez
3222 qu'à mettre à jour votre seule définition @code{\dolce}, au lieu de
3223 devoir modifier chaque fichier @file{.ly}.
3224
3225
3226 @node Conducteurs et parties
3227 @subsection Conducteurs et parties
3228 @translationof Scores and parts
3229
3230 Dans la musique d'orchestre, toutes les notes sont imprimées deux fois.
3231 D'abord dans les parties séparées destinées aux musiciens, et ensuite
3232 dans le conducteur destiné au chef.  Les variables sont là pour vous
3233 éviter un double travail.  La musique n'est entrée qu'une seule fois, et
3234 stockée dans une variable, dont le contenu servira à imprimer à la fois
3235 la partie séparée et la partition d'orchestre.
3236
3237 Il est judicieux de définir les notes dans un fichier séparé. Par
3238 exemple, supposons que le fichier @file{musique-Cor.ly} contienne la
3239 partie suivante pour un duo cor/@/basson.
3240
3241 @example
3242 notesCor = \relative @{
3243   \time 2/4
3244   r4 f8 a | cis4 f | e d |
3245 @}
3246 @end example
3247
3248 @noindent
3249 On établira alors une partie séparée en constituant un nouveau fichier :
3250
3251 @example
3252 \include "musique-Cor.ly"
3253
3254 \header @{
3255   instrument = "Cor en Fa"
3256 @}
3257
3258 @{
3259  \transpose f c' \notesCor
3260 @}
3261 @end example
3262
3263 À la ligne
3264
3265 @example
3266 \include "musique-Cor.ly"
3267 @end example
3268
3269 @noindent
3270 sera substitué le contenu du fichier @file{musique-Cor.ly}, et de ce
3271 fait la variable @code{notesCor} se trouvera définie.  La commande
3272 @code{\transpose f c'} indique que son argument @code{\notesCor} sera
3273 transposé à la quinte supérieure : le son réel @code{f} s'écrit
3274 @code{c'}, ce qui est la caractéristique d'un Cor en fa.  La
3275 transposition est visible comme suit :
3276
3277 @lilypond[quote,ragged-right]
3278 \transpose f c' \relative {
3279   \time 2/4
3280   r4 f8 a | cis4 f | e d |
3281 }
3282 @end lilypond
3283
3284 Dans les pièces d'ensemble, il arrive souvent qu'une voix ne joue pas
3285 pendant plusieurs mesures.  Un silence spécial, appelé silence
3286 multimesures, l'indique alors.  On l'obtient par un @code{R} majuscule,
3287 suivi d'une durée : @code{1} pour une pause, @code{2} pour une
3288 demi-pause, etc.  Cette durée peut être multipliée pour établir de plus
3289 longs silences.  Par exemple, le silence suivant dure trois mesures
3290 à 2/4.
3291
3292 @example
3293 R2*3
3294 @end example
3295
3296 Dans une partie séparée, les silences multimesure sont compressés.
3297 LilyPond dispose d'une commande à cet effet :
3298
3299 @example
3300 \compressMMRests @{ ... @}
3301 @end example
3302
3303 Si l'on ajoute dans la musique ci-dessus le silence multimesure et cette
3304 instruction, on obtient le résultat suivant :
3305
3306 @lilypond[quote,ragged-right]
3307 \compressMMRests \transpose f c' \relative {
3308   \time 2/4
3309   R2*3 |
3310   r4 f8 a | cis4 f | e d |
3311 }
3312 @end lilypond
3313
3314 Le conducteur rassemble toute la musique. Si l'on suppose que l'autre
3315 voix de notre duo se trouve dans le fichier @file{musique-Basson.ly} en
3316 tant que variable @code{notesBasson}, on établira un conducteur avec
3317
3318 @example
3319 \include "musique-Basson.ly"
3320 \include "musique-Cor.ly"
3321
3322 <<
3323   \new Staff \notesCor
3324   \new Staff \notesBasson
3325 >>
3326 @end example
3327
3328 @noindent
3329 ce qui équivaut à
3330
3331 @lilypond[quote,ragged-right]
3332 \relative <<
3333   \new Staff {
3334     \clef "treble"
3335     \time 2/4
3336     R2*3 |
3337     r4 f8 a | cis4 f | e4 d |
3338   }
3339   \new Staff {
3340     \clef "bass"
3341     \time 2/4
3342     r4 d,8 f | gis4 c | b4 bes |
3343     a8 e f4 | g4 d | gis4 f |
3344   }
3345 >>
3346 @end lilypond
3347
3348 @seealso
3349 Manuel d'initiation :
3350 @ref{Organisation du code source avec des variables}.
3351
3352 Manuel de notation :
3353 @ruser{Écriture de parties séparées},
3354 @ruser{Insertion de fichiers LilyPond},
3355 @ruser{Silences valant une mesure},
3356 @ruser{Transposition}.