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