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