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