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