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