@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
-
@ignore
- Translation of GIT committish: 6d618ddf527c69dc7c5309f071b115df50566121
+ Translation of GIT committish: 952705bbbb000581a13836e6a733df04511e93c5
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.36"
+@c \version "2.16.0"
@c Translators: Valentin Villenave, Jean-Charles Malahieude
@c Translation checkers: John Mandereau
@funindex book
@funindex \score
@funindex score
+
@cindex book, livre, ouvrage
@cindex livre
@cindex score, partition
@end example
En d'autres termes, si le code n'est constitué que d'une expression
-musicale simple, LilyPond interprètera le fichier tout comme si cette
+musicale simple, LilyPond interprétera le fichier tout comme si cette
expression était incluse dans les commandes de notre premier exemple.
@cindex contextes implicites
@funindex layout
@funindex \midi
@funindex midi
+
@cindex header
@cindex en-tête
@cindex layout
@cindex partitions multiples
@cindex book, bloc implicite
@cindex implicite, bloc book
+
@funindex \book
@funindex book
(@emph{recueil} ou @emph{ouvrage}) n'est pas obligatoire -- elle sera
créée implicitement. Néanmoins, le recours à la commande @code{\book}
vous permettra d'obtenir des fichiers résultants distincts à partir
-d'un même fichier source @code{.ly} -- par exemple un fichier par pupitre.
+d'un même fichier source @file{.ly} -- par exemple un fichier par pupitre.
En résumé :
Dès que LilyPond rencontre un bloc @code{\book}, il crée un
-fichier distinct (@code{.pdf} par exemple). Dans le cas où il n'est pas
+fichier distinct (@file{.pdf} par exemple). Dans le cas où il n'est pas
mentionné explicitement, LilyPond regroupera l'intégralité du code dans
un bloc @code{\book}.
Tout bloc @code{\score} inclus dans un bloc @code{\book} constitue un
-fragment de musique.
+fragment de musique, par exemple un mouvement d'une symphonie.
@cindex layout, effets selon l'emplacement
@ruser{Plusieurs partitions dans un même ouvrage}.
@cindex variables
-@cindex identificateurs
+@cindex identifiants
Un autre raccourci pratique est la possibilité de définir
des variables, également appelées @qq{identificateurs} -- voir
@funindex \score
@funindex score
+
@cindex partition
@cindex bloc score, contenu
@cindex expression musicale composite
LilyPond correspond à une voix, au sens de voix d'une polyphonie plutôt
que de voix chantée -- ce pourrait être une partie de violon par
exemple --, et des paroles.
-
Nous avons également une partie de piano, qui contient deux
portées@tie{}: une pour la main droite, une autre pour la main gauche.
Il nous faudra d'ailleurs ajouter une clef de fa à cette dernière.
-
À ce point, on pourrait commencer à ajouter les notes. Dans les
accolades qui suivent @code{\new Voice = "chant"}, on pourrait
commencer à écrire
}
@end lilypond
-Quand on écrit, ou que l'on lit, une section @code{\score}, mieux vaut
-y aller lentement et soigneusement. Commencez par le niveau le plus
+Quand on écrit ou que l'on lit une section @code{\score}, mieux vaut
+y aller lentement et soigneusement. Commencez par le niveau le plus
large, puis travaillez sur chaque niveau plus détaillé. À ce propos,
une indentation stricte et propre est vraiment d'une aide
précieuse@tie{}: assurez-vous que chaque élément d'un même niveau a le
placer au-dessus de la portée @qq{principal} plutôt qu'en dessous, ce
qui est le comportement par défaut.
-Les ossia apparaissent souvent sans clef ni métrique, et dans une police
-plus petite. Ceci requiert des commandes dont nous n'avons pas encore
-parlé. Voir @ref{Taille des objets} et @ruser{Portées d'ossia}.
+
+@seealso
+Les ossias apparaissent souvent sans clef ni métrique, et dans une
+taille plus petite. Ceci requiert des commandes dont nous n'avons pas
+encore parlé. Voir @ref{Taille des objets} et @ruser{Portées d'ossia}.
@node Non-imbrication des crochets et liaisons
@item @code{< .. >}
@tab Délimite les notes d'un accord
@item @code{<< .. >>}
- @tab Délimitent des sections simultanées
+ @tab Délimite des sections simultanées
@item @code{( .. )}
@tab Marque le début et la fin d'une liaison
@item @code{\( .. \)}
peut débuter avant l'insertion d'une ligature manuelle et s'arrêter
avant la fin de la ligature@tie{}:
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
- { g8\( a b[ c b\) a] }
+@lilypond[quote,verbatim,ragged-right,relative=2]
+g8\( a b[ c b\) a] g4
@end lilypond
De manière générale, différents types de crochets, notamment s'ils
qui s'étendent sur un triolet, lui-même lié à un quintolet agrémenté
d'une liaison de phrasé se poursuivant (lignes 3 et 4).
-@lilypond[quote,verbatim,fragment,ragged-right]
-{
- r16[ g16 \times 2/3 {r16 e'8] }
- g16( a \times 2/3 {b d) e' }
- g8[( a \times 2/3 {b d') e'~]}
- \times 4/5 {e'32\( a b d' e'} a'4.\)
-}
+@lilypond[quote,verbatim,ragged-right,relative=1]
+r16[ g \times 2/3 { r16 e'8] }
+g,16( a \times 2/3 { b16 d) e }
+g,8[( a \times 2/3 { b8 d) e~] } |
+\times 4/5 { e32\( a, b d e } a4.\)
@end lilypond
Les chanteurs utilisent leur voix pour chanter@tie{}; il en va de même
pour LilyPond. En fait, la musique de chacun des instruments d'une
-partition est contenue dans des voix (@emph{Voices} en anglais) et qui
+partition est contenue dans des voix (@emph{Voices} en anglais), qui
se trouvent être le concept fondamental de LilyPond.
@menu
musique. S'il n'est pas déclaré explicitement, il sera créé
automatiquement comme nous l'avons vu au début de ce chapitre. Certains
instruments, le hautbois par exemple, ne peuvent jouer qu'une seule note
-à la fois. On dit en pareil cas qu'il s'agit de musique monophonique,
-et nous n'aurons alors besoin que d'une seule voix. Les intruments qui,
-comme le piano, peuvent émettre plusieurs sons en même temps, nécessitent
-de recourir à plusieurs voix pour gérer efficacement l'alignement des
-notes et rythmes différents.
+à la fois. Nous n'aurons besoin, pour ces instruments monodiques, que
+d'une seule voix. Les instruments qui, comme le piano, peuvent émettre
+plusieurs sons en même temps sont polyphoniques et nécessitent de
+recourir à plusieurs voix pour gérer efficacement l'alignement des notes
+et rythmes différents.
Si une voix unique peut tout à fait contenir plusieurs notes dans un
accord, à partir de quand aurons-nous vraiment besoin de plusieurs
voix@tie{}? Considérons déjà ces quatre accords@tie{}:
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
+@lilypond[quote,verbatim,ragged-right,relative=1]
\key g \major
<d g>4 <d fis> <d a'> <d g>
@end lilypond
doubles chevrons gauche/droite, @code{<<...>>}. Les fragments
devront être séparés par une double oblique inversée, @code{\\}, pour
les affecter à des voix séparées. Dans le cas contraire, les notes
-seraient toutes affectées à une même voix, ce qui pourait générer des
+seraient toutes affectées à une même voix, ce qui pourrait générer des
erreurs. Cette manière de procéder est tout à fait indiquée dans le cas
-d'une pièce ne comportant que quelques courts passages de polyphonie.
+d'une pièce homophonique ne comportant que quelques courts passages de
+polyphonie.
Voici comment éclater les accords en deux voix, avec la note de passage
et la liaison@tie{}:
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+@lilypond[quote,verbatim,ragged-right,relative=2]
\key g \major
-% Voice "1" Voice "2"
-<< { g4 fis8( g) a4 g } \\ { d4 d d d } >> |
+% Voice "1" Voice "2"
+<< { g4 fis8( g) a4 g } \\ { d4 d d d } >>
@end lilypond
Notez que les hampes de la seconde voix sont dirigées vers le bas.
mesure ne contient que quelques notes, il est plus judicieux de
carrément séparer chaque voix@tie{}:
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+@lilypond[quote,verbatim,ragged-right,relative=2]
\key d \minor
<< {
% Voice "1"
que de besoin.
Les contextes @code{Voice} portent les noms @code{"1"}, @code{"2"}, etc.
-Pour chacun de ces contextes, le positionnement et l'orientation des
-liaisons, hampes, nuances, etc. est définie automatiquement.
+Les premiers contextes définissent les voix @emph{extrêmes}, la plus
+haute au contexte @code{"1"}, le plus basse au contexte @code{"2"}. Les
+voix intermédiaires seront affectées aux contextes @code{"3"} et
+@code{"4"}. Pour chacun de ces contextes, le positionnement et
+l'orientation des liaisons, hampes, nuances, etc. est définie
+automatiquement.
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim]
\new Staff \relative c' {
% Main voice
c16 d e f
- % Voice "1" Voice "2" Voice "3"
- << { g4 f e } \\ { r8 e4 d c8 ~ } >> |
- << { d2 e2 } \\ { c8 b16 a b8 g ~ g2 } \\ { s4 b4 c2 } >> |
+ % Voice "1" Voice "2" Voice "3"
+ << { g4 f e } \\ { r8 e4 d c8~ } >> |
+ << { d2 e } \\ { c8 b16 a b8 g~ g2 } \\ { s4 b c2 } >> |
}
@end lilypond
appellerons @emph{construction simultanée}. Les liaisons, de
prolongation ou non, ne peuvent relier des notes que si elles
appartiennent à la même voix@tie{}; elles ne peuvent ni pénétrer une
-contruction simultanée, ni en sortir. Inversement, les voix parallèles
+construction simultanée, ni en sortir. Inversement, les voix parallèles
issues de constructions simultanées apparaissant sur une même portée
appartiennent à la même voix. Les autres propriétés liées au contexte
de voix s'appliquent tout au long des constructions simultanées.
\new Staff \relative c' {
% Main voice
c16 d e f
- << % Bar 1
+ << % Bar 1
{
\voiceOneStyle
g4 f e
\\
{
\voiceTwoStyle
- r8 e4 d c8 ~
+ r8 e4 d c8~
}
- >>
- << % Bar 2
+ >> |
+ << % Bar 2
% Voice 1 continues
- { d2 e2 }
+ { d2 e }
\\
% Voice 2 continues
- { c8 b16 a b8 g ~ g2 }
+ { c8 b16 a b8 g~ g2 }
\\
{
\voiceThreeStyle
- s4 b4 c2
+ s4 b c2
}
- >>
+ >> |
}
@end lilypond
@cindex mode relatif et polyphonie
La polyphonie ne modifie en rien la relation entre les notes au sein
-d'un bloc @w{@code{\relative @{ @}}}. Chaque note est calculée par
-rapport à celle qui la précède, ou bien par rapport à la première note
-de l'accord qui précède. Ainsi, dans
+d'un bloc @code{\relative}. Chaque note est calculée par rapport à
+celle qui la précède, ou bien par rapport à la première note de l'accord
+qui précède. Ainsi, dans
@example
\relative c' @{ noteA << < noteB noteC > \\ noteD >> noteE @}
complexe. Nous allons nous concentrer sur les deux premières mesures du
second des Deux nocturnes, opus 32 de Chopin. Cet exemple nous servira
à plusieurs reprises, y compris dans le chapitre suivant, pour illustrer
-certaines techniques de notation. Aussi, ne prétez pas trop d'attention
+certaines techniques de notation. Aussi, ne prêtez pas trop d'attention
à ce qui pour l'instant pourrait vous paraître vraiment mystérieux dans
le code, et intéressons-nous uniquement à ce qui concerne la musique et
les voix -- ce qui est plus compliqué sera décortiqué plus tard.
@lilypond[quote,ragged-right]
\new Staff \relative c'' {
\key aes \major
- << % Voice one
+ << % Voice one
{ c2 aes4. bes8 }
- \\ % Voice two
- { aes2 f4 fes }
- \\ % No voice three
- \\ % Voice four
+ \\ % Voice two
{
% Ignore these for now - they are explained in Ch 4
- \once \override NoteColumn #'force-hshift = #0
- <ees c>2
+ \once \override NoteColumn #'ignore-collision = ##t
+ <ees, c>2
\once \override NoteColumn #'force-hshift = #0.5
des2
}
+ \\ % No voice three
+ \\ % Voice four
+ {
+ \override NoteColumn #'force-hshift = #0
+ aes'2 f4 fes
+ }
>> |
<c ees aes c>1 |
}
\new Staff \relative c'' {
\key aes \major
<<
- { % Voice one
+ { % Voice one
\voiceOneStyle
c2 aes4. bes8
}
\\ % Voice two
{ \voiceTwoStyle
- aes2 f4 fes
+ % Ignore these for now - they are explained in Ch 4
+ \once \override NoteColumn #'ignore-collision = ##t
+ <ees, c>2
+ \once \override NoteColumn #'force-hshift = #0.5
+ des2
}
\\ % No Voice three (we want stems down)
\\ % Voice four
{ \voiceThreeStyle
- % Ignore these for now - they are explained in Ch 4
- \once \override NoteColumn #'force-hshift = #0
- <ees c>2
- \once \override NoteColumn #'force-hshift = #0.5
- des2
+ \override NoteColumn #'force-hshift = #0
+ aes'2 f4 fes
}
>> |
<c ees aes c>1 |
@code{<<@tie{}\\@tie{}>>} pour saisir la première mesure dans trois
voix@tie{}:
-@lilypond[quote,verbatim,fragment,ragged-right]
+@lilypond[quote,verbatim,ragged-right]
\new Staff \relative c'' {
\key aes \major
<<
- { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { <ees c>2 des2 }
- >>
- <c ees aes c>1
+ { c2 aes4. bes8 } \\ { <ees, c>2 des } \\ { aes'2 f4 fes }
+ >> |
+ <c ees aes c>1 |
}
@end lilypond
plaçant la musique dans la voix 4 grâce à un @code{\\}
supplémentaire@tie{}:
-@lilypond[quote,verbatim,fragment,ragged-right]
+@lilypond[quote,verbatim,ragged-right]
\new Staff \relative c'' {
\key aes \major
- << % Voice one
+ << % Voice one
{ c2 aes4. bes8 }
- \\ % Voice two
- { aes2 f4 fes }
- \\ % Omit Voice three
- \\ % Voice four
- { <ees c>2 des2 }
+ \\ % Voice two
+ { <ees, c>2 des }
+ \\ % Omit Voice three
+ \\ % Voice four
+ { aes'2 f4 fes }
>> |
<c ees aes c>1 |
}
@noindent
Cette manipulation nous permet de régler la direction des hampes, mais
-elle engendre un problème que l'on rencontre parfois avec de multiples
-voix, à savoir que les hampes d'une voix peuvent chevaucher les têtes de
-note des autres voix. En matière de mise en forme des notes, LilyPond
-tolère que des notes ou accords appartenant à deux voix se retrouvent
-dans le même empilement de notes (@emph{note column} en anglais) si tant
-est que ces hampes vont dans des directions opposées@tie{}; néanmoins les
-notes des troisième et quatrième voix seront décalées si nécessaire pour
-éviter que les têtes ne se chevauchent. Cela marche plutôt bien mais,
-dans notre exemple, les notes de la voix la plus basse ne sont vraiment
-pas correctement placées. LilyPond met à notre disposition plusieurs
+le positionnement horizontal des notes n'est pas satisfaisant. LilyPond
+décale les notes des voix intermédiaires lorsque leur tête ou leur hampe
+viendrait à chevaucher celles des voix extrêmes. Bien entendu, ce n'est
+pas souhaitable dans le cas d'une partition pour piano. Dans d'autres
+situations, les décalages que LilyPond applique peuvent ne pas éviter
+certaines collisions. LilyPond met à notre disposition plusieurs
moyens d'ajuster le positionnement horizontal des notes. Nous ne sommes
pas encore tout à fait prêts pour voir comment corriger cela, aussi nous
examinerons ce problème dans un autre chapitre (voir la propriété
@code{force-hshift} dans @ref{Correction des collisions d'objets}).
+@warning{Paroles et objets étendus (liaisons, soufflets etc.) ne peuvent
+passer d'une voix à l'autre.}
+
@seealso
Manuel de notation :
@cindex Voice, création de contextes
Les contextes @rinternals{Voice} peuvent être déclarés manuellement
-dans un bloc @code{<< >>} pour créer de la musique polyphonique, en
+dans un bloc @code{@w{<< >>}} pour créer de la musique polyphonique, en
utilisant @code{\voiceOne}, @dots{} jusqu'à @code{\voiceFour} pour
assigner des directions de hampes et un déplacement horizontal pour
chaque partie. Cette méthode apporte de la clarté pour des partitions
annotations, liaisons de prolongation ou de phrasé, et sur les nuances.
@lilypond[quote,ragged-right,verbatim]
-\relative c'{
+\relative c' {
% Default behavior or behavior after \oneVoice
- c d8 ~ d e4 ( f g a ) b-> c
+ c4 d8~ d e4( f | g4 a) b-> c |
}
@end lilypond
@lilypond[quote,ragged-right,verbatim]
-\relative c'{
+\relative c' {
\voiceOne
- c d8 ~ d e4 ( f g a ) b-> c
+ c4 d8~ d e4( f | g4 a) b-> c |
\oneVoice
- c, d8 ~ d e4 ( f g a ) b-> c
+ c,4 d8~ d e4( f | g4 a) b-> c |
}
@end lilypond
@lilypond[quote,ragged-right,verbatim]
-\relative c'{
+\relative c' {
\voiceTwo
- c d8 ~ d e4 ( f g a ) b-> c
+ c4 d8~ d e4( f | g4 a) b-> c |
\oneVoice
- c, d8 ~ d e4 ( f g a ) b-> c
+ c,4 d8~ d e4( f | g4 a) b-> c |
}
@end lilypond
Voyons à présent trois différentes façons d'exprimer un passage
-polyhonique, à partir d'un exemple de la section précédente. Chacune
+polyphonique, à partir d'un exemple de la section précédente. Chacune
d'elles aura ses avantages selon les circonstances.
Une expression séquentielle qui apparaît en premier dans un @code{<< >>}
@lilypond[quote,ragged-right,verbatim]
\new Staff \relative c' {
\voiceOneStyle
- % The following notes are monophonic
+ % The following notes are homophonic
c16^( d e f
% Start simultaneous section of three voices
<<
% Continue the main voice in parallel
- { g4 f e | d2 e2) }
+ { g4 f e | d2 e) | }
% Initiate second voice
\new Voice {
- % Set stems, etc, down
+ % Set stems, etc., down
\voiceTwo
- r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2
+ r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
}
% Initiate third voice
\new Voice {
% Set stems, etc, up
\voiceThree
- s2. | s4 b4 c2
+ s2. | s4 b c2 |
}
>>
}
@cindex imbrication d'expressions musicales
@cindex imbrication de constructions simultanées
-
@cindex voix temporaires
@cindex voix, imbrication
\new Staff \relative c' {
c16^( d e f
<<
- { g4 f e | d2 e2) }
+ { g4 f e | d2 e) | }
\new Voice {
\voiceTwo
- r8 e4 d c8 ~ |
+ r8 e4 d c8~ |
<<
- {c8 b16 a b8 g ~ g2}
+ { c8 b16 a b8 g~ g2 | }
\new Voice {
\voiceThree
- s4 b4 c2
+ s4 b c2 |
}
>>
}
@end lilypond
@subsubheading Empilement des notes
+@translationof Note columns
@cindex note column
@cindex empilement de notes
@funindex \lyricsto
@funindex lyricsto
@funindex Lyrics
+
@cindex Lyrics, création d'un contexte
@cindex paroles, affectation à une voix
paroles aux notes grâce à la commande @code{\lyricsto@{@}} et au nom
assigné à la voix en question.
-@lilypond[quote,verbatim,fragment]
+@lilypond[quote,verbatim]
<<
- \new Voice = "one" \relative c'' {
- \autoBeamOff
- \time 2/4
- c4 b8. a16 g4. f8 e4 d c2
+ \new Voice = "one" {
+ \relative c'' {
+ \autoBeamOff
+ \time 2/4
+ c4 b8. a16 | g4. f8 | e4 d | c2 |
+ }
}
\new Lyrics \lyricsto "one" {
- No more let sins and sor -- rows grow.
+ No more let | sins and | sor -- rows | grow. |
}
>>
@end lilypond
@cindex paroles et ligatures
@cindex ligatures et paroles
+
@funindex \autoBeamOff
@funindex autoBeamOff
@funindex ChoirStaff
@funindex \lyricmode
@funindex lyricmode
+
@cindex structure d'une partition vocale
@cindex chœur, partie de
Nous allons reprendre un extrait de Judas Maccabæus pour illustrer ce
que cette technique apporte en flexibilité. Nous commençons par
-utiliser des variables afin de séparer de la structure de la portée
-aussi bien la musique que les paroles. Nous ajoutons par la même
-occasion un crochet spécifique aux portées pour chœur
-(@code{ChoirStaff}). Quant aux blocs de paroles, nous les faisons
+utiliser des variables -- ou identificateurs -- afin de séparer de la
+structure de la portée aussi bien la musique que les paroles. Nous
+ajoutons par la même occasion un crochet spécifique aux portées pour
+chœur (@code{ChoirStaff}). Quant aux blocs de paroles, nous les faisons
précéder de la commande @code{\lyricmode} pour nous assurer qu'elles
seront interprétées comme telles, et non comme de la musique.
@lilypond[quote,verbatim]
-global = { \time 6/8 \partial 8 \key f \major}
+global = { \key f \major \time 6/8 \partial 8 }
+
SopOneMusic = \relative c'' {
- c8 | c([ bes)] a a([ g)] f | f'4. b, | c4.~ c4 }
-SopTwoMusic = \relative c' {
- r8 | r4. r4 c8 | a'([ g)] f f([ e)] d | e([ d)] c bes' }
+ c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ c4
+}
SopOneLyrics = \lyricmode {
- Let | flee -- cy flocks the | hills a -- dorn, __ }
+ Let | flee -- cy flocks the | hills a -- dorn, __
+}
+SopTwoMusic = \relative c' {
+ r8 | r4. r4 c8 | a'8([ g)] f f([ e)] d | e8([ d)] c bes'
+}
SopTwoLyrics = \lyricmode {
- Let | flee -- cy flocks the | hills a -- dorn, }
+ Let | flee -- cy flocks the | hills a -- dorn,
+}
\score {
\new ChoirStaff <<
@end lilypond
Voici donc la structure de base valable pour toute partition vocale. On
-peut y ajouter d'autres portées si besoin est, d'autres voix à
-chaque portée, plusieurs couplets aux paroles, et les variables
-contenant la musique peuvent même être stockées dans des fichiers
-indépendants dès lors que leur longueur devient conséquente.
+peut y ajouter d'autres portées si besoin est, d'autres voix à chaque
+portée, plusieurs couplets aux paroles, et les variables contenant la
+musique peuvent même être stockées dans des fichiers indépendants dès
+lors que leur longueur devient conséquente.
@cindex structure d'hymne
@cindex SATB, structure
pour les quatre voix. Vous remarquerez le recours aux variables afin de
séparer de la structure de portée aussi bien les notes que les paroles.
Vous noterez aussi une variable particulière, que nous avons appelée
-@qq{MetriqueArmure}, et qui contient plusieurs commandes que nous
+@qq{ArmureMetrique}, et qui contient plusieurs commandes que nous
utiliserons dans les deux portées. Dans de nombreux autres exemples,
elle s'appelle @qq{global}.
@lilypond[quote,verbatim]
-TimeKey = { \time 4/4 \partial 4 \key c \major}
-SopMusic = \relative c' { c4 | e4. e8 g4 g | a a g }
-AltoMusic = \relative c' { c4 | c4. c8 e4 e | f f e }
-TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
-BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
-VerseOne = \lyricmode {
- E -- | ter -- nal fa -- ther, | strong to save, }
-VerseTwo = \lyricmode {
- O | Christ, whose voice the | wa -- ters heard, }
-VerseThree = \lyricmode {
- O | Ho -- ly Spi -- rit, | who didst brood }
-VerseFour = \lyricmode {
- O | Tri -- ni -- ty of | love and pow'r }
+keyTime = { \key c \major \time 4/4 \partial 4 }
+
+SopMusic = \relative c' { c4 | e4. e8 g4 g | a4 a g }
+AltoMusic = \relative c' { c4 | c4. c8 e4 e | f4 f e }
+TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
+BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
+
+VerseOne =
+ \lyricmode { E -- | ter -- nal fa -- ther, | strong to save, }
+VerseTwo =
+ \lyricmode { O | Christ, whose voice the | wa -- ters heard, }
+VerseThree =
+ \lyricmode { O | Ho -- ly Spi -- rit, | who didst brood }
+VerseFour =
+ \lyricmode { O | Tri -- ni -- ty of | love and pow'r }
\score {
\new ChoirStaff <<
\new Staff <<
\clef "treble"
- \new Voice = "Sop" { \voiceOne \TimeKey \SopMusic }
+ \new Voice = "Sop" { \voiceOne \keyTime \SopMusic }
\new Voice = "Alto" { \voiceTwo \AltoMusic }
\new Lyrics \lyricsto "Sop" { \VerseOne }
\new Lyrics \lyricsto "Sop" { \VerseTwo }
>>
\new Staff <<
\clef "bass"
- \new Voice = "Tenor" { \voiceOne \TimeKey \TenorMusic }
- \new Voice = "Bass" { \voiceTwo \BassMusic }
- >>
- >>
-}
-@end lilypond
-
-@cindex couplet et refrain
-
-Nous allons terminer en voyant comment coder un couplet pour soliste
-suivi d'un refrain à deux voix sur deux portées. Les explications sont
-importantes, dans la mesure où les moyens mis en œuvre pour arriver à
-enchaîner le solo et la polyphonie dans une seule et même partition sont
-quelque peu tirés par les cheveux.
-
-Commençons par ouvrir un bloc @code{score} qui contiendra un
-@code{ChoirStaff}, puisque nous aimerions voir un crochet au début du
-système choral. Nous devrions avoir, après @code{\new ChoirStaff}, un
-double chevron gauche pour synchroniser les portées@tie{}; mais comme
-nous reportons le parallélisme après le solo, nous utilisons des
-accolades -- un double chevron ne serait cependant pas génant. À
-l'intérieur du @code{ChoirStaff}, nous voulons en premier la portée avec
-le couplet. Puisqu'elle englobe parallèlement des notes et des paroles,
-nous devons encadrer les @code{\new Voice} et @code{\new Lyrics} de
-doubles chevrons gauche/droite pour les faire démarrer de concert@tie{}:
-
-@lilypond[quote,verbatim,ragged-right]
-versenotes = \relative c'' {
- \clef "treble"
- \key g \major
- \time 3/4 g g g b b b
-}
-versewords = \lyricmode {
- One two three four five six
-}
-\score {
- \new ChoirStaff {
- \new Staff <<
- \new Voice = "verse" {
- \versenotes \break
- }
- \new Lyrics \lyricsto verse {
- \versewords
- }
- >>
- }
-}
-@end lilypond
-
-Voici la ligne du couplet réalisée.
-
-Nous poursuivons avec @code{refrainA}, sur la même portée, alors même
-qu'une deuxième portée s'amorce en parallèle pour contenir
-@code{refrainB}. Cette section parallèle doit s'enchaîner directement à
-la suite du @code{\break} de la voix contenant le couplet -- il s'agit
-bien de la @emph{même} voix. Voici cette section parallèle. On
-pourrait tout à fait ajouter encore d'autres portées ici, toujours de la
-même manière.
-
-@example
-<<
- \refrainnotesA
- \new Lyrics \lyricsto verse @{
- \refrainparolesA
- @}
- \new Staff <<
- \new Voice = "refrainB" @{
- \refrainnotesB
- @}
- \new Lyrics \lyricsto "refrainB" @{
- \refrainparolesB
- @}
- >>
->>
-@end example
-
-Et voici le résultat final, avec ses deux portées pour la partie
-chorale, et qui montre comment la section en parallèle s'enchaîne avec
-la voix du couplet@tie{}:
-
-@lilypond[quote,verbatim, ragged-right]
-versenotes = \relative c'' {
- \clef "treble"
- \key g \major
- \time 3/4 g g g b b b
-}
-refrainnotesA = \relative c'' {
- \time 2/4
- c c g g \bar "|."
-}
-refrainnotesB = \relative c {
- \clef "bass"
- \key g \major
- c e d d
-}
-versewords = \lyricmode {
- One two three four five six
-}
-refrainwordsA = \lyricmode {
- la la la la
-}
-refrainwordsB = \lyricmode {
- dum dum dum dum
-}
-\score {
- \new ChoirStaff {
- \new Staff <<
- \new Voice = "verse" {
- \versenotes \break
- <<
- \refrainnotesA
- \new Lyrics \lyricsto "verse" {
- \refrainwordsA
- }
- \new Staff <<
- \new Voice = "refrainB" {
- \refrainnotesB
- }
- \new Lyrics \lyricsto "refrainB" {
- \refrainwordsB
- }
- >>
- >>
- }
- \new Lyrics \lyricsto "verse" {
- \versewords
- }
- >>
- }
-}
-@end lilypond
-
-@cindex book, exemple d'utilisation
-@cindex recueil, exemple d'utilisation
-@funindex \book
-@funindex book
-
-Bien que ce que nous venons de voir constitue un exercice intéressant et
-fort utile pour comprendre comment s'articulent des blocs séquentiels et
-simultanés, nous aurions aussi pu coder notre exemple sous la forme de
-deux blocs @code{\score} au sein d'un bloc @code{\book} implicite@tie{}:
-
-@lilypond[quote,verbatim,ragged-right]
-versenotes = \relative c'' {
- \clef "treble"
- \key g \major
- \time 3/4 g g g b b b
-}
-refrainnotesA = \relative c'' {
- \time 2/4
- c c g g \bar "|."
-}
-refrainnotesB = \relative c {
- \clef "bass"
- \key g \major
- c e d d
-}
-versewords = \lyricmode {
- One two three four five six
-}
-refrainwordsA = \lyricmode {
- la la la la
-}
-refrainwordsB = \lyricmode {
- dum dum dum dum
-}
-\score {
- \new Staff <<
- \new Voice = "verse" {
- \versenotes
- }
- \new Lyrics \lyricsto "verse" {
- \versewords
- }
- >>
-}
-
-\score {
- \new ChoirStaff <<
- \new Staff <<
- \new Voice = "refrainA" {
- \refrainnotesA
- }
- \new Lyrics \lyricsto "refrainA" {
- \refrainwordsA
- }
- >>
- \new Staff <<
- \new Voice = "refrainB" {
- \refrainnotesB
- }
- \new Lyrics \lyricsto "refrainB" {
- \refrainwordsB
- }
+ \new Voice = "Tenor" { \voiceOne \keyTime \TenorMusic }
+ \new Voice = "Bass" { \voiceTwo \BassMusic }
>>
>>
}
@section Contextes et graveurs
@translationof Contexts and engravers
-Nous avons évoqué rapidement les contextes et graveurs dans les chapitres
-précédents@tie{}; examinons en détail ces concepts essentiels à la
-maîtrise de LilyPond.
+Nous avons évoqué rapidement les contextes et graveurs dans les
+chapitres précédents@tie{}; examinons en détail ces concepts essentiels
+à la maîtrise de LilyPond.
@menu
* Tout savoir sur les contextes::
notation. Par exemple, voici un fragment de partition, précédé du code
qui l'engendre@tie{}:
-@lilypond[quote,verbatim,relative=2,fragment]
-cis4 cis2. g4
+@lilypond[quote,verbatim,relative=2]
+cis4 cis2. | a4 a2. |
@end lilypond
Si le code est assez austère, dans la partition ont été ajoutés un
les créer explicitement pour être sûr d'obtenir toutes les portées
nécessaires, et dans le bon ordre. Enfin, pour des morceaux impliquant
une notation spéciale, modifier les contextes ou en créer de nouveaux
-devient extrêment utile.
+devient extrêmement utile.
En plus des contextes @code{Score}, @code{Staff} et @code{Voice} sont
disponibles d'autres contextes intermédiaires entre les niveaux
partition et portée, chargés de gérer certains regroupement, tels que
@code{PianoStaff} ou @code{ChoirStaff}. Vous disposez aussi d'autres
contextes de portée ou de voix alternatifs, ainsi que des contextes
-spécifiques pour les paroles, les percussions, les tablatures
-d'instruments frettés, la basse chiffrée, etc.
+spécifiques pour les paroles, les percussions, les diagrammes pour
+instruments frettés, la basse chiffrée, etc.
Le nom de chacun des contextes est formé d'un ou plusieurs mots aux
initiales en capitale et directement accolés les uns aux autres sans
@cindex contextes, création de
Il en va des contextes comme de toute hiérarchie@tie{}: il faut un
-sommet -- le contexte @code{Score} en l'occurence. La commande
+sommet -- le contexte @code{Score} en l'occurrence. La commande
@code{\score} est chargée de le créer, mais pour des partitions simples,
-il le sera automatiquement. Le bloc @code{score} contient donc une
+il le sera automatiquement. Le bloc @code{\score} contient donc une
expression musicale unique ainsi que la définition des supports à
produire -- @code{\layout} pour du visuel ou @code{\midi} pour de
l'acoustique.
interprète l'@var{expression-musicale} contenue dans ledit
contexte.
-@warning{La commande @code{\new Score} ne devrait jamais servir en début
-de partition, puisque le contexte premier que constitue @code{Score} est
-créé automatiquement par l'interprétation de l'@var{expression-musicale}
-contenue dans le bloc @code{\score}. Les adaptations affectant les
-propriétés des différents contextes et qui s'appliqueront à l'ensemble de
-la partition trouvent leur place au sein d'un bloc @code{\layout}, en
-suivant les préceptes énoncés au chapitre
-@ref{Modification des propriétés d'un contexte}.}
+@warning{La commande @bs{}@code{new Score} ne devrait jamais servir en
+début de partition, puisque le contexte premier que constitue
+@code{Score} est créé automatiquement par l'interprétation de
+l'@var{expression-musicale} contenue dans le bloc @code{\score}. Les
+adaptations affectant les propriétés des différents contextes et qui
+s'appliqueront à l'ensemble de la partition trouvent leur place au sein
+d'un bloc @bs{}@code{layout}, en suivant les préceptes énoncés au
+chapitre @ref{Modification des propriétés d'un contexte}.}
Nous avons déjà vu au cours des chapitres précédents de nombreux
exemples où des contextes @code{Staff} ou @code{Voice} étaient créés au
marque de fermeture. Bien que ceci ne soit pas obligatoire, nous vous
invitons à adopter cette pratique qui vous évitera nombre d'erreurs
@qq{accolades non appariées}. La structure de la musique apparaît ainsi
-au premier coup d'œil, et les défauts de parité plus facilement
+au premier coup d'œil, et les défauts de parité sont plus facilement
repérables. Vous remarquerez que la portée MG est créée à l'aide d'un
double chevron gauche -- nécessaire pour gérer ses deux voix -- alors
que la portée MD ne contient qu'une seule expression musicale -- il n'y
produit par un graveur (@emph{engraver} en anglais). Ainsi, il y en a
un qui imprime les portées, un autre les têtes de note, un autre les
hampes, un autre encore pour les ligatures, etc. LilyPond dispose de
-plus de 120 graveurs@tie{}! La plupart des partitions ne requièrent de
+plus de 120 graveurs@tie{}! La plupart des partitions ne requièrent de
s'intéresser qu'à quelques-uns seulement, et pour des partitions
simples, vous n'aurez même pas à vous en préoccuper.
@item Accidental_engraver
@tab Crée les altérations, y compris de précaution, accidentelles ou suggérées
@item Beam_engraver
- @tab Grave les ligatures
+ @tab Grave les ligatures (@emph{beams})
@item Clef_engraver
@tab Grave les clefs
@item Completion_heads_engraver
@tab Divise les notes qui dépassent de la mesure
-@item Dynamic_engraver
+@item New_dynamic_engraver
@tab Crée les soufflets et textes de nuance
@item Forbid_line_break_engraver
@tab Empêche un saut de ligne si un élément musical est toujours actif
@cindex contexte, propriétés
@cindex propriétés d'un contexte, modification
@cindex modification des propriétés d'un contexte
+
@funindex \set
@funindex set
@funindex \unset
@end multitable
@noindent
-où un boléen correspond soit à vrai (@code{#t} pour @emph{True} en
+où un booléen correspond soit à vrai (@code{#t} pour @emph{True} en
anglais) ou faux (@code{#f} pour @emph{False} en anglais), un entier est
un nombre entier positif, un réel est un nombre décimal positif ou
négatif, et texte correspond à une suite de caractères encadrée par des
apostrophes doubles. Attention à la présence des signes dièse
(@code{#}) dans deux cas particuliers@tie{}: ils sont partie intégrante
-des valeurs boléennes et précèdent les @code{t} ou @code{f}, mais
+des valeurs booléennes et précèdent les @code{t} ou @code{f}, mais
doivent aussi précéder @emph{valeur} dans le libellé de la commande
-@code{\set}. Il faudra donc, dans le cas d'une valeur boléenne, ne pas
+@code{\set}. Il faudra donc, dans le cas d'une valeur booléenne, ne pas
oublier de saisir deux signes dièse -- par exemple @code{##t}.
@cindex propriétés et contextes
d'erreur ne sera ni émis ni enregistré.
De la même manière, une faute d'orthographe dans le nom de la propriété
-ne génèrera aucun message d'erreur et l'action escomptée ne se produira
+ne générera aucun message d'erreur et l'action escomptée ne se produira
pas. Vous pourriez déterminer par la commande @code{\set} n'importe
quelle @qq{propriété}, même fictive, à partir de n'importe quel nom et
dans n'importe lequel des contextes disponibles. Mais tant que ce nom
les souligne différemment s'ils sont inconnus, comme ConTEXT. Dans le
cas où votre éditeur ne dispose pas de ces fonctionnalités, nous vous
recommandons de vérifier le nom des propriétés que vous manipulez dans
-le Manuel de références internes -- voir
+la Référence des propriétés internes -- voir
@rinternals{Tunable context properties}, ou @rinternals{Contexts}.
La propriété @code{instrumentName} ne sera prise en compte que si elle
@lilypond[quote,verbatim,ragged-right]
<<
\new Staff \relative c'' {
- ais4 aes
- }
+ aeses2 aes
+ }
\new Staff \relative c'' {
\set Staff.extraNatural = ##f
- ais4 aes
- }
+ aeses2 aes
+ }
>>
@end lilypond
@lilypond[quote,verbatim,ragged-right]
<<
\new Staff \relative c'' {
- ais4 aes
- }
+ aeses2 aes
+ }
\new Staff \relative c'' {
\set Score.extraNatural = ##f
- ais4 aes
- }
+ aeses2 aes
+ }
>>
@end lilypond
toujours par rapport à la valeur par défaut, non par rapport à la
dernière valeur définie.
-@lilypond[quote,verbatim,ragged-right,relative=1,fragment]
-c4
+@lilypond[quote,verbatim,ragged-right,relative=1]
+c4 d
% make note heads smaller
\set fontSize = #-4
-d e
+e4 f |
% make note heads larger
\set fontSize = #2.5
-f g
+g4 a
% return to default size
\unset fontSize
-a b
+b4 c |
@end lilypond
Nous venons de voir comment déterminer la valeur de différents types de
être précédés d'un signe dièse (@code{#}) et les valeurs vrai ou faux de
deux signes dièse -- respectivement @code{##t} et @code{##f} --. Une
valeur textuelle doit être encadrée de guillemets anglais,
-@code{``@dots{ }''}, bien que, comme nous le constaterons plus tard, la
+@code{"@dots{ }"}, bien que, comme nous le constaterons plus tard, la
commande @code{\markup} permet aussi de spécifier du texte.
-@unnumberedsubsubsec Définition des propriétés de contexte avec @code{\with}
+@subsubheading Définition des propriétés de contexte avec @code{\with}
+@translationof Setting context properties with @code{\with}
@funindex \with
@funindex with
+
@cindex propriétés d'un contexte, définition avec \with
Les propriétés d'un contexte peuvent aussi être réglées lors de la
@lilypond[quote,verbatim,ragged-right]
<<
\new Staff
- \relative c'' {
- gis ges aes ais
- }
- \new Staff \with { extraNatural = ##f }
- \relative c'' {
- gis ges aes ais
+ \relative c'' {
+ gisis4 gis aeses aes
+ }
+ \new Staff \with { extraNatural = ##f } {
+ \relative c'' {
+ gisis4 gis aeses aes
+ }
}
>>
@end lilypond
Les propriétés réglées de cette manière peuvent néanmoins être modifiées
de façon dynamique grâce à @code{\set}@tie{}; un @code{\unset} les
-ramènera à leur valeur par défaut.
+ramènera à leur valeur initialisée par @code{\with}.
@cindex fontSize, valeur par défaut et réglage
commande @code{\set}, mais la commande @code{\unset fontSize} fera
revenir à la nouvelle valeur par défaut.
-@unnumberedsubsubsec Définition des propriétés de contexte avec @code{\context}
+@subsubheading Définition des propriétés de contexte avec @code{\context}
+@translationof Setting context properties with @code{\context}
@cindex propriétés d'un contexte, définition avec \context
+
@funindex \context
@funindex context
\score {
\new Staff {
\relative c'' {
- cis4 e d ces
+ cisis4 e d cis
}
}
\layout {
@end lilypond
Dans le cas où ces ajustements de propriété doivent affecter
-toutes les portées de la partition, nous utiliserons alors
-l'instruction @code{\new Score}, comme ici@tie{}:
+toutes les portées de la partition, nous utiliserons alors@tie{}:
-@lilypond[quote,verbatim,ragged-right]
+@lilypond[quote,verbatim]
\score {
- \new Score \with { extraNatural = ##f } <<
+ <<
\new Staff {
\relative c'' {
- gis ges aes ais
+ gisis4 gis aeses aes
}
}
\new Staff {
\relative c'' {
- gis ges aes ais
+ gisis4 gis aeses aes
}
}
>>
+ \layout {
+ \context {
+ \Score extraNatural = ##f
+ }
+ }
}
@end lilypond
@seealso
Manuel de notation :
@ruser{Modification des réglages par défaut d'un contexte},
-@c uncomment when backslash-node-name issue is resolved -pm
-@c @ruser{La commande de fixation (set)}.
+@ruser{La commande de fixation (set)}.
Référence des propriétés internes :
@rinternals{Contexts},
pratique est dans quelques cas fort utile.
@subsubheading Modification d'un seul contexte
+@translationof Changing a single context
Nous utilisons, pour supprimer un graveur d'un contexte, la commande
-@code{\with} dès la création dudit contexte, comme nous l'avons vu dans
+@code{\with} dès la création du-dit contexte, comme nous l'avons vu dans
la section précédente.
Illustrons notre propos en reprenant un exemple du chapitre précédent,
\remove Staff_symbol_engraver
}
\relative c' {
- c4
+ c4 d
\set fontSize = #-4 % make note heads smaller
- d e
+ e4 f |
\set fontSize = #2.5 % make note heads larger
- f g
+ g4 a
\unset fontSize % return to default size
- a b
+ b4 c |
}
@end lilypond
\new Staff <<
\new Voice \with {
\consists Ambitus_engraver
+ } {
+ \relative c'' {
+ \voiceOne
+ c4 a b g
+ }
}
- \relative c'' {
- \voiceOne
- c a b g
- }
- \new Voice
- \relative c' {
- \voiceTwo
- c e d f
+ \new Voice {
+ \relative c' {
+ \voiceTwo
+ c4 e d f
+ }
}
>>
@end lilypond
@lilypond[quote,verbatim,ragged-right]
\new Staff \with {
- \consists Ambitus_engraver
- }
- <<
- \new Voice
- \relative c'' {
- \voiceOne
- c a b g
+ \consists Ambitus_engraver
+}
+<<
+ \new Voice {
+ \relative c'' {
+ \voiceOne
+ c4 a b g
+ }
}
- \new Voice
- \relative c' {
- \voiceTwo
- c e d f
+ \new Voice {
+ \relative c' {
+ \voiceTwo
+ c4 e d f
+ }
}
>>
@end lilypond
@subsubheading Modification de tous les contextes d'un même type
+@translationof Changing all contexts of the same type
@funindex \layout
@funindex layout
@lilypond[quote,verbatim,ragged-right]
\score {
<<
- \new Staff <<
- \relative c'' { c a b g }
- >>
- \new Staff <<
- \relative c' { c a b g }
- >>
- \new Staff <<
+ \new Staff {
+ \relative c'' {
+ c4 a b g
+ }
+ }
+ \new Staff {
+ \relative c' {
+ c4 a b g
+ }
+ }
+ \new Staff {
\clef "G_8"
- \relative c' { c a b g }
- >>
- \new Staff <<
+ \relative c' {
+ c4 a b g
+ }
+ }
+ \new Staff {
\clef "bass"
- \relative c { c a b g }
- >>
+ \relative c {
+ c4 a b g
+ }
+ }
>>
\layout {
\context {
d'un type particulier si vous insérez les commandes @code{\set} dans un
bloc @code{\context}.
-
@seealso
Manuel de notation :
@ruser{Modification des greffons de contexte},
@ruser{Modification des réglages par défaut d'un contexte}.
+@knownissues
+Dans la mesure où les @code{Stem_engraver} et @code{Beam_engraver}
+rattachent à des têtes de note les objets qu'ils créent, désactiver le
+@code{Note_heads_engraver} entraîne l'absence de hampe et de ligature.
+
@node Extension des modèles
@section Extension des modèles
@example
\version @w{"@version{}"}
+
melodie = \relative c' @{
- \clef treble
+ \clef "treble"
\key c \major
\time 4/4
-
a4 b c d
@}
@example
\version @w{"@version{}"}
+
melodie = \relative c' @{
- \clef treble
+ \clef "treble"
\key c \major
\time 4/4
-
a4 b c d
@}
\score @{
-\new Staff \melodie
-\layout @{ @}
-\midi @{ @}
+ \new Staff \melodie
+ \layout @{ @}
+ \midi @{ @}
@}
@end example
@example
\version @w{"@version{}"}
+
sopranoMusique = \relative c' @{
- \clef treble
+ \clef "treble"
\key c \major
\time 4/4
-
a4 b c d
@}
@}
violoncelleMusique = \relative c @{
- \clef bass
+ \clef "bass"
\key c \major
\time 4/4
-
d4 g fis8 e d4
@}
@lilypond[quote,verbatim,ragged-right,addversion]
sopranoMusic = \relative c' {
- \clef treble
+ \clef "treble"
\key c \major
\time 4/4
a4 b c d
}
celloMusic = \relative c {
- \clef bass
+ \clef "bass"
\key c \major
\time 4/4
d4 g fis8 e d4
@c The following should appear as music without code
@lilypond[quote,ragged-right]
global = { \key d \major \time 4/4 }
+
sopranoMusic = \relative c'' {
\clef "treble"
r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
}
sopranoWords = \lyricmode {
- Wor -- thy is the lamb that was slain
+ Wor -- thy | is the lamb | that was slain |
}
+
altoMusic = \relative a' {
\clef "treble"
r4 a2 a4 | fis4. fis8 a2 | g4 fis e2 |
}
altoWords = \sopranoWords
+
tenorMusic = \relative c' {
\clef "G_8"
r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 |
}
tenorWords = \sopranoWords
+
bassMusic = \relative c' {
\clef "bass"
r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 |
}
bassWords = \sopranoWords
+
upper = \relative a' {
\clef "treble"
\global
<d fis d'>4. <d fis d'>8 <a d a'>2 |
<g cis g'>4 <a d fis> <a cis e>2 |
}
+
lower = \relative c, {
\clef "bass"
\global
\new ChoirStaff <<
\new Staff = "sopranos" <<
\set Staff.instrumentName = #"Soprano"
- \new Voice = "sopranos" { \global \sopranoMusic }
+ \new Voice = "sopranos" {
+ \global
+ \sopranoMusic
+ }
>>
- \new Lyrics \lyricsto "sopranos" { \sopranoWords }
+ \new Lyrics \lyricsto "sopranos" {
+ \sopranoWords
+ }
\new Staff = "altos" <<
\set Staff.instrumentName = #"Alto"
- \new Voice = "altos" { \global \altoMusic }
+ \new Voice = "altos" {
+ \global
+ \altoMusic
+ }
>>
\new Lyrics \lyricsto "altos" { \altoWords }
\new Staff = "tenors" <<
\set Staff.instrumentName = #"Tenor"
- \new Voice = "tenors" { \global \tenorMusic }
+ \new Voice = "tenors" {
+ \global
+ \tenorMusic
+ }
>>
\new Lyrics \lyricsto "tenors" { \tenorWords }
\new Staff = "basses" <<
\set Staff.instrumentName = #"Bass"
- \new Voice = "basses" { \global \bassMusic }
+ \new Voice = "basses" {
+ \global
+ \bassMusic
+ }
>>
- \new Lyrics \lyricsto "basses" { \bassWords }
+ \new Lyrics \lyricsto "basses" {
+ \bassWords
+ }
>> % end ChoirStaff
-
\new PianoStaff <<
\set PianoStaff.instrumentName = #"Piano"
\new Staff = "upper" \upper
ce qui est la position par défaut@tie{}; il nous faudra donc éliminer
toutes les commandes @code{\voiceXXX}. Les ténors auront besoin d'une
clé spécifique. Enfin, nous n'avons pas encore abordé la façon dont les
-paroles sont présentées dans le modèle@tie{}; nous procèderons donc
+paroles sont présentées dans le modèle@tie{}; nous procéderons donc
comme nous en avons l'habitude. Il faudra aussi ajouter un nom à chaque
portée.
Une fois tout ceci accompli, voici notre @code{ChoirStaff}@tie{}:
@example
- \new ChoirStaff <<
- \new Staff = "sopranos" <<
- \set Staff.instrumentName = #"Soprano"
- \new Voice = "sopranos" @{ \global \sopranoMusique @}
- >>
- \new Lyrics \lyricsto "sopranos" @{ \sopranoParoles @}
- \new Staff = "altos" <<
- \set Staff.instrumentName = #"Alto"
- \new Voice = "altos" @{ \global \altoMusique @}
- >>
- \new Lyrics \lyricsto "altos" @{ \altoParoles @}
- \new Staff = "tenors" <<
- \set Staff.instrumentName = #"Tenor"
- \new Voice = "tenors" @{ \global \tenorMusique @}
- >>
- \new Lyrics \lyricsto "tenors" @{ \tenorParoless @}
- \new Staff = "basses" <<
- \set Staff.instrumentName = #"Bass"
- \new Voice = "basses" @{ \global \basseMusique @}
- >>
- \new Lyrics \lyricsto "basses" @{ \basseParoles @}
- >> % fin du ChoirStaff
+\new ChoirStaff <<
+ \new Staff = "sopranos" <<
+ \set Staff.instrumentName = #"Soprano"
+ \new Voice = "sopranos" @{
+ \global
+ \sopranoMusique
+ @}
+ >>
+ \new Lyrics \lyricsto "sopranos" @{
+ \sopranoParoles
+ @}
+ \new Staff = "altos" <<
+ \set Staff.instrumentName = #"Alto"
+ \new Voice = "altos" @{
+ \global
+ \altoMusique
+ @}
+ >>
+ \new Lyrics \lyricsto "altos" @{
+ \altoParoles
+ @}
+ \new Staff = "tenors" <<
+ \set Staff.instrumentName = #"Tenor"
+ \new Voice = "tenors" @{
+ \global
+ \tenorMusique
+ @}
+ >>
+ \new Lyrics \lyricsto "tenors" @{
+ \tenorParoles
+ @}
+ \new Staff = "basses" <<
+ \set Staff.instrumentName = #"Bass"
+ \new Voice = "basses" @{
+ \global
+ \bassMusique
+ @}
+ >>
+ \new Lyrics \lyricsto "basses" @{
+ \bassParoles
+ @}
+>> % fin du ChoirStaff
@end example
Il nous faut maintenant nous occuper de la partie de piano. Nous allons
<< % combine ChoirStaff et PianoStaff l'un au-dessus de l'autre
\new ChoirStaff <<
\new Staff = "sopranos" <<
- \new Voice = "sopranos" @{ \global \sopranoMusique @}
+ \new Voice = "sopranos" @{
+ \global
+ \sopranoMusique
+ @}
>>
- \new Lyrics \lyricsto "sopranos" @{ \sopranoParoless @}
+ \new Lyrics \lyricsto "sopranos" @{
+ \sopranoParoles
+ @}
\new Staff = "altos" <<
- \new Voice = "altos" @{ \global \altoMusique @}
+ \new Voice = "altos" @{
+ \global
+ \altoMusique
+ @}
>>
- \new Lyrics \lyricsto "altos" @{ \altoParoles @}
+ \new Lyrics \lyricsto "altos" @{
+ \altoParoles
+ @}
\new Staff = "tenors" <<
- \clef "G_8" % clef spécifique
- \new Voice = "tenors" @{ \global \tenorMusique @}
+ \clef "G_8" % tenor clef
+ \new Voice = "tenors" @{
+ \global
+ \tenorMusique
+ @}
>>
- \new Lyrics \lyricsto "tenors" @{ \tenorParoles @}
+ \new Lyrics \lyricsto "tenors" @{
+ \tenorParoles
+ @}
\new Staff = "basses" <<
\clef "bass"
- \new Voice = "basses" @{ \global \bassesMusique @}
+ \new Voice = "basses" @{
+ \global
+ \bassMusique
+ @}
>>
- \new Lyrics \lyricsto "basses" @{ \bassesParoles @}
+ \new Lyrics \lyricsto "basses" @{
+ \bassParoles
+ @}
>> % fin du ChoirStaff
\new PianoStaff <<
r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
}
sopranoWords = \lyricmode {
- Wor -- thy is the lamb that was slain
+ Wor -- thy | is the lamb | that was slain |
}
altoMusic = \relative a' {
\clef "treble"
\new ChoirStaff <<
\new Staff = "sopranos" <<
\set Staff.instrumentName = #"Soprano"
- \new Voice = "sopranos" { \global \sopranoMusic }
+ \new Voice = "sopranos" {
+ \global
+ \sopranoMusic
+ }
>>
- \new Lyrics \lyricsto "sopranos" { \sopranoWords }
+ \new Lyrics \lyricsto "sopranos" {
+ \sopranoWords
+ }
\new Staff = "altos" <<
\set Staff.instrumentName = #"Alto"
- \new Voice = "altos" { \global \altoMusic }
+ \new Voice = "altos" {
+ \global
+ \altoMusic
+ }
>>
- \new Lyrics \lyricsto "altos" { \altoWords }
+ \new Lyrics \lyricsto "altos" {
+ \altoWords
+ }
\new Staff = "tenors" <<
\set Staff.instrumentName = #"Tenor"
- \new Voice = "tenors" { \global \tenorMusic }
+ \new Voice = "tenors" {
+ \global
+ \tenorMusic
+ }
>>
- \new Lyrics \lyricsto "tenors" { \tenorWords }
+ \new Lyrics \lyricsto "tenors" {
+ \tenorWords
+ }
\new Staff = "basses" <<
\set Staff.instrumentName = #"Bass"
- \new Voice = "basses" { \global \bassMusic }
+ \new Voice = "basses" {
+ \global
+ \bassMusic
+ }
>>
- \new Lyrics \lyricsto "basses" { \bassWords }
+ \new Lyrics \lyricsto "basses" {
+ \bassWords
+ }
>> % end ChoirStaff
\new PianoStaff <<
@cindex squelettes, création
Après avoir acquis une certaine dextérité dans l'écriture de code
-LilyPond, vous devez vous sentir suffisament prêt à vous lancer dans
+LilyPond, vous devez vous sentir suffisamment prêt à vous lancer dans
la création d'une partition à partir de zéro, autrement dit en ne
partant pas d'un exemple. Vous pourrez ainsi vous construire vos
propres patrons selon le type de musique que vous affectionnez plus
title = "Jesu, meine Freude"
composer = "J S Bach"
@}
-MetriqueArmure = @{ \time 4/4 \key c \minor @}
-ManuelUnVoixUnMusique = @{s1@}
-ManuelUnVoixDeuxMusique = @{s1@}
-ManuelDeuxMusique = @{s1@}
-PedalierOrgueMusique = @{s1@}
+ArmureMetrique = @{ \key c \minor \time 4/4 @}
+ManuelUnVoixUnMusique = @{ s1 @}
+ManuelUnVoixDeuxMusique = @{ s1 @}
+ManuelDeuxMusique = @{ s1 @}
+PedalierOrgueMusique = @{ s1 @}
\score @{
@}
première partie du manuel requiert deux voix et la seconde une seule.
@example
- \new PianoStaff <<
- \new Staff = "ManuelUn" <<
- \new Voice @{ \ManuelUnVoixUnMusique @}
- \new Voice @{ \ManuelUnVoixDeuxMusique @}
- >> % fin du contexte de portée ManuelUn
- \new Staff = "ManuelDeux" <<
- \new Voice @{ \ManuelDeuxMusique @}
- >> % fin du contexte de portée ManuelDeux
- >> % fin du contexte PianoStaff
+\new PianoStaff <<
+ \new Staff = "ManuelUn" <<
+ \new Voice @{
+ \ManuelUnVoixUnMusique
+ @}
+ \new Voice @{
+ \ManuelUnVoixDeuxMusique
+ @}
+ >> % fin du contexte de portée ManuelUn
+ \new Staff = "ManuelDeux" <<
+ \new Voice @{
+ \ManuelDeuxMusique
+ @}
+ >> % fin du contexte de portée ManuelDeux
+>> % fin du contexte PianoStaff
@end example
Il nous faut ajouter à cela une portée pour le pédalier. Elle se place
<< % Système pianistique et portée de pédalier sont synchrones
\new PianoStaff <<
\new Staff = "ManuelUn" <<
- \new Voice @{ \ManuelUnVoixUnMusique @}
- \new Voice @{ \ManuelUnVoixDeuxMusique @}
+ \new Voice @{
+ \ManuelUnVoixUnMusique
+ @}
+ \new Voice @{
+ \ManuelUnVoixDeuxMusique
+ @}
>> % fin du contexte de portée ManuelUn
\new Staff = "ManualDeux" <<
- \new Voice @{ \ManuelDeuxMusique @}
+ \new Voice @{
+ \ManuelDeuxMusique
+ @}
>> % fin du contexte de portée ManuelDeux
>> % fin du contexte PianoStaff
\new Staff = "PedalierOrgue" <<
- \new Voice @{ \PedalierOrgueMusique @}
+ \new Voice @{
+ \PedalierOrgueMusique
+ @}
>>
>>
@end example
<< % Système pianistique et portée de pédalier sont synchrones
\new PianoStaff <<
\new Staff = "ManuelUn" <<
- \TimeKey % définition de la métrique et de l'armure
+ \ArmureMetrique % définition de l'armure et de la métrique
\clef "treble"
- \new Voice @{ \voiceOne \ManuelUnVoixUnMusique @}
- \new Voice @{ \voiceTwo \ManuelUnVoixDeuxMusique @}
+ \new Voice @{
+ \voiceOne
+ \ManuelUnVoixUnMusique
+ @}
+ \new Voice @{
+ \voiceTwo
+ \ManuelUnVoixDeuxMusique
+ @}
>> % fin du contexte de la portée ManuelUn
\new Staff = "ManuelDeux" <<
- \TimeKey
+ \ArmureMetrique
+ \clef "bass"
+ \new Voice @{
+ \ManuelDeuxMusique
+ @}
+ >> % fin du contexte de la portée ManuelDeux
+ >> % fin du contexte PianoStaff
+ \new Staff = "PedalierOrgue" <<
+ \ArmureMetrique
+ \clef "bass"
+ \new Voice @{
+ \PedalierOrgueMusique
+ @}
+ >> % fin du contexte de la portée PedalOrgan
+ >>
+@} % fin du contexte Score
+@end example
+
+@cindex espacement des portées
+@cindex portées, espacement
+
+Cette partition pour orgue est presque parfaite. Reste juste ce petit
+défaut qui ne se remarque pas lorsque l'on considère un seul
+système@tie{}: la distance qui sépare la portée de pédalier de celle de
+la main gauche devrait être plus ou moins égale à celle qui sépare les
+deux mains. En fait, la distance entre les deux portées d'un
+@code{PianoStaff} ne saurait trop se dilater@tie{}; le pédalier devrait
+adopter le même comportement.
+
+@cindex sous-propriétés
+@cindex propriétés et sous-propriétés
+@cindex graphical objects
+@cindex objets graphiques
+@cindex grobs
+
+La propension des portées à se dilater se contrôle à l'aide de la
+propriété @code{staff-staff-spacing}, attachée à @qq{l'objet graphique}
+@code{VerticalAxisGroup} -- la documentation de LilyPond utilise souvent
+l'abréviation @emph{grob} pour @emph{graphical object}. Pas de
+panique@tie{}! Tout ceci sera expliqué plus tard -- pour les curieux,
+jetez un œil au chapitre
+@ruser{Vue d'ensemble de la modification des propriétés}.
+Revenons à notre propos@tie{}: nous voulons modifier uniquement la
+sous-propriété @code{stretchability}. Les impatients trouveront les
+valeurs par défaut de la propriété @code{staff-staff-spacing} dans le
+fichier @file{scm/define-grobs.scm}, en examinant la définition du
+@emph{grob} @code{VerticalAxisGroup}. La valeur que nous affecterons à
+@code{stretchability} est celle que contient la définition du contexte
+@code{PianoStaff} telle qu'elle apparaît dans le fichier
+@file{ly/engraver-init.ly}).
+
+@example
+\score @{
+ << % Système pianistique et portée de pédalier sont synchrones
+ \new PianoStaff <<
+ \new Staff = "ManuelUn" <<
+ \ArmureMetrique % définition de l'armure et de la métrique
+ \clef "treble"
+ \new Voice @{
+ \voiceOne
+ \ManuelUnVoixUnMusique
+ @}
+ \new Voice @{
+ \voiceTwo
+ \ManuelUnVoixDeuxMusique
+ @}
+ >> % fin du contexte de la portée ManuelUn
+ \new Staff = "ManuelDeux" \with @{
+ \override VerticalAxisGroup
+ #'staff-staff-spacing #'stretchability = 5
+ @} <<
+ \ArmureMetrique
\clef "bass"
- \new Voice @{ \ManuelDeuxMusique @}
+ \new Voice @{
+ \ManuelDeuxMusique
+ @}
>> % fin du contexte de la portée ManuelDeux
>> % fin du contexte PianoStaff
\new Staff = "PedalierOrgue" <<
- \TimeKey
+ \ArmureMetrique
\clef "bass"
- \new Voice @{ \PedalierOrgueMusique @}
+ \new Voice @{
+ \PedalierOrgueMusique
+ @}
>> % fin du contexte de la portée PedalOrgan
>>
@} % fin du contexte Score
title = "Jesu, meine Freude"
composer = "J S Bach"
}
-TimeKey = { \time 4/4 \key c \minor }
+keyTime = { \key c \minor \time 4/4 }
ManualOneVoiceOneMusic = \relative g' {
- g4 g f ees | d2 c2 |
+ g4 g f ees |
+ d2 c |
}
ManualOneVoiceTwoMusic = \relative c' {
ees16 d ees8~ ees16 f ees d c8 d~ d c~ |
- c c4 b8 c8. g16 c b c d |
+ c8 c4 b8 c8. g16 c b c d |
}
ManualTwoMusic = \relative c' {
c16 b c8~ c16 b c g a8 g~ g16 g aes ees |
- f ees f d g aes g f ees d e8~ ees16 f ees d |
+ f16 ees f d g aes g f ees d e8~ ees16 f ees d |
}
PedalOrganMusic = \relative c {
r8 c16 d ees d ees8~ ees16 a, b g c b c8 |
r16 g ees f g f g8 c,2 |
- }
+}
\score {
<< % PianoStaff and Pedal Staff must be simultaneous
\new PianoStaff <<
\new Staff = "ManualOne" <<
- \TimeKey % set time signature and key
+ \keyTime % set key and time signature
\clef "treble"
- \new Voice { \voiceOne \ManualOneVoiceOneMusic }
- \new Voice { \voiceTwo \ManualOneVoiceTwoMusic }
+ \new Voice {
+ \voiceOne
+ \ManualOneVoiceOneMusic
+ }
+ \new Voice {
+ \voiceTwo
+ \ManualOneVoiceTwoMusic
+ }
>> % end ManualOne Staff context
- \new Staff = "ManualTwo" <<
- \TimeKey
+ \new Staff = "ManualTwo" \with {
+ \override VerticalAxisGroup
+ #'staff-staff-spacing #'stretchability = 5
+ } <<
+ \keyTime
\clef "bass"
- \new Voice { \ManualTwoMusic }
+ \new Voice {
+ \ManualTwoMusic
+ }
>> % end ManualTwo Staff context
>> % end PianoStaff context
\new Staff = "PedalOrgan" <<
- \TimeKey
+ \keyTime
\clef "bass"
- \new Voice { \PedalOrganMusic }
+ \new Voice {
+ \PedalOrganMusic
+ }
>> % end PedalOrgan Staff context
>>
} % end Score context
@lilypond[quote,verbatim,ragged-right]
fragmentA = \relative c'' { a4 a8. b16 }
fragmentB = \relative c'' { a8. gis16 ees4 }
+
violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA }
+
\score {
{
\violin
@c TODO Avoid padtext - not needed with skylining
@lilypond[quote,verbatim,ragged-right]
-dolce = \markup{ \italic \bold dolce }
+dolce = \markup { \italic \bold dolce }
+
padText = { \once \override TextScript #'padding = #5.0 }
-fthenp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
+fthenp =_\markup {
+ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p
+}
+
violin = \relative c'' {
\repeat volta 2 {
c4._\dolce b8 a8 g a b |
c,4.\fthenp b8 c4 c-. |
}
}
+
\score {
{
\violin
}
-\layout{ragged-right=##t}
+ \layout { ragged-right = ##t }
}
@end lilypond
@example
violin = \relative c'' @{
\repeat volta 2 @{
- c4._\markup@{ \italic \bold dolce @} b8 a8 g a b |
+ c4._\markup @{ \italic \bold dolce @} b8 a8 g a b |
\once \override TextScript #'padding = #5.0
c4.^"hi there!" d8 e' f g d |
- c,4.\markup@{ \dynamic f \italic \small @{ 2nd @}
- \hspace #0.1 \dynamic p @} b8 c4 c-. |
+ c,4.\markup @{
+ \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p
+ @}
+ b8 c4 c-. |
@}
@}
@end example
@lilypond[quote,verbatim,ragged-right]
padText =
-#(define-music-function (parser location padding) (number?)
- #{
- \once \override TextScript #'padding = #$padding
- #})
+#(define-music-function
+ (parser location padding)
+ (number?)
+ #{
+ \once \override TextScript #'padding = #padding
+ #})
\relative c''' {
- c4^"piu mosso" b a b
+ c4^"piu mosso" b a b |
\padText #1.8
- c4^"piu mosso" d e f
+ c4^"piu mosso" d e f |
\padText #2.6
- c4^"piu mosso" fis a g
+ c4^"piu mosso" fis a g |
}
@end lilypond
du travail si la syntaxe de LilyPond change un jour -- voir
@rprogram{Mise à jour avec convert-ly}. Si vous avez une seule
définition, par exemple @code{\dolce}, pour tous vos fichiers (voir
-@ref{Feuilles de style}), et que la syntaxe change, alors vous n'aurez
+@ref{Feuilles de style}) et que la syntaxe change, alors vous n'aurez
qu'à mettre à jour votre seule définition @code{\dolce}, au lieu de
-devoir modifier chaque fichier @code{.ly}.
+devoir modifier chaque fichier @file{.ly}.
@node Conducteurs et parties
la partie séparée et la partition d'orchestre.
Il est judicieux de définir les notes dans un fichier séparé. Par
-exemple, supposons que le fichier @code{musique-Cor.ly} contienne la
+exemple, supposons que le fichier @file{musique-Cor.ly} contienne la
partie suivante pour un duo cor/@/basson.
@example
notesCor = \relative c @{
\time 2/4
- r4 f8 a cis4 f e d
+ r4 f8 a | cis4 f | e d |
@}
@end example
@example
\include "musique-Cor.ly"
+
\header @{
instrument = "Cor en Fa"
@}
@end example
@noindent
-sera substitué le contenu du fichier @code{musique-Cor.ly}, et de ce
+sera substitué le contenu du fichier @file{musique-Cor.ly}, et de ce
fait la variable @code{notesCor} se trouvera définie. La commande
-@w{@code{\transpose f c'}} indique que son argument @code{\notesCor}
-sera transposé à la quinte supérieure@tie{}: le son réel @code{f} s'écrit
-@code{c'}, ce qui est la caractéristique d'un Cor en fa. La
-transposition est visible comme suit@tie{}:
+@code{\transpose@tie{}f@tie{}c'} indique que son argument
+@code{\notesCor} sera transposé à la quinte supérieure@tie{}: le son
+réel @code{f} s'écrit @code{c'}, ce qui est la caractéristique d'un Cor
+en fa. La transposition est visible comme suit@tie{}:
@lilypond[quote,ragged-right]
\transpose f c' \relative c {
\time 2/4
- r4 f8 a cis4 f e d
+ r4 f8 a | cis4 f | e d |
}
@end lilypond
\transpose f c' \relative c {
\time 2/4
\set Score.skipBars = ##t
- R2*3
- r4 f8 a cis4 f e d
+ R2*3 |
+ r4 f8 a | cis4 f | e d |
}
@end lilypond
Le conducteur rassemble toute la musique. Si l'on suppose que l'autre
-voix de notre duo se trouve dans le fichier @code{musique-Basson.ly} en
+voix de notre duo se trouve dans le fichier @file{musique-Basson.ly} en
tant que variable @code{notesBasson}, on établira un conducteur avec
@example
@lilypond[quote,ragged-right]
\relative c <<
\new Staff {
- \time 2/4 R2*3
- r4 f8 a cis4 f e d
+ \clef "treble"
+ \time 2/4
+ R2*3 |
+ r4 f8 a | cis4 f | e4 d |
}
\new Staff {
- \clef bass
- r4 d,8 f | gis4 c | b bes |
- a8 e f4 | g d | gis f
+ \clef "bass"
+ \time 2/4
+ r4 d,8 f | gis4 c | b4 bes |
+ a8 e f4 | g4 d | gis4 f |
}
>>
@end lilypond