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