1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
4 Translation of GIT committish: b58a17a6b0b6f624cee7858a74092265e0791fe2
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..
13 @c Translators: Valentin Villenave, Jean-Charles Malahieude
14 @c Translation checkers: John Mandereau
15 @c Translation status: post-GDP
17 @node Concepts fondamentaux
18 @chapter Concepts fondamentaux
19 @translationof Fundamental concepts
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é.
27 * Organisation des fichiers LilyPond::
28 * Les voix contiennent la musique::
29 * Contextes et graveurs::
30 * Extension des modèles::
34 @node Organisation des fichiers LilyPond
35 @section Organisation des fichiers LilyPond
36 @translationof How LilyPond input files work
38 La mise en forme des fichiers d'entrée de LilyPond est vraiment peu
39 astreignante, afin d'offrir assez de souplesse aux utilisateurs
40 expérimentés pour qu'ils puissent organiser leurs fichiers comme ils
41 l'entendent. Cependant, les nouveaux utilisateurs peuvent parfois se
42 perdre en raison de cette souplesse. Cette section présente sommairement
43 l'organisation du code LilyPond, en privilégiant la simplicité au
44 détriment de certains détails. Vous trouverez une description plus
45 complète dans @ruser{Structure de fichier}.
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::
55 @node Introduction à la structure de fichier LilyPond
56 @subsection Introduction à la structure de fichier LilyPond
57 @translationof Introduction to the LilyPond file structure
59 @cindex format d'entrée
60 @cindex structure de ficher
62 Un fichier d'entrée LilyPond ressemble à :
65 \version @w{"@version{}"}
68 @var{ @dots{} expression musicale composite @dots{} } % c'est là qu'est la musique !
75 Il existe de nombreuses variantes à ce schéma simpliste, mais cet
76 exemple est un préambule à notre propos.
83 @cindex book, livre, ouvrage
85 @cindex score, partition
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
100 comme un raccourci de
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.
121 @cindex contextes implicites
122 @cindex implicites, contextes
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}.
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.}
137 Mais revenons à notre premier exemple, et penchons-nous tout d'abord sur
138 la commande @code{\score}.
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
148 @var{ @dots{} collez ici la partition complète d'un opéra de Wagner@dots{} }
154 Dès lors que tout cela est entre accolades : @code{@{ @dots{} @}},
155 LilyPond le considère comme une et une seule expression musicale.
157 Comme nous l'avons vu précédemment, un bloc @code{\score} peut contenir
158 d'autres informations :
179 @cindex mise en forme
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.
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}.
202 @cindex partitions multiples
203 @cindex book, bloc implicite
204 @cindex implicite, bloc book
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
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}.
225 Tout bloc @code{\score} inclus dans un bloc @code{\book} constitue un
226 fragment de musique, par exemple un mouvement d'une symphonie.
228 @cindex layout, effets selon l'emplacement
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}.
237 Pour plus de détail à ce sujet, consultez
238 @ruser{Plusieurs partitions dans un même ouvrage}.
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 :
249 melodie = \relative c' @{
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}.
270 Pour une description complète du format des fichiers d'entrée, voir
271 @ruser{Structure de fichier}.
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
282 @cindex bloc score, contenu
283 @cindex expression musicale composite
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} ?
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 :
296 @emph{Un bloc @code{\score} doit contenir une et une seule expression
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.
316 \new Staff = "chanteur" <<
318 \new PianoStaff = "piano" <<
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.
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}.
345 @lilypond[verbatim,quote,ragged-right]
348 \new Staff = "singer" <<
349 \new Voice = "vocal" { c'1 }
352 \new PianoStaff = "piano" <<
353 \new Staff = "upper" { c'1 }
354 \new Staff = "lower" { c'1 }
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
370 À ce point, on pourrait commencer à ajouter les notes. Dans les
371 accolades qui suivent @code{\new Voice = "chant"}, on pourrait
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
391 Avec quelques notes de plus et une clef de fa, nous pourrions avoir :
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 }
401 \new Staff = "singer" <<
402 \new Voice = "vocal" { \melody }
405 \new PianoStaff = "piano" <<
406 \new Staff = "upper" { \upper }
407 \new Staff = "lower" {
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 !
426 @ruser{Structure d'une partition}.
429 @node Expressions musicales imbriquées
430 @subsection Expressions musicales imbriquées
431 @translationof Nesting music expressions
433 @cindex portées, temporaires
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 :
442 @lilypond[verbatim,quote,ragged-right]
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.
463 @cindex portée, positionnement
465 Une section ossia se placera au dessus de la portée en procédant ainsi :
467 @lilypond[verbatim,quote,ragged-right]
468 \new Staff = "main" {
475 alignAboveContext = #"main" }
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.
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}.
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
499 @cindex crochets, imbrication
500 @cindex crochets, types de
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 :
507 @c attempt to force this onto a new page
509 @multitable @columnfractions .3 .7
510 @headitem Type de crochet
512 @item @code{@{ @dots{} @}}
513 @tab Délimite un segment de musique séquentielle
514 @item @code{< @dots{} >}
515 @tab Délimite les notes d'un accord
516 @item @code{<< @dots{} >>}
517 @tab Délimite des sections simultanées
518 @item @code{( @dots{} )}
519 @tab Marque le début et la fin d'une liaison
520 @item @code{\( @dots{} \)}
521 @tab Marque le début et la fin d'une liaison de phrasé
522 @item @code{[ @dots{} ]}
523 @tab Marque le début et la fin d'une ligature manuelle
526 D'autres constructions permettent d'obtenir des lignes regroupant ou en
527 travers des notes : les liaisons de prolongation indiquées par un tilde
528 (@code{~}), les marques de n-olet avec @code{\tuplet x/y @{ @dots{} @}},
529 ou encore les notes d'ornement avec @code{\grace@{ @dots{} @}}.
531 En dehors de LilyPond, l'imbrication correcte de différents types de
532 crochets exige un strict respect des conventions, telles que
533 @code{<< [ @{ ( @dots{} ) @} ] >>}, où les marques de fermeture
534 interviennent obligatoirement dans l'ordre exactement inverse à celles
535 d'ouverture. Ceci @strong{doit} être rigoureusement respecté pour les
536 trois types de crochets utilisés pour @strong{délimiter} comme l'indique
537 le tableau ci-dessus. Une telle rigueur dans l'imbrication n'est
538 @strong{pas} requise pour les types de crochets dont la fonction est de
539 @strong{marquer}, selon le tableau ci-dessus, lorsqu'il sont utilisés en
540 combinaison avec des liaisons de prolongation ou des n-olets. En effet,
541 il ne s'agit pas de crochets ayant pour fonction de borner quelque
542 chose ; ils agissent plutôt comme marquant le début de quelque chose et
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 :
549 @lilypond[quote,verbatim,ragged-right,relative=2]
550 g8\( a b[ c b\) a] g4
553 De manière générale, différents types de crochets, notamment s'ils
554 indiquent des n-olets, liaisons de prolongation ou notes d'ornement,
555 peuvent se mélanger entre eux. L'exemple suivant montre une ligature
556 qui se prolonge sur un triolet (ligne 1), puis une liaison qui se
557 prolonge sur un triolet (ligne 2) et enfin une ligature et une liaison
558 qui s'étendent sur un triolet, lui-même lié à un quintolet agrémenté
559 d'une liaison de phrasé se poursuivant (lignes 3 et 4).
561 @lilypond[quote,verbatim,ragged-right,relative=1]
562 r16[ g \tuplet 3/2 { r16 e'8] }
563 g,16( a \tuplet 3/2 { b16 d) e }
564 g,8[( a \tuplet 3/2 { b8 d) e~] } |
565 \tuplet 5/4 { e32\( a, b d e } a4.\)
569 @node Les voix contiennent la musique
570 @section Les voix contiennent la musique
571 @translationof Voices contain music
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.
579 * J'entends des Voix::
580 * Instanciation explicite des voix::
585 @node J'entends des Voix
586 @subsection J'entends des Voix
587 @translationof I'm hearing Voices
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
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}.
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.
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 :
618 @lilypond[quote,verbatim,ragged-right,relative=1]
620 <d g>4 <d fis> <d a'> <d g>
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.
634 Voyons comment cela se pratique selon la grammaire de LilyPond.
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{@{ @dots{} @}}), puis à les combiner en simultané à l'aide
642 de doubles chevrons gauche/droite, @code{<< @dots{} >>}. 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
650 Voici comment éclater les accords en deux voix, avec la note de passage
653 @lilypond[quote,verbatim,ragged-right,relative=2]
655 % Voice "1" Voice "2"
656 << { g4 fis8( g) a4 g } \\ { d4 d d d } >>
659 Notez que les hampes de la seconde voix sont dirigées vers le bas.
663 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
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 } >> |
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 :
676 @lilypond[quote,verbatim,ragged-right,relative=2]
691 @cindex voix, nommage
692 @cindex voix et constructions simultanées
693 @cindex liaisons et constructions simultanées
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{\\}
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
707 @lilypond[quote,verbatim]
708 \new Staff \relative c' {
711 % Voice "1" Voice "2" Voice "3"
712 << { g4 f e } \\ { r8 e4 d c8~ } >> |
713 << { d2 e } \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> |
717 Ces voix sont séparées de la voix principale, laquelle contient les
718 notes en dehors de la construction @code{<< @dots{} >>} -- 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.
732 @lilypond[quote,verbatim]
733 \new Staff \relative c' {
762 @funindex \voiceOneStyle
763 @funindex \voiceTwoStyle
764 @funindex \voiceThreeStyle
765 @funindex \voiceFourStyle
766 @funindex \voiceNeutralStyle
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}.
779 @cindex polyphonie et mode relatif
780 @cindex mode relatif et polyphonie
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
788 \relative c' @{ noteA << < noteB noteC > \\ noteD >> noteE @}
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
796 @code{noteE} est relative à @code{noteD}, pas à @code{noteA}
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 :
803 \relative c' @{ noteA @dots{} @}
805 \relative c'' @{ < noteB noteC > @dots{} @}
807 \relative g' @{ noteD @dots{} @}
809 \relative c' @{ noteE @dots{} @}
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.
821 @c The following should appear as music without code
822 @lilypond[quote,ragged-right]
823 \new Staff \relative c'' {
829 % Ignore these for now - they are explained in Ch 4
830 \once \override NoteColumn.ignore-collision = ##t
832 \once \override NoteColumn.force-hshift = #0.5
838 \override NoteColumn.force-hshift = #0
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 à
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.
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'' {
877 % Ignore these for now - they are explained in Ch 4
878 \once \override NoteColumn.ignore-collision = ##t
880 \once \override NoteColumn.force-hshift = #0.5
883 \\ % No Voice three (we want stems down)
886 \override NoteColumn.force-hshift = #0
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 :
899 @lilypond[quote,verbatim,ragged-right]
900 \new Staff \relative c'' {
903 { c2 aes4. bes8 } \\ { <ees, c>2 des } \\ { aes'2 f4 fes }
910 @cindex hampes en bas
912 @cindex hampes en haut
913 @cindex voix et direction des hampes
914 @cindex direction des hampes et voix
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 :
923 @lilypond[quote,verbatim,ragged-right]
924 \new Staff \relative c'' {
930 \\ % Omit Voice three
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}).
951 @warning{Paroles et objets étendus (liaisons, soufflets, etc.) ne peuvent
952 passer d'une voix à l'autre.}
956 @ruser{Plusieurs voix}.
959 @node Instanciation explicite des voix
960 @subsection Instanciation explicite des voix
961 @translationof Explicitly instantiating voices
967 @funindex \voiceThree
974 @cindex Voice, création de contextes
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.
984 En particulier, la construction @code{<< \\ >>} que nous avons vue
990 << @{ e4 f g a @} \\ @{ c,4 d e f @} >>
1000 \new Voice = "1" @{ \voiceOne \relative c' @{ e4 f g a @} @}
1001 \new Voice = "2" @{ \voiceTwo \relative c' @{ c4 d e f @} @}
1005 Toutes deux produiront
1007 @c The following example should not display the code
1008 @lilypond[ragged-right,quote]
1010 \new Voice = "1" { \voiceOne \relative c' { e4 f g a } }
1011 \new Voice = "2" { \voiceTwo \relative c' { c4 d e f } }
1015 @cindex Voice, retour à un seul contexte
1016 @cindex retour à un contexte Voice unique
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
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.
1032 @lilypond[quote,ragged-right,verbatim]
1034 % Default behavior or behavior after \oneVoice
1035 c4 d8~ 8 e4( f | g4 a) b-> c |
1039 @lilypond[quote,ragged-right,verbatim]
1042 c4 d8~ 8 e4( f | g4 a) b-> c |
1044 c,4 d8~ 8 e4( f | g4 a) b-> c |
1048 @lilypond[quote,ragged-right,verbatim]
1051 c4 d8~ 8 e4( f | g4 a) b-> c |
1053 c,4 d8~ 8 e4( f | g4 a) b-> c |
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.
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.
1070 @lilypond[quote,ragged-right,verbatim]
1071 \new Staff \relative c' {
1073 % The following notes are homophonic
1075 % Start simultaneous section of three voices
1077 % Continue the main voice in parallel
1078 { g4 f e | d2 e) | }
1079 % Initiate second voice
1081 % Set stems, etc., down
1083 r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
1085 % Initiate third voice
1087 % Set stems, etc, up
1095 @cindex imbrication d'expressions musicales
1096 @cindex imbrication de constructions simultanées
1097 @cindex voix temporaires
1098 @cindex voix, imbrication
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 :
1104 @lilypond[quote,ragged-right,verbatim]
1105 \new Staff \relative c' {
1108 { g4 f e | d2 e) | }
1113 { c8 b16 a b8 g~ 2 | }
1124 @cindex espacement des notes
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
1133 @lilypond[quote,ragged-right,verbatim]
1134 \new Staff \relative c' <<
1135 % Initiate first voice
1138 c16^( d e f g4 f e | d2 e2) |
1140 % Initiate second voice
1142 % Set stems, etc, down
1144 s4 r8 e4 d c8 ~ | 8 b16 a b8 g ~ 2 |
1146 % Initiate third voice
1148 % Set stems, etc, up
1156 @subsubheading Empilement des notes
1157 @translationof Note columns
1160 @cindex empilement de notes
1161 @cindex collisions de notes
1162 @cindex shift, commandes
1163 @cindex décalage, commandes
1171 @funindex \shiftOnnn
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.
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.
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}.
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}.
1207 Manuel d'initiation :
1208 @ref{Déplacement d'objets}
1210 Manuel de notation :
1211 @ruser{Plusieurs voix}.
1214 @node Voix et paroles
1215 @subsection Voix et paroles
1216 @translationof Voices and vocals
1218 La musique vocale est une gageure en soi : il nous faut combiner
1219 deux expressions différentes -- des notes et des paroles.
1221 @funindex \new Lyrics
1226 @cindex Lyrics, création d'un contexte
1227 @cindex paroles, affectation à une voix
1229 Nous avons déjà abordé la commande @code{\addlyrics@{@}}, qui permet de
1230 gérer des partitions simples. Cette technique est cependant
1231 relativement limitée. Pour de la musique un peu plus compliquée, il
1232 vous faudra contenir les paroles dans un contexte @code{Lyrics}, créé
1233 par la commande @code{\new Lyrics} ; vous relierez ensuite ces paroles
1234 aux notes grâce à la commande @code{\lyricsto@{@}} et au nom assigné à
1235 la voix en question.
1237 @lilypond[quote,verbatim]
1239 \new Voice = "one" {
1243 c4 b8. a16 | g4. f8 | e4 d | c2 |
1246 \new Lyrics \lyricsto "one" {
1247 No more let | sins and | sor -- rows | grow. |
1252 Notez bien que les paroles sont liées à un contexte de voix
1253 (@code{Voice}), @strong{non} à un contexte de portée (@code{Staff}). Il
1254 est donc nécessaire de créer explicitement les contextes @code{Staff}
1257 @cindex paroles et ligatures
1258 @cindex ligatures et paroles
1260 @funindex \autoBeamOff
1261 @funindex autoBeamOff
1263 Si la ligature automatique que LilyPond applique par défaut est
1264 pleinement adaptée en matière de musique instrumentale, il n'en va pas
1265 de même dans le cas d'une musique associée à des paroles, et pour
1266 laquelle soit les ligatures sont carrément absentes, soit elles servent
1267 à indiquer un mélisme -- plusieurs notes pour une même syllabe.
1268 Dans l'exemple qui suit, nous utilisons la commande @code{\autoBeamOff}
1269 afin de désactiver les ligatures automatiques.
1271 @funindex \new ChoirStaff
1272 @funindex ChoirStaff
1273 @funindex \lyricmode
1276 @cindex structure d'une partition vocale
1277 @cindex chœur, partie de
1279 Nous allons reprendre un extrait de Judas Maccabæus pour illustrer ce
1280 que cette technique apporte en flexibilité. Nous commençons par
1281 utiliser des variables -- ou identificateurs -- afin de séparer de la
1282 structure de la portée aussi bien la musique que les paroles. Nous
1283 ajoutons par la même occasion un crochet spécifique aux portées pour
1284 chœur (@code{ChoirStaff}). Quant aux blocs de paroles, nous les faisons
1285 précéder de la commande @code{\lyricmode} pour nous assurer qu'elles
1286 seront interprétées comme telles, et non comme de la musique.
1288 @lilypond[quote,verbatim]
1289 global = { \key f \major \time 6/8 \partial 8 }
1291 SopOneMusic = \relative c'' {
1292 c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4
1294 SopOneLyrics = \lyricmode {
1295 Let | flee -- cy flocks the | hills a -- dorn, __
1297 SopTwoMusic = \relative c' {
1298 r8 | r4. r4 c8 | a'8([ g)] f f([ e)] d | e8([ d)] c bes'
1300 SopTwoLyrics = \lyricmode {
1301 Let | flee -- cy flocks the | hills a -- dorn,
1307 \new Voice = "SopOne" {
1311 \new Lyrics \lyricsto "SopOne" {
1316 \new Voice = "SopTwo" {
1320 \new Lyrics \lyricsto "SopTwo" {
1328 Voici donc la structure de base valable pour toute partition vocale. On
1329 peut y ajouter d'autres portées si besoin est, d'autres voix à chaque
1330 portée, plusieurs couplets aux paroles, et les variables contenant la
1331 musique peuvent même être stockées dans des fichiers indépendants dès
1332 lors que leur longueur devient conséquente.
1334 @cindex structure d'hymne
1335 @cindex SATB, structure
1336 @cindex partition vocale avec plusieurs couplets
1337 @cindex couplets multiples et musique vocale
1339 Voici maintenant la première ligne d'une hymne pour chœur à quatre voix
1340 mixtes, comportant quatre couplets. Les paroles sont ici identiques
1341 pour les quatre voix. Vous remarquerez le recours aux variables afin de
1342 séparer de la structure de portée aussi bien les notes que les paroles.
1343 Vous noterez aussi une variable particulière, que nous avons appelée
1344 @qq{ArmureMetrique}, et qui contient plusieurs commandes que nous
1345 utiliserons dans les deux portées. Dans de nombreux autres exemples,
1346 elle s'appelle @qq{global}.
1348 @lilypond[quote,verbatim]
1349 keyTime = { \key c \major \time 4/4 \partial 4 }
1351 SopMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g }
1352 AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e }
1353 TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
1354 BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
1357 \lyricmode { E -- | ter -- nal fa -- ther, | strong to save, }
1359 \lyricmode { O | Christ, whose voice the | wa -- ters heard, }
1361 \lyricmode { O | Ho -- ly Spi -- rit, | who didst brood }
1363 \lyricmode { O | Tri -- ni -- ty of | love and pow'r }
1369 \new Voice = "Sop" { \voiceOne \keyTime \SopMusic }
1370 \new Voice = "Alto" { \voiceTwo \AltoMusic }
1371 \new Lyrics \lyricsto "Sop" { \VerseOne }
1372 \new Lyrics \lyricsto "Sop" { \VerseTwo }
1373 \new Lyrics \lyricsto "Sop" { \VerseThree }
1374 \new Lyrics \lyricsto "Sop" { \VerseFour }
1378 \new Voice = "Tenor" { \voiceOne \keyTime \TenorMusic }
1379 \new Voice = "Bass" { \voiceTwo \BassMusic }
1386 Manuel de notation :
1387 @ruser{Musique vocale}.
1390 @node Contextes et graveurs
1391 @section Contextes et graveurs
1392 @translationof Contexts and engravers
1394 Nous avons évoqué rapidement les contextes et graveurs dans les
1395 chapitres précédents ; examinons en détail ces concepts essentiels
1396 à la maîtrise de LilyPond.
1399 * Tout savoir sur les contextes::
1400 * Création d'un contexte::
1401 * Tout savoir sur les graveurs::
1402 * Modification des propriétés d'un contexte::
1403 * Ajout et suppression de graveurs::
1407 @node Tout savoir sur les contextes
1408 @subsection Tout savoir sur les contextes
1409 @translationof Contexts explained
1411 @cindex contextes, les différents
1413 Imprimer de la musique impose d'ajouter un certain nombre d'éléments de
1414 notation. Par exemple, voici un fragment de partition, précédé du code
1417 @lilypond[quote,verbatim,relative=2]
1418 cis4 cis2. | a4 a2. |
1421 Si le code est assez austère, dans la partition ont été ajoutés un
1422 chiffre de mesure, des barres de mesure, des altérations et une clé.
1423 Pour une bonne raison : LilyPond @emph{interprète} le code. Il le
1424 compulse dans l'ordre chronologique, de même qu'on lit une partition de
1425 gauche à droite ; et pendant ce traitement, le logiciel garde en
1426 mémoire les limites des mesures, ou encore quelles hauteurs de note
1427 demandent des altérations accidentelles. Ces informations se présentent
1428 à plusieurs niveaux : ainsi, une altération n'a d'effet que sur une
1429 seule portée, tandis qu'une barre de mesure doit être synchronisée sur
1430 toute l'étendue verticale de la partition.
1432 LilyPond regroupe ces règles et ces fragments d'information dans des
1433 @emph{Contextes}. Certains contextes sont les voix (contexte
1434 @code{Voice}), les portées (contexte @code{Staff}), ou la partition dans
1435 son ensemble (contexte @code{Score}). Ils sont ordonnés
1436 hiérarchiquement : ainsi un contexte @code{Staff} peut contenir
1437 plusieurs contextes @code{Voice}, et un contexte @code{Score} peut
1438 contenir plusieurs contextes @code{Staff}.
1441 @sourceimage{context-example,5cm,,}
1444 Chaque contexte est chargé de faire appliquer certaines règles de
1445 gravure, de créer certains objets, et de prendre en compte les
1446 propriétés qui leur sont associées. Ainsi, le contexte @code{Voice}
1447 peut faire intervenir une altération accidentelle, puis le contexte
1448 @code{Staff} devra déterminer s'il faudra imprimer ou non cette dernière
1449 dans la suite de la mesure.
1451 Les barres de mesure, quant à elles, sont alignées verticalement grâce
1452 au contexte @code{Score} par défaut. En revanche, dans une musique
1453 polymétrique, par exemple mêlant une portée à 3/4 et une autre à 4/4,
1454 les barres de mesures n'ont plus à être alignées : il faut alors
1455 modifier les comportement par défaut des contextes @code{Score} et
1458 Dans une partition très simple, les contextes sont créés implicitement
1459 et peuvent être ignorés. Mais lorsqu'il s'agit de morceaux plus amples
1460 -- entendons par là tout ce qui s'écrit sur plus d'une portée -- il faut
1461 les créer explicitement pour être sûr d'obtenir toutes les portées
1462 nécessaires, et dans le bon ordre. Enfin, pour des morceaux impliquant
1463 une notation spéciale, modifier les contextes ou en créer de nouveaux
1464 devient extrêmement utile.
1466 En plus des contextes @code{Score}, @code{Staff} et @code{Voice} sont
1467 disponibles d'autres contextes intermédiaires entre les niveaux
1468 partition et portée, chargés de gérer certains regroupement, tels que
1469 @code{PianoStaff} ou @code{ChoirStaff}. Vous disposez aussi d'autres
1470 contextes de portée ou de voix alternatifs, ainsi que des contextes
1471 spécifiques pour les paroles, les percussions, les diagrammes pour
1472 instruments frettés, la basse chiffrée, etc.
1474 Le nom de chacun des contextes est formé d'un ou plusieurs mots aux
1475 initiales en capitale et directement accolés les uns aux autres sans
1476 ponctuation, comme par exemple @code{GregorianTranscriptionStaff}.
1479 Manuel de notation :
1480 @ruser{Tout savoir sur les contextes}.
1483 @node Création d'un contexte
1484 @subsection Création d'un contexte
1485 @translationof Creating contexts
1490 @cindex nouveaux contextes
1491 @cindex contextes, création de
1493 Il en va des contextes comme de toute hiérarchie : il faut un sommet --
1494 le contexte @code{Score} en l'occurrence. La commande @code{\score} est
1495 chargée de le créer, mais pour des partitions simples, il le sera
1496 automatiquement. Le bloc @code{\score} contient donc une expression
1497 musicale unique ainsi que la définition des supports à produire --
1498 @code{\layout} pour du visuel ou @code{\midi} pour de l'acoustique.
1500 Lorsqu'une partition ne comporte qu'une voix et une seule portée, vous
1501 pouvez laisser LilyPond créer automatiquement les contextes @code{Voice}
1502 et @code{Staff} ; mais leur présence explicite devient indispensable dès
1503 que la situation se complique. Le moyen le plus simple est d'utiliser
1504 la commande @code{\new}. Elle doit intervenir avant une expression
1508 \new @var{type} @var{expression-musicale}
1512 où @var{type} correspond au nom du contexte (tels @code{Staff} ou
1513 @code{Voice}). Cette commande crée un nouveau contexte, puis
1514 interprète l'@var{expression-musicale} contenue dans ledit
1517 @warning{La commande @bs{}@code{new Score} ne devrait jamais servir en
1518 début de partition, puisque le contexte premier que constitue
1519 @code{Score} est créé automatiquement par l'interprétation de
1520 l'@var{expression-musicale} contenue dans le bloc @code{\score}. Les
1521 adaptations affectant les propriétés des différents contextes et qui
1522 s'appliqueront à l'ensemble de la partition trouvent leur place au sein
1523 d'un bloc @bs{}@code{layout}, en suivant les préceptes énoncés au
1524 chapitre @ref{Modification des propriétés d'un contexte}.}
1526 Nous avons déjà vu au cours des chapitres précédents de nombreux
1527 exemples où des contextes @code{Staff} ou @code{Voice} étaient créés au
1528 besoin. Dans un but didactique, voici maintenant une application
1529 complète et abondamment commentée :
1531 @lilypond[quote,verbatim,ragged-right]
1532 \score { % start of single compound music expression
1533 << % start of simultaneous staves section
1535 \new Staff { % create RH staff
1538 \new Voice { % create voice for RH notes
1539 \relative c'' { % start of RH notes
1545 \new Staff << % create LH staff; needs two simultaneous voices
1548 \new Voice { % create LH voice one
1550 \relative g { % start of LH voice one notes
1551 g8 <bes d> ees, <g c> |
1552 g8 <bes d> ees, <g c> |
1553 } % end of LH voice one notes
1554 } % end of LH voice one
1555 \new Voice { % create LH voice two
1557 \relative g { % start of LH voice two notes
1560 } % end of LH voice two notes
1561 } % end of LH voice two
1562 >> % end of LH staff
1563 >> % end of simultaneous staves section
1564 } % end of single compound music expression
1567 Notez que toute déclaration qui ouvre un bloc par une accolade,
1568 @code{@{}, ou un double chevron gauche, @code{<<}, est indentée de deux
1569 espaces supplémentaires, et de deux autres pour sa marque de fermeture.
1570 Bien que ceci ne soit pas obligatoire, nous vous invitons à adopter
1571 cette pratique qui vous évitera nombre d'erreurs @qq{accolades non
1572 appariées}. La structure de la musique apparaît ainsi au premier coup
1573 d'œil, et les défauts de parité sont plus facilement repérables. Vous
1574 remarquerez que la portée MG est créée à l'aide d'un double chevron
1575 gauche -- nécessaire pour gérer ses deux voix -- alors que la portée MD
1576 ne contient qu'une seule expression musicale -- il n'y a qu'une voix --
1577 bornée par des accolades simples.
1579 @cindex contexte, nommage
1580 @cindex nommage des contextes
1582 La commande @code{\new} peut aussi permettre de nommer le contexte créé,
1583 et ainsi le distinguer des autres contextes déjà existants :
1586 \new @var{type} = @var{"UnNom"} @var{expression-musicale}
1589 Vous noterez la distinction entre le nom du type de contexte,
1590 @code{Staff}, @code{Voice}, etc. et le nom -- une simple suite de
1591 lettres au bon gré de l'utilisateur -- permettant d'identifier une
1592 instance particulière du type en question. Vous pouvez utiliser des
1593 chiffres et espaces, à la stricte condition d'englober le tout dans des
1594 guillemets ; l'identificateur suivant est tout à fait valide :
1595 @code{\new Staff = "MaPortee 1" @var{expression-musicale}}.
1596 Comme nous l'avons déjà vu dans le chapitre consacré aux paroles
1597 (@ref{Voix et paroles}), cet identifiant permettra ensuite de se
1598 référer à ce contexte particulier.
1601 Manuel de notation :
1602 @ruser{Création et référencement d'un contexte}.
1605 @node Tout savoir sur les graveurs
1606 @subsection Tout savoir sur les graveurs
1607 @translationof Engravers explained
1612 Tout point qui compose une partition générée par LilyPond est
1613 produit par un graveur (@emph{engraver} en anglais). Ainsi, il y en a
1614 un qui imprime les portées, un autre les têtes de note, un autre les
1615 hampes, un autre encore pour les ligatures, etc. LilyPond dispose de
1616 plus de 120 graveurs ! La plupart des partitions ne requièrent de
1617 s'intéresser qu'à quelques-uns seulement, et pour des partitions
1618 simples, vous n'aurez même pas à vous en préoccuper.
1620 Les graveurs résident et opèrent au sein des contextes.
1621 Les graveurs tels que le @code{Metronome_mark_engraver}, dont les effets
1622 s'appliquent à la partition dans son intégralité, opèrent au sein du
1623 contexte de plus haut niveau -- le contexte @code{Score}.
1625 Les graveurs @code{Clef_engraver} et @code{Key_engraver} seront logés
1626 dans chacun des contextes @code{Staff} ; deux portées peuvent
1627 requérir des clefs et des armures différentes.
1629 Les graveurs @code{Note_heads_engraver} et @code{Stem_engraver} résident
1630 dans chacun des contextes @code{Voice}, contexte du plus bas niveau.
1632 Chaque graveur confectionne les objets spécifiquement associés à sa
1633 fonction et traite les propriétés attachées à cette fonction. Ces
1634 propriétés, tout comme celles relatives aux contextes, peuvent être
1635 modifiées afin d'influencer le comportement du graveur et par voie de
1636 conséquence le rendu des éléments dont il a la charge.
1638 Les graveurs ont tous un nom composé, formé des différents mots
1639 décrivant leur fonction. Seule l'initiale du premier mot est en
1640 majuscule, et les mots qui le composent sont joints par un caractère
1641 souligné. Ainsi, le @code{Staff_symbol_engraver} est chargé de créer
1642 les lignes de la portée, et le @code{Clef_engraver} détermine la hauteur
1643 de référence de la portée en dessinant le symbole de la clef.
1645 Voici quelques-uns des graveurs les plus courants, ainsi que leur
1646 fonction. Vous noterez qu'il est facile d'en connaître la fonction à
1647 partir du nom, et vice versa.
1649 @multitable @columnfractions .3 .7
1652 @item Accidental_engraver
1653 @tab Crée les altérations, y compris de précaution, accidentelles ou
1656 @tab Grave les ligatures (@emph{beams})
1658 @tab Grave les clefs
1659 @item Completion_heads_engraver
1660 @tab Divise les notes qui dépassent de la mesure
1661 @item Dynamic_engraver
1662 @tab Crée les soufflets et textes de nuance
1663 @item Forbid_line_break_engraver
1664 @tab Empêche un saut de ligne si un élément musical est toujours actif
1667 @item Metronome_mark_engraver
1668 @tab Grave les indications métronomiques
1669 @item Note_heads_engraver
1670 @tab Grave les têtes de note
1672 @tab Grave les silences
1673 @item Staff_symbol_engraver
1674 @tab Grave les cinq lignes (par défaut) de la portée
1676 @tab Crée les hampes et les trémolos sur une hampe unique
1677 @item Time_signature_engraver
1678 @tab Crée les métriques
1683 Nous verrons plus avant comment le résultat de LilyPond peut changer
1684 lorsqu'on modifie l'action des graveurs.
1687 Référence des propriétés internes :
1688 @rinternals{Engravers and Performers}.
1691 @node Modification des propriétés d'un contexte
1692 @subsection Modification des propriétés d'un contexte
1693 @translationof Modifying context properties
1695 @cindex contexte, propriétés
1696 @cindex propriétés d'un contexte, modification
1697 @cindex modification des propriétés d'un contexte
1704 Les contextes gèrent les différentes valeurs des nombreuses
1705 @emph{propriétés} qui leur sont attachées. Beaucoup d'entre elles
1706 sont susceptibles d'être modifiées afin d'influer sur l'interprétation
1707 de l'input et ainsi changer l'apparence du résultat. On les modifie
1708 grâce à la commande @code{\set}, qui s'utilise ainsi :
1711 \set @emph{ContexteNommé}.@emph{propriétéNommée} = #@emph{valeur}
1714 où @emph{ContexteNommé} est habituellement @code{Score},
1715 @code{Staff} ou @code{Voice}. S'il n'est pas mentionné, il sera
1716 considéré comme étant @code{Voice}.
1718 Les noms des propriétés de contexte sont composés de mots accolés sans
1719 trait d'union ni caractère souligné, et dont seul le premier n'aura pas
1720 d'initiale en majuscule. Voici quelques exemples de celles les plus
1721 communément utilisées.
1723 @c attempt to force this onto a new page
1725 @multitable @columnfractions .25 .15 .45 .15
1726 @headitem propriétéNommée
1729 @tab Exemple de valeur
1732 @tab Si vrai, ajoute un bécarre avant une altération accidentelle
1733 @tab @code{#t}, @code{#f}
1734 @item currentBarNumber
1736 @tab Détermine le numéro de la mesure en cours
1740 @tab Si vrai, imprime les liaisons au-dessous @strong{et} au-dessus
1742 @tab @code{#t}, @code{#f}
1743 @item instrumentName
1745 @tab Détermine le nom à afficher en début de portée
1746 @tab @code{"Cello I"}
1749 @tab Augmente ou diminue la taille de la fonte
1753 @tab Détermine le texte à imprimer avant le début d'un couplet
1758 où un booléen correspond soit à vrai (@code{#t} pour @emph{True} en
1759 anglais) ou faux (@code{#f} pour @emph{False} en anglais), un entier est
1760 un nombre entier positif, un réel est un nombre décimal positif ou
1761 négatif, et texte correspond à une suite de caractères encadrée par des
1762 apostrophes doubles. Attention à la présence des signes dièse
1763 (@code{#}) dans deux cas particuliers : ils sont partie intégrante
1764 des valeurs booléennes et précèdent les @code{t} ou @code{f}, mais
1765 doivent aussi précéder @emph{valeur} dans le libellé de la commande
1766 @code{\set}. Il faudra donc, dans le cas d'une valeur booléenne, ne pas
1767 oublier de saisir deux signes dièse -- par exemple @code{##t}.
1769 @cindex propriétés et contextes
1770 @cindex réglage de propriétés au sein des contextes
1772 Avant de déterminer l'une de ces propriétés, nous devons savoir dans
1773 quel contexte elle intervient. Si cela est bien souvent évident, il
1774 peut arriver que cela tourne au cauchemar. Lorsque vous ne spécifiez
1775 pas le bon contexte, aucun message d'erreur ne s'affiche et l'effet
1776 attendu n'est pas au rendez-vous. Par exemple, le @code{instrumentName}
1777 est de manière incontestable membre du contexte @code{Staff}, puisque
1778 c'est bien la portée que l'on va nommer.
1779 Dans l'exemple suivant, la première portée affiche effectivement un nom,
1780 alors que ce n'est pas le cas pour la deuxième dans la mesure où le
1781 contexte n'a pas été spécifié.
1783 @lilypond[quote,verbatim,ragged-right]
1785 \new Staff \relative c'' {
1786 \set Staff.instrumentName = #"Soprano"
1789 \new Staff \relative c' {
1790 \set instrumentName = #"Alto" % Wrong!
1796 Dans la mesure où le nom de contexte par défaut est @code{Voice}, la
1797 deuxième commande @code{\set} a défini @qq{Alto} comme propriété
1798 @code{instrumentName} du contexte de voix. Puisque LilyPond n'ira pas
1799 chercher une telle propriété dans le contexte @code{Voice}, celle-ci ne
1800 sera pas interprétée. Il ne s'agit pas d'une erreur, aucun message
1801 d'erreur ne sera ni émis ni enregistré.
1803 De la même manière, une faute d'orthographe dans le nom de la propriété
1804 ne générera aucun message d'erreur et l'action escomptée ne se produira
1805 pas. Vous pourriez déterminer par la commande @code{\set} n'importe
1806 quelle @qq{propriété}, même fictive, à partir de n'importe quel nom et
1807 dans n'importe lequel des contextes disponibles. Mais tant que ce nom
1808 est inconnu de LilyPond, rien ne se passera. Certains éditeurs de texte
1809 disposent d'une prise en charge spécifique aux fichiers source LilyPond,
1810 à l'instar de LilyPondTool couplé à JEdit et qui documente les noms des
1811 propriétés dans une infobulle lorsque vous les survolez à la souris, ou
1812 les souligne différemment s'ils sont inconnus, comme ConTEXT. Dans le
1813 cas où votre éditeur ne dispose pas de ces fonctionnalités, nous vous
1814 recommandons de vérifier le nom des propriétés que vous manipulez dans
1815 la Référence des propriétés internes -- voir
1816 @rinternals{Tunable context properties}, ou @rinternals{Contexts}.
1818 La propriété @code{instrumentName} ne sera prise en compte que si elle
1819 est définie dans un contexte @code{Staff} ; d'autres propriétés
1820 peuvent par contre être définies dans plusieurs contextes différents.
1821 C'est le cas de la propriété @code{extraNatural} qui est définie par
1822 défaut à @code{##t} (vrai) pour toutes les portées. Si vous lui
1823 attribuez la valeur @code{##f} (faux) dans un contexte @code{Staff}
1824 particulier, elle ne s'appliquera qu'aux altérations de la portée en
1825 question ; si vous lui attribuez la valeur @qq{faux} au niveau du
1826 contexte @code{Score}, cela s'appliquera alors à toutes les portées.
1828 Voici comment supprimer les bécarres supplémentaires pour une portée :
1830 @lilypond[quote,verbatim,ragged-right]
1832 \new Staff \relative c'' {
1835 \new Staff \relative c'' {
1836 \set Staff.extraNatural = ##f
1843 et pour toutes les portées :
1845 @lilypond[quote,verbatim,ragged-right]
1847 \new Staff \relative c'' {
1850 \new Staff \relative c'' {
1851 \set Score.extraNatural = ##f
1857 Autre exemple, si la propriété @code{clefTransposition} est déterminée
1858 au niveau du contexte @code{Score}, elle modifiera la valeur de la
1859 transposition en cours pour toutes les portées actives ; cette valeur
1860 sera considérée comme étant la nouvelle valeur par défaut pour toutes
1861 les portées à venir.
1863 La commande opposée, @code{\unset}, efface la propriété du contexte ; la
1864 plupart des propriétés reviennent de ce fait à leur valeur par défaut.
1865 En règle générale, la commande @code{\unset} n'est pas nécessaire dès
1866 lors que vous faites appel à une nouvelle commande @code{\set} pour
1867 modifier le réglage.
1869 Les commandes @code{\set} et @code{\unset} peuvent intervenir n'importe
1870 où dans votre fichier source. Elles seront effectives dès leur
1871 apparition et jusqu'à la fin de la partition, à moins d'être affectées
1872 par un @code{\unset} ou un nouveau @code{\set}. À titre d'exemple, nous
1873 allons jouer avec la taille des fontes, ce qui affecte entre autres la
1874 grosseur des têtes de note. Les modifications s'appliquent toujours par
1875 rapport à la valeur par défaut, non par rapport à la dernière valeur
1878 @lilypond[quote,verbatim,ragged-right,relative=1]
1880 % make note heads smaller
1883 % make note heads larger
1884 \set fontSize = #2.5
1886 % return to default size
1891 Nous venons de voir comment déterminer la valeur de différents types de
1892 propriété. N'oubliez pas que les nombres, entiers ou réels, doivent
1893 être précédés d'un signe dièse (@code{#}) et les valeurs vrai ou faux de
1894 deux signes dièse -- respectivement @code{##t} et @code{##f} --. Une
1895 valeur textuelle doit être encadrée de guillemets anglais,
1896 @code{"@dots{}"}, bien que, comme nous le constaterons plus tard, la
1897 commande @code{\markup} permet aussi de spécifier du texte.
1900 @subsubheading Définition des propriétés de contexte avec @code{\with}
1901 @translationof Setting context properties with @code{\with}
1906 @cindex propriétés d'un contexte, définition avec \with
1908 Les propriétés d'un contexte peuvent aussi être réglées lors de la
1909 création de ce contexte. Ceci constitue parfois une façon plus claire
1910 de spécifier les valeurs d'une propriété pour la durée de vie du
1911 contexte. Lorsque vous créez un contexte à l'aide de la commande
1912 @code{\new}, vous pouvez la faire suivre immédiatement d'un bloc
1913 @code{\with @{ @dots{} @}} qui contiendra les réglages des différentes
1914 propriétés. Ainsi, si nous voulions par exemple annuler l'impression
1915 des bécarres supplémentaires sur la durée d'une portée, nous
1919 \new Staff \with @{ extraNatural = ##f @}
1925 @lilypond[quote,verbatim,ragged-right]
1929 gisis4 gis aeses aes
1931 \new Staff \with { extraNatural = ##f } {
1933 gisis4 gis aeses aes
1939 Les propriétés réglées de cette manière peuvent néanmoins être modifiées
1940 de façon dynamique grâce à @code{\set} ; un @code{\unset} les ramènera à
1941 leur valeur initialisée par @code{\with}.
1943 @cindex fontSize, valeur par défaut et réglage
1945 La propriété @code{fontSize} constitue une exception : lorsqu'elle
1946 est déterminée au sein d'un bloc @code{\with}, cela redéfinit la valeur
1947 par défaut de la taille de fonte. Une modification est possible par la
1948 commande @code{\set}, mais la commande @code{\unset fontSize} fera
1949 revenir à la nouvelle valeur par défaut.
1952 @subsubheading Définition des propriétés de contexte avec @code{\context}
1953 @translationof Setting context properties with @code{\context}
1955 @cindex propriétés d'un contexte, définition avec \context
1960 Vous pouvez régler les valeurs des propriétés de contexte en une seule
1961 fois pour tous les contextes d'un même type, par exemple tous les
1962 contextes @code{Staff}. Le type du contexte doit être donné
1963 explicitement d'après son nom, par exemple @code{Staff}, précédé d'une
1964 oblique inverse, donc nous saisirons @code{\Staff}. La manière de
1965 régler la valeur des propriétés est la même que ce que nous avons vu
1966 avec la commande @code{\with}, puisqu'on se place dans un bloc
1967 @code{\context} inclus dans un bloc @code{\layout}. Chaque bloc
1968 @code{\context} affectera tous les contextes concernés par le bloc
1969 @code{\score} ou @code{\book} au sein duquel apparaît ce bloc
1970 @code{\layout}. Voici comment le mettre en place :
1972 @lilypond[verbatim,quote]
1988 Dans le cas où ces ajustements de propriété doivent affecter
1989 toutes les portées de la partition, nous utiliserons alors :
1991 @lilypond[quote,verbatim]
1996 gisis4 gis aeses aes
2001 gisis4 gis aeses aes
2007 \Score extraNatural = ##f
2014 Les propriétés de contexte ainsi définies peuvent être adaptées pour
2015 chacun des contextes en particulier grâce à un bloc @code{\with} ou bien
2016 une commande @code{\set} au fil des notes.
2019 Manuel de notation :
2020 @ruser{Modification des réglages par défaut d'un contexte},
2021 @ruser{La commande de fixation (set)}.
2023 Référence des propriétés internes :
2024 @rinternals{Contexts},
2025 @rinternals{Tunable context properties}.
2028 @node Ajout et suppression de graveurs
2029 @subsection Ajout et suppression de graveurs
2030 @translationof Adding and removing engravers
2032 @cindex graveurs, ajout
2033 @cindex graveurs, suppression
2040 Nous avons vu que chaque contexte met en œuvre plusieurs graveurs, et
2041 que chacun de ces graveurs est chargé de générer une composante
2042 particulière du fichier de sortie, qui les barres de mesure, qui la
2043 portée, qui les têtes de note, les hampes, etc. Le fait de supprimer un
2044 graveur d'un contexte éliminera sa contribution au fichier de sortie.
2045 Bien que ce soit là un moyen radical de modifier le résultat, cette
2046 pratique est dans quelques cas fort utile.
2049 @subsubheading Modification d'un seul contexte
2050 @translationof Changing a single context
2052 Nous utilisons, pour supprimer un graveur d'un contexte, la commande
2053 @code{\with} dès la création du-dit contexte, comme nous l'avons vu dans
2054 la section précédente.
2056 Illustrons notre propos en reprenant un exemple du chapitre précédent,
2057 duquel nous supprimerons les lignes de la portée. Pour mémoire, les
2058 lignes d'une portée sont générées par le @code{Staff_symbol_engraver}.
2060 @lilypond[quote,verbatim,ragged-right]
2062 \remove "Staff_symbol_engraver"
2066 \set fontSize = #-4 % make note heads smaller
2068 \set fontSize = #2.5 % make note heads larger
2070 \unset fontSize % return to default size
2075 @cindex ambitus, graveur
2077 Vous pouvez aussi ajouter individuellement un graveur à un contexte. La
2078 commande se formule ainsi :
2080 @code{\consists @var{Nom_du_graveur}}
2083 et se place dans un bloc @code{\with}. Certaines partitions vocales
2084 font apparaître un @rglos{ambitus} au début de la portée, afin
2085 d'indiquer ses notes extrêmes. L'ambitus est généré par
2086 l'@code{Ambitus_engraver}, que l'on peut adjoindre à n'importe quel
2087 contexte. Si nous l'ajoutons au contexte @code{Voice}, seule la
2088 tessiture de cette voix sera calculée :
2090 @lilypond[quote,verbatim,ragged-right]
2093 \consists "Ambitus_engraver"
2110 alors que si nous l'ajoutons au contexte @code{Staff},
2111 l'@code{Ambitus_engraver} calculera l'écart maximal à partir de toutes
2112 les notes de toutes les voix de la portée :
2114 @lilypond[quote,verbatim,ragged-right]
2116 \consists "Ambitus_engraver"
2135 @subsubheading Modification de tous les contextes d'un même type
2136 @translationof Changing all contexts of the same type
2141 Les exemples ci-dessus nous ont montré comment ajouter ou retirer des
2142 graveurs à des contextes individuels. Nous pourrions aussi ajouter ou
2143 supprimer des graveurs à tous les contextes d'un même type en insérant
2144 les commandes pour le contexte approprié au sein d'un bloc
2145 @code{\layout}. Si nous voulions afficher un ambitus pour chacune des
2146 portées d'un système à quatre portées, il nous suffirait d'écrire :
2148 @lilypond[quote,verbatim,ragged-right]
2177 \consists "Ambitus_engraver"
2184 Vous réglerez de la même manière les propriétés de tous les contextes
2185 d'un type particulier si vous insérez les commandes @code{\set} dans un
2186 bloc @code{\context}.
2189 Manuel de notation :
2190 @ruser{Modification des greffons de contexte},
2191 @ruser{Modification des réglages par défaut d'un contexte}.
2194 Dans la mesure où les @code{Stem_engraver} et @code{Beam_engraver}
2195 rattachent à des têtes de note les objets qu'ils créent, désactiver le
2196 @code{Note_heads_engraver} entraîne l'absence de hampe et de ligature.
2199 @node Extension des modèles
2200 @section Extension des modèles
2201 @translationof Extending the templates
2203 Bon, vous avez lu le tutoriel, vous savez écrire de la musique. Mais
2204 comment obtenir les portées que vous voulez ? Les @ref{Modèles}, c'est
2205 bien beau, mais que faire quand ils ne traitent pas ce que l'on veut
2208 Les exemples qui suivent vous donneront des méthodes générales pour
2209 adapter des modèles.
2212 * Soprano et violoncelle::
2213 * Partition pour chœur à quatre voix mixtes::
2214 * Écriture d'une partition à partir de zéro::
2215 * Économie de saisie grâce aux identificateurs et fonctions::
2216 * Conducteurs et parties::
2220 @node Soprano et violoncelle
2221 @subsection Soprano et violoncelle
2222 @translationof Soprano and cello
2224 @cindex modèles, modification des
2226 Commencez par le modèle qui vous semblera le plus proche de ce à quoi
2227 vous voulez aboutir. Disons par exemple que vous voulez écrire une pièce
2228 pour soprano et violoncelle : dans ce cas, on pourrait commencer par les
2229 @qq{notes et paroles}, pour la partie de soprano.
2232 \version @w{"@version{}"}
2234 melodie = \relative c' @{
2241 texte = \lyricmode @{
2247 \new Voice = "un" @{
2251 \new Lyrics \lyricsto "un" \texte
2258 Maintenant, on veut ajouter une partie de violoncelle.
2259 Jetons un coup d'œil sur l'exemple avec les notes seules :
2262 \version @w{"@version{}"}
2264 melodie = \relative c' @{
2278 On n'a pas besoin de deux commandes @code{\version}. Ce dont on a
2279 besoin, c'est de la section @code{melodie}. De même, on n'a pas besoin
2280 de deux sections @code{\score} -- si nous les gardions toutes les deux,
2281 on obtiendrait deux parties séparées ; mais nous voulons un vrai duo,
2282 avec les deux parties ensemble. Dans la section @code{\score}, on n'a
2283 pas besoin non plus de deux @code{\layout} ni de deux @code{\midi}.
2285 Si on se contente de couper et coller les sections @code{melodie}, on se
2286 retrouvera avec deux sections de ce nom ; il nous faut donc les
2287 renommer. Appelons la section pour la soprano @code{sopranoMusique} et
2288 celle pour le violoncelle @code{violoncelleMusique}. Tant qu'on y est,
2289 renommons @code{texte} en @code{sopranoParoles}. Attention à bien
2290 renommer les deux occurrences de chacune de ces dénominations :
2291 c'est-à-dire la définition de départ, où l'on trouve
2292 @code{melodie = \relative c' @{ }, et l'endroit où cette dénomination
2293 est utilisée, dans la section @code{\score}.
2295 Et puis, toujours tant qu'on y est, mettons le violoncelle en clé de fa,
2296 comme le veut l'usage, et donnons-lui d'autres notes.
2299 \version @w{"@version{}"}
2301 sopranoMusique = \relative c' @{
2308 sopranoParoles = \lyricmode @{
2312 violoncelleMusique = \relative c @{
2321 \new Voice = "un" @{
2325 \new Lyrics \lyricsto "un" \sopranoParoles
2332 Voilà qui est mieux, mais la partie de violoncelle n'apparaît pas sur
2333 la partition -- en effet, nous n'y avons pas fait appel dans la section
2334 @code{\score}. Si l'on veut que la partie de violoncelle s'imprime sous
2335 la partie de soprano, on va devoir ajouter :
2338 \new Staff \musiqueVioloncelle
2342 en dessous de tout ce qui concerne la soprano. Il nous faut également
2343 encadrer la musique par des @code{<<} et @code{>>}, qui feront comprendre
2344 à LilyPond que plusieurs événements -- ici, des objets @code{Staff} --
2345 se déroulent en même temps. Le bloc @code{\score} ressemble maintenant à
2347 @c Indentation in this example is deliberately poor
2352 \new Voice = "un" @{
2356 \new Lyrics \lyricsto "un" \sopranoParoles
2358 \new Staff \violoncelleMusique
2366 C'est un peu le bazar dans tout ça ; mais il vous sera facile de
2367 mettre un peu d'ordre dans l'indentation. Voici le modèle pour
2368 soprano et violoncelle au complet :
2370 @lilypond[quote,verbatim,ragged-right,addversion]
2371 sopranoMusic = \relative c' {
2378 sopranoLyrics = \lyricmode {
2382 celloMusic = \relative c {
2392 \new Voice = "one" {
2396 \new Lyrics \lyricsto "one" \sopranoLyrics
2398 \new Staff \celloMusic
2406 Les patrons originaux sont disponibles à l'annexe
2407 @ref{Modèles pour portée unique}.
2410 @node Partition pour chœur à quatre voix mixtes
2411 @subsection Partition pour chœur à quatre voix mixtes
2412 @translationof Four-part SATB vocal score
2414 @cindex exemple, SATB
2415 @cindex SATB, squelette
2417 La plupart des œuvres écrites pour chœur à quatre voix mixtes et
2418 orchestre, comme Elias de Mendelssohn ou le Messie de Haendel, disposent
2419 la musique et les paroles du chœur sur quatre portées -- soprano, alto,
2420 ténor et basse -- surmontant une réduction pour piano de
2421 l'accompagnement orchestral. En voici un exemple, tiré du Messie de
2424 @c The following should appear as music without code
2425 @lilypond[quote,ragged-right]
2426 global = { \key d \major \time 4/4 }
2428 sopranoMusic = \relative c'' {
2430 r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
2432 sopranoWords = \lyricmode {
2433 Wor -- thy | is the lamb | that was slain |
2436 altoMusic = \relative a' {
2438 r4 a2 a4 | fis4. fis8 a2 | g4 fis e2 |
2440 altoWords = \sopranoWords
2442 tenorMusic = \relative c' {
2444 r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 |
2446 tenorWords = \sopranoWords
2448 bassMusic = \relative c' {
2450 r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 |
2452 bassWords = \sopranoWords
2454 upper = \relative a' {
2457 r4 <a d fis>2 <a e' a>4 |
2458 <d fis d'>4. <d fis d'>8 <a d a'>2 |
2459 <g cis g'>4 <a d fis> <a cis e>2 |
2462 lower = \relative c, {
2465 <d d'>4 <d d'>2 <cis cis'>4 |
2466 <b b'>4. <b' b'>8 <fis fis'>2 |
2467 <e e'>4 <d d'> <a' a'>2 |
2471 << % combine ChoirStaff and PianoStaff in parallel
2473 \new Staff = "sopranos" <<
2474 \set Staff.instrumentName = #"Soprano"
2475 \new Voice = "sopranos" {
2480 \new Lyrics \lyricsto "sopranos" {
2483 \new Staff = "altos" <<
2484 \set Staff.instrumentName = #"Alto"
2485 \new Voice = "altos" {
2490 \new Lyrics \lyricsto "altos" { \altoWords }
2491 \new Staff = "tenors" <<
2492 \set Staff.instrumentName = #"Tenor"
2493 \new Voice = "tenors" {
2498 \new Lyrics \lyricsto "tenors" { \tenorWords }
2499 \new Staff = "basses" <<
2500 \set Staff.instrumentName = #"Bass"
2501 \new Voice = "basses" {
2506 \new Lyrics \lyricsto "basses" {
2511 \set PianoStaff.instrumentName = #"Piano"
2512 \new Staff = "upper" \upper
2513 \new Staff = "lower" \lower
2519 @warning{Cette présentation s'obtient facilement à l'aide du gabarit
2520 préprogrammé @code{satb.ly} -- voir @ref{Gabarits préprogrammés}. Il
2521 masque, dans un but de simplification, totalement la structure des
2522 contextes nécessaires et les génère automatiquement. Pour les besoins
2523 de la démonstration et à titre didactique nous procèderons ici pas à
2524 pas, ce gabarit préprogrammé ne correspondant pas forcément à vos
2527 Le gabarit qui se rapprocherait le plus de cette mise en forme est
2528 @ref{Partition pour chœur SATB avec réduction pour piano} -- voir
2529 @ref{Modèles pour ensemble vocal} -- mais encore faudrait-il en
2530 modifier la mise en forme et refaire la partie de piano qui n'est
2531 plus une simple reprise des parties vocales. Les variables qui
2532 gèrent la musique et les paroles du chœur ne nécessitent pas de
2533 modification, mais il nous faut d'autres variables pour la
2536 L'ordre dans lequel apparaissent les contextes dans le @code{ChoirStaff}
2537 du modèle ne correspond pas à ce que nous voyons ci-dessus. Il nous
2538 faudra y revenir pour obtenir quatre portées avec des paroles en dessous
2539 de chacune d'elles. Toutes les voix devraient être @code{\voiceOne},
2540 ce qui est la position par défaut ; il nous faudra donc éliminer toutes
2541 les commandes @code{\voiceXXX}. Les ténors auront besoin d'une clé
2542 spécifique. Enfin, nous n'avons pas encore abordé la façon dont les
2543 paroles sont présentées dans le modèle ; nous procéderons donc comme
2544 nous en avons l'habitude. Il faudra aussi ajouter un nom à chaque
2547 Une fois tout ceci accompli, voici notre @code{ChoirStaff} :
2551 \new Staff = "sopranos" <<
2552 \set Staff.instrumentName = #"Soprano"
2553 \new Voice = "sopranos" @{
2558 \new Lyrics \lyricsto "sopranos" @{
2561 \new Staff = "altos" <<
2562 \set Staff.instrumentName = #"Alto"
2563 \new Voice = "altos" @{
2568 \new Lyrics \lyricsto "altos" @{
2571 \new Staff = "tenors" <<
2572 \set Staff.instrumentName = #"Tenor"
2573 \new Voice = "tenors" @{
2578 \new Lyrics \lyricsto "tenors" @{
2581 \new Staff = "basses" <<
2582 \set Staff.instrumentName = #"Bass"
2583 \new Voice = "basses" @{
2588 \new Lyrics \lyricsto "basses" @{
2591 >> % fin du ChoirStaff
2594 Il nous faut maintenant nous occuper de la partie de piano. Nous allons
2595 nous contenter de récupérer la partie de piano du modèle @qq{Solo
2600 \set PianoStaff.instrumentName = #"Piano "
2601 \new Staff = "upper" \superieur
2602 \new Staff = "lower" \inferieur
2606 puis d'ajouter les définitions de variable pour @code{superieur} et
2609 Les systèmes pour chœur et pour piano doivent être combinés à l'aide de
2610 doubles chevrons gauche/droite puisqu'ils doivent s'empiler :
2613 << % combine ChoirStaff et PianoStaff l'un au-dessus de l'autre
2615 \new Staff = "sopranos" <<
2616 \new Voice = "sopranos" @{
2621 \new Lyrics \lyricsto "sopranos" @{
2624 \new Staff = "altos" <<
2625 \new Voice = "altos" @{
2630 \new Lyrics \lyricsto "altos" @{
2633 \new Staff = "tenors" <<
2634 \clef "G_8" % tenor clef
2635 \new Voice = "tenors" @{
2640 \new Lyrics \lyricsto "tenors" @{
2643 \new Staff = "basses" <<
2645 \new Voice = "basses" @{
2650 \new Lyrics \lyricsto "basses" @{
2653 >> % fin du ChoirStaff
2656 \set PianoStaff.instrumentName = #"Piano"
2657 \new Staff = "upper" \superieur
2658 \new Staff = "lower" \inferieur
2663 Une fois tout cela mis en place, et après avoir ajouté les notes et les
2664 paroles de ces trois mesures du Messie, nous obtenons :
2666 @lilypond[quote,verbatim,ragged-right,addversion]
2667 global = { \key d \major \time 4/4 }
2668 sopranoMusic = \relative c'' {
2670 r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
2672 sopranoWords = \lyricmode {
2673 Wor -- thy | is the lamb | that was slain |
2675 altoMusic = \relative a' {
2677 r4 a2 a4 | fis4. fis8 a2 | g4 fis fis2 |
2679 altoWords = \sopranoWords
2680 tenorMusic = \relative c' {
2682 r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 |
2684 tenorWords = \sopranoWords
2685 bassMusic = \relative c' {
2687 r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 |
2689 bassWords = \sopranoWords
2690 upper = \relative a' {
2693 r4 <a d fis>2 <a e' a>4 |
2694 <d fis d'>4. <d fis d'>8 <a d a'>2 |
2695 <g cis g'>4 <a d fis> <a cis e>2 |
2697 lower = \relative c, {
2700 <d d'>4 <d d'>2 <cis cis'>4 |
2701 <b b'>4. <b' b'>8 <fis fis'>2 |
2702 <e e'>4 <d d'> <a' a'>2 |
2706 << % combine ChoirStaff and PianoStaff in parallel
2708 \new Staff = "sopranos" <<
2709 \set Staff.instrumentName = #"Soprano"
2710 \new Voice = "sopranos" {
2715 \new Lyrics \lyricsto "sopranos" {
2718 \new Staff = "altos" <<
2719 \set Staff.instrumentName = #"Alto"
2720 \new Voice = "altos" {
2725 \new Lyrics \lyricsto "altos" {
2728 \new Staff = "tenors" <<
2729 \set Staff.instrumentName = #"Tenor"
2730 \new Voice = "tenors" {
2735 \new Lyrics \lyricsto "tenors" {
2738 \new Staff = "basses" <<
2739 \set Staff.instrumentName = #"Bass"
2740 \new Voice = "basses" {
2745 \new Lyrics \lyricsto "basses" {
2751 \set PianoStaff.instrumentName = #"Piano "
2752 \new Staff = "upper" \upper
2753 \new Staff = "lower" \lower
2760 @node Écriture d'une partition à partir de zéro
2761 @subsection Écriture d'une partition à partir de zéro
2762 @translationof Building a score from scratch
2764 @cindex modèles, création
2765 @cindex squelettes, création
2767 Après avoir acquis une certaine dextérité dans l'écriture de code
2768 LilyPond, vous devez vous sentir suffisamment prêt à vous lancer dans
2769 la création d'une partition à partir de zéro, autrement dit en ne
2770 partant pas d'un exemple. Vous pourrez ainsi vous construire vos
2771 propres patrons selon le type de musique que vous affectionnez plus
2772 particulièrement. Pour voir comment procéder, nous allons monter la
2773 partition d'un prélude pour orgue.
2775 Nous débutons par une section d'en-tête ; nous y mettrons entre
2776 autres le titre et le nom du compositeur. Puis viennent toutes les
2777 définitions de toutes les variables. Nous terminons par le bloc
2778 @code{\score}. Attelons-nous pour cette aventure, en gardant bien à
2779 l'esprit ce que nous venons de dire ; nous nous occuperons des
2780 détails en temps voulu.
2782 Nous nous appuyons sur les deux premières mesures du prélude sur
2783 @emph{Jesu, meine Freude}, écrit pour orgue avec pédalier. Vous pouvez
2784 voir ces deux mesures au bas de cette page. La main droite comporte
2785 deux voix, la main gauche et le pédalier une seule. Il nous faut donc
2786 quatre définitions de musique, plus une qui contiendra la métrique et
2790 \version @w{"@version{}"}
2792 title = "Jesu, meine Freude"
2793 composer = "J S Bach"
2795 ArmureMetrique = @{ \key c \minor \time 4/4 @}
2796 ManuelUnVoixUnMusique = @{ s1 @}
2797 ManuelUnVoixDeuxMusique = @{ s1 @}
2798 ManuelDeuxMusique = @{ s1 @}
2799 PedalierOrgueMusique = @{ s1 @}
2805 Pour l'instant, nous utilisons des silences invisibles, @code{s1}, en
2806 lieu et place des notes réelles. On verra plus tard.
2808 Passons maintenant au bloc @code{\score} et à ce qu'il devrait contenir.
2809 Nous y recopions simplement la structure des portées que nous voulons.
2810 La musique pour orgue se présente généralement sous la forme de trois
2811 portées, une pour chaque main et une pour le pédalier. Les portées du
2812 manuel sont regroupées, nous utiliserons donc un @code{PianoStaff}. La
2813 première partie du manuel requiert deux voix et la seconde une seule.
2817 \new Staff = "ManuelUn" <<
2819 \ManuelUnVoixUnMusique
2822 \ManuelUnVoixDeuxMusique
2824 >> % fin du contexte de portée ManuelUn
2825 \new Staff = "ManuelDeux" <<
2829 >> % fin du contexte de portée ManuelDeux
2830 >> % fin du contexte PianoStaff
2833 Il nous faut ajouter à cela une portée pour le pédalier. Elle se place
2834 sous le système de piano, mais puisqu'elle doit rester synchrone avec
2835 lui, nous utilisons des doubles chevrons pour les regrouper.
2836 Négliger ceci nous renverrait une erreur, et personne n'est à l'abri de
2837 cette faute ! Pour preuve, il vous suffit de copier l'exemple
2838 complet en fin de chapitre, de supprimer ces @code{<<} et @code{>>}, et
2839 de le compiler, pour voir de quoi il retourne.
2842 << % Système pianistique et portée de pédalier sont synchrones
2844 \new Staff = "ManuelUn" <<
2846 \ManuelUnVoixUnMusique
2849 \ManuelUnVoixDeuxMusique
2851 >> % fin du contexte de portée ManuelUn
2852 \new Staff = "ManuelDeux" <<
2856 >> % fin du contexte de portée ManuelDeux
2857 >> % fin du contexte PianoStaff
2858 \new Staff = "PedalierOrgue" <<
2860 \PedalierOrgueMusique
2866 La construction en simultané -- @code{<< @dots{} >>} -- n'est pas
2867 strictement obligatoire pour les portées manuel deux et pédalier, qui ne
2868 contiennent chacune qu'une seule expression musicale ; mais cela ne
2869 mange pas de pain, et c'est une bonne habitude que de toujours encadrer
2870 par des doubles chevrons gauche/droite ce qui suit une commande
2871 @code{\new Staff} au cas où il y aurait plusieurs voix. Il en va
2872 autrement pour les contextes @code{Voice} : ils doivent être toujours
2873 suivis d'accolades -- @code{@{ @dots{} @}} -- au cas où vous auriez
2874 employé plusieurs variables qui doivent intervenir consécutivement.
2876 Ajoutons donc cette structure au bloc @code{\score}, tout en fignolant
2877 l'indentation. Nous en profitons pour ajouter les clefs appropriées,
2878 effectuer les réglages concernant les hampes et liaisons de la portée
2879 supérieure grâce à @code{\voiceOne} et @code{\voiceTwo}, et mettre en
2880 place la métrique et l'armure de chaque portée grâce à notre variable
2881 @code{\MetriqueArmure}.
2885 << % Système pianistique et portée de pédalier sont synchrones
2887 \new Staff = "ManuelUn" <<
2888 \ArmureMetrique % définition de l'armure et de la métrique
2892 \ManuelUnVoixUnMusique
2896 \ManuelUnVoixDeuxMusique
2898 >> % fin du contexte de la portée ManuelUn
2899 \new Staff = "ManuelDeux" <<
2905 >> % fin du contexte de la portée ManuelDeux
2906 >> % fin du contexte PianoStaff
2907 \new Staff = "PedalierOrgue" <<
2911 \PedalierOrgueMusique
2913 >> % fin du contexte de la portée PedalOrgan
2915 @} % fin du contexte Score
2918 @cindex espacement des portées
2919 @cindex portées, espacement
2921 Cette partition pour orgue est presque parfaite. Reste juste ce petit
2922 défaut qui ne se remarque pas lorsque l'on considère un seul système :
2923 la distance qui sépare la portée de pédalier de celle de la main gauche
2924 devrait être plus ou moins égale à celle qui sépare les deux mains. En
2925 fait, la distance entre les deux portées d'un @code{PianoStaff} ne
2926 saurait trop se dilater ; le pédalier devrait adopter le même
2929 @cindex sous-propriétés
2930 @cindex propriétés et sous-propriétés
2931 @cindex graphical objects
2932 @cindex objets graphiques
2935 La propension des portées à se dilater se contrôle à l'aide de la
2936 propriété @code{staff-staff-spacing}, attachée à @qq{l'objet graphique}
2937 @code{VerticalAxisGroup} -- la documentation de LilyPond utilise souvent
2938 l'abréviation @emph{grob} pour @emph{graphical object}. Pas de
2939 panique ! Tout ceci sera expliqué plus tard -- pour les curieux,
2940 jetez un œil au chapitre
2941 @ruser{Vue d'ensemble de la modification des propriétés}.
2942 Revenons à notre propos : nous voulons modifier uniquement la
2943 sous-propriété @code{stretchability}. Les impatients trouveront les
2944 valeurs par défaut de la propriété @code{staff-staff-spacing} dans le
2945 fichier @file{scm/define-grobs.scm}, en examinant la définition du
2946 @emph{grob} @code{VerticalAxisGroup}. La valeur que nous affecterons à
2947 @code{stretchability} est celle que contient la définition du contexte
2948 @code{PianoStaff} telle qu'elle apparaît dans le fichier
2949 @file{ly/engraver-init.ly}).
2953 << % Système pianistique et portée de pédalier sont synchrones
2955 \new Staff = "ManuelUn" <<
2956 \ArmureMetrique % définition de l'armure et de la métrique
2960 \ManuelUnVoixUnMusique
2964 \ManuelUnVoixDeuxMusique
2966 >> % fin du contexte de la portée ManuelUn
2967 \new Staff = "ManuelDeux" \with @{
2968 \override VerticalAxisGroup.staff-staff-spacing.stretchability = 5
2975 >> % fin du contexte de la portée ManuelDeux
2976 >> % fin du contexte PianoStaff
2977 \new Staff = "PedalierOrgue" <<
2981 \PedalierOrgueMusique
2983 >> % fin du contexte de la portée PedalOrgan
2985 @} % fin du contexte Score
2988 Nous en avons fini avec la structure. Toutes les partitions pour orgue
2989 auront cette structure, même si le nombre de voix peut changer. Tout ce
2990 qui nous reste à faire maintenant consiste à saisir la musique et à
2991 regrouper toutes les parties.
2993 @lilypond[quote,verbatim,ragged-right,addversion]
2995 title = "Jesu, meine Freude"
2996 composer = "J S Bach"
2998 keyTime = { \key c \minor \time 4/4 }
2999 ManualOneVoiceOneMusic = \relative g' {
3003 ManualOneVoiceTwoMusic = \relative c' {
3004 ees16 d ees8~ 16 f ees d c8 d~ d c~ |
3005 8 c4 b8 c8. g16 c b c d |
3007 ManualTwoMusic = \relative c' {
3008 c16 b c8~ 16 b c g a8 g~ 16 g aes ees |
3009 f16 ees f d g aes g f ees d ees8~ 16 f ees d |
3011 PedalOrganMusic = \relative c {
3012 r8 c16 d ees d ees8~ 16 a, b g c b c8 |
3013 r16 g ees f g f g8 c,2 |
3017 << % PianoStaff and Pedal Staff must be simultaneous
3019 \new Staff = "ManualOne" <<
3020 \keyTime % set key and time signature
3024 \ManualOneVoiceOneMusic
3028 \ManualOneVoiceTwoMusic
3030 >> % end ManualOne Staff context
3031 \new Staff = "ManualTwo" \with {
3032 \override VerticalAxisGroup.staff-staff-spacing.stretchability = 5
3039 >> % end ManualTwo Staff context
3040 >> % end PianoStaff context
3041 \new Staff = "PedalOrgan" <<
3047 >> % end PedalOrgan Staff context
3049 } % end Score context
3053 Glossaire musicologique :
3054 @rglosnamed{system,système}.
3057 @node Économie de saisie grâce aux identificateurs et fonctions
3058 @subsection Économie de saisie grâce aux identificateurs et fonctions
3059 @translationof Saving typing with variables and functions
3062 @cindex identificateurs
3064 Jusqu'à maintenant, vous avez vu ce type de code :
3066 @lilypond[quote,verbatim,ragged-right]
3067 hornNotes = \relative c'' { c4 b dis c }
3075 Vous comprendrez combien cela peut être utile pour écrire de la
3076 musique minimaliste :
3078 @lilypond[quote,verbatim,ragged-right]
3079 fragmentA = \relative c'' { a4 a8. b16 }
3080 fragmentB = \relative c'' { a8. gis16 ees4 }
3082 violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA }
3091 Néanmoins vous pouvez aussi utiliser ces identificateurs -- aussi connus
3092 sous le nom de variables, macros, ou commandes (définies par
3093 l'utilisateur) -- pour des retouches :
3095 @c TODO Avoid padtext - not needed with skylining
3096 @lilypond[quote,verbatim,ragged-right]
3097 dolce = \markup { \italic \bold dolce }
3099 padText = { \once \override TextScript.padding = #5.0 }
3101 \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p
3104 violin = \relative c'' {
3106 c4._\dolce b8 a8 g a b |
3108 c4.^"hi there!" d8 e' f g d |
3109 c,4.\fthenp b8 c4 c-. |
3117 \layout { ragged-right = ##t }
3121 Ces identificateurs sont évidemment utiles pour économiser de la
3122 frappe. Mais ils peuvent l'être même si vous ne les utilisez qu'une
3123 seule fois : ils réduisent la complexité. Regardons l'exemple
3124 précédent sans aucun identificateur. C'est beaucoup plus laborieux à
3125 lire, et particulièrement la dernière ligne.
3128 violin = \relative c'' @{
3130 c4._\markup @{ \italic \bold dolce @} b8 a8 g a b |
3131 \once \override TextScript.padding = #5.0
3132 c4.^"hi there!" d8 e' f g d |
3134 \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p
3141 Jusqu'ici nous avons vu des substitutions statiques : quand LilyPond
3142 rencontre @code{\padText}, il le remplace par le contenu que nous lui
3143 avons défini -- c'est-à-dire le contenu à droite de @code{padText=}.
3145 LilyPond gère également des substitutions non-statiques -- vous
3146 pouvez les voir comme des fonctions.
3148 @lilypond[quote,verbatim,ragged-right]
3150 #(define-music-function
3151 (parser location padding)
3154 \once \override TextScript.padding = #padding
3158 c4^"piu mosso" b a b
3160 c4^"piu mosso" b a b
3162 c4^"piu mosso" b a b
3166 Utiliser des identificateurs est aussi un bon moyen pour vous épargner
3167 du travail si la syntaxe de LilyPond change un jour -- voir
3168 @rprogram{Mise à jour avec convert-ly}. Si vous avez une seule
3169 définition, par exemple @code{\dolce}, pour tous vos fichiers (voir
3170 @ref{Feuilles de style}) et que la syntaxe change, alors vous n'aurez
3171 qu'à mettre à jour votre seule définition @code{\dolce}, au lieu de
3172 devoir modifier chaque fichier @file{.ly}.
3175 @node Conducteurs et parties
3176 @subsection Conducteurs et parties
3177 @translationof Scores and parts
3179 Dans la musique d'orchestre, toutes les notes sont imprimées deux fois.
3180 D'abord dans les parties séparées destinées aux musiciens, et ensuite
3181 dans le conducteur destiné au chef. Les variables sont là pour vous
3182 éviter un double travail. La musique n'est entrée qu'une seule fois, et
3183 stockée dans une variable, dont le contenu servira à imprimer à la fois
3184 la partie séparée et la partition d'orchestre.
3186 Il est judicieux de définir les notes dans un fichier séparé. Par
3187 exemple, supposons que le fichier @file{musique-Cor.ly} contienne la
3188 partie suivante pour un duo cor/@/basson.
3191 notesCor = \relative c @{
3193 r4 f8 a | cis4 f | e d |
3198 On établira alors une partie séparée en constituant un nouveau fichier :
3201 \include "musique-Cor.ly"
3204 instrument = "Cor en Fa"
3208 \transpose f c' \notesCor
3215 \include "musique-Cor.ly"
3219 sera substitué le contenu du fichier @file{musique-Cor.ly}, et de ce
3220 fait la variable @code{notesCor} se trouvera définie. La commande
3221 @code{\transpose f c'} indique que son argument @code{\notesCor} sera
3222 transposé à la quinte supérieure : le son réel @code{f} s'écrit
3223 @code{c'}, ce qui est la caractéristique d'un Cor en fa. La
3224 transposition est visible comme suit :
3226 @lilypond[quote,ragged-right]
3227 \transpose f c' \relative c {
3229 r4 f8 a | cis4 f | e d |
3233 Dans les pièces d'ensemble, il arrive souvent qu'une voix ne joue pas
3234 pendant plusieurs mesures. Un silence spécial, appelé silence
3235 multimesures, l'indique alors. On l'obtient par un @code{R} majuscule,
3236 suivi d'une durée : @code{1} pour une pause, @code{2} pour une
3237 demi-pause, etc. Cette durée peut être multipliée pour établir de plus
3238 longs silences. Par exemple, le silence suivant dure 3 mesures à 2/4.
3244 Dans une partie séparée, les silences multimesure sont compressés.
3245 Il faut pour cela définir la propriété @code{skipBars} à @qq{vrai} :
3248 \set Score.skipBars = ##t
3252 Cette commande assigne la valeur @qq{vrai} -- @emph{true} en anglais, et
3253 @code{#t} dans le langage Scheme -- à cette propriété dans le contexte
3254 @code{Score}. Si l'on ajoute dans la musique ci-dessus le silence
3255 multimesure et cette option, on obtient le résultat suivant :
3257 @lilypond[quote,ragged-right]
3258 \transpose f c' \relative c {
3260 \set Score.skipBars = ##t
3262 r4 f8 a | cis4 f | e d |
3266 Le conducteur rassemble toute la musique. Si l'on suppose que l'autre
3267 voix de notre duo se trouve dans le fichier @file{musique-Basson.ly} en
3268 tant que variable @code{notesBasson}, on établira un conducteur avec
3271 \include "musique-Basson.ly"
3272 \include "musique-Cor.ly"
3275 \new Staff \notesCor
3276 \new Staff \notesBasson
3283 @lilypond[quote,ragged-right]
3289 r4 f8 a | cis4 f | e4 d |
3294 r4 d,8 f | gis4 c | b4 bes |
3295 a8 e f4 | g4 d | gis4 f |