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