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