@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@c This file is part of lilypond.tely
@ignore
    Translation of GIT committish: b40f25ec7472b855483b5eb9126747bfb9487fe1

    When revising a translation, copy the HEAD committish of the
    version that you are working on.  See TRANSLATION for details.
@end ignore

@node Putting it all together
@chapter Putting it all together

Ce chapitre traite des principes généraux de LilyPond, et de
la manière de créer des blocs @code{\score} @footnote{Le terme @q{score} signifie partition en anglais.}.


@menu
* Extending the templates::     
* How LilyPond files work::     
* Score is a single musical expression::  
* An orchestral part::          
@end menu


@node Extending the templates
@section Extending the templates

Bon, vous avez lu le tutoriel, vous savez écrire de la musique.  Mais
comment obtenir les portées que vous voulez ?  Les modèles, c'est bien
beau, mais que faire quand ils ne traitent pas ce que l'on veut précisément ?

Commencez par le modèle qui vous semblera le plus proche de ce à quoi
vous voulez aboutir.  Disons par exemple que vous voulez écrire une pièce
pour soprano et violoncelle : dans ce cas l'on pourrait commencer par les
@qq{notes et paroles}, pour la partie de soprano.

@example
\version "2.11.20"
melodie = \relative c' @{
  \clef treble
  \key c \major
  \time 4/4

  a4 b c d
@}

texte = \lyricmode @{
  Laaa Siii Dooo Rééé
@}

\score@{
  <<
    \new Voice = "voixUn" @{
      \autoBeamOff
      \melodie
    @}
    \new Lyrics \lyricsto "voixUn" \texte
  >>
  \layout @{ @}
  \midi @{ @}
@}
@end example

Maintenant, on veut ajouter une partie de violoncelle.
Jetons un coup d'oeil sur l'exemple avec les notes seules :

@example
\version "2.11.20"
melodie = \relative c' @{
  \clef treble
  \key c \major
  \time 4/4

  a4 b c d
@}

\score @{
\new Staff \melodie
\layout @{ @}
\midi @{ @}
@}
@end example


On n'a pas besoin de deux commandes @code{\version}.  Ce dont on a besoin,
c'est la section @code{melodie}. De même, on n'a pas besoin de deux sections
@code{\score} --- si nous les gardions toutes les deux, on obtiendrait deux
parties séparées ; mais nous voulons un vrai duo, avec les deux parties ensemble.
Dans la section @code{\score}, on n'a pas besoin non plus de deux @code{\layout}
ou de deux @code{\midi}.

Si on se contente de couper et coller les sections @code{melodie}, on se
retrouvera avec deux sections de ce nom ; il nous faut donc les renommer.
Appelons la section pour la soprano @code{musiqueSoprano} et celle pour le
violoncelle @code{musiqueVioloncelle}.  Tant qu'on y est, renommons @code{texte}
en @code{parolesSoprano}.  Attention à bien renommer les deux occurrences de
chacune de ces dénominations : c'est-à-dire la définition de départ, où l'on
trouve @code{mélodie = relative c' @{ }, et l'endroit où cette dénomination est
utilisée, dans la section @code{\score}.

Et puis, toujours tant qu'on y est, mettons le violoncelle en clé de Fa, comme
le veut l'usage, et donnons-lui d'autres notes.

@example
\version "2.11.20"
musiqueSoprano = \relative c' @{
  \clef treble
  \key c \major
  \time 4/4

  a4 b c d
@}

parolesSoprano = \lyricmode @{
  Laaa Siii Dooo Rééé
@}

musiqueVioloncelle = \relative c @{
  \clef bass
  \key c \major
  \time 4/4

  d4 g fis8 e d4
@}

\score@{
  <<
    \new Voice = "voixUn" @{
      \autoBeamOff
      \musiqueSoprano
    @}
    \new Lyrics \lyricsto "voixUn" \parolesSoprano
  >>
  \layout @{ @}
  \midi @{ @}
@}
@end example

Voilà qui est mieux, mais la partie de violoncelle n'apparaît pas sur
la partition --- en effet, nous ne l'avons pas utilisée dans la section
@code{\score}.  Si l'on veut que la partie de violoncelle s'imprime sous
la partie de soprano, on va devoir ajouter :

@example
\new Staff \musiqueVioloncelle
@end example

@noindent
en dessous de tout ce qui concerne la soprano.  Il nous faut également
encadrer la musique par des @code{<<} et @code{>>}, qui feront comprendre
à LilyPond que plusieurs évènements --- ici, des objets @code{Staff} ---
se déroulent en même temps.  Le bloc @code{\score} ressemble maintenant à

@example
\score@{
  <<
    <<
      \new Voice = "voixUn" @{
        \autoBeamOff
        \musiqueSoprano
      @}
      \new Lyrics \lyricsto "voixUn" \parolesSoprano
    >>
    \new Staff \musiqueVioloncelle
  >>
  \layout @{ @}
  \midi @{ @}
@}
@end example

@noindent
C'est un peu le bazar dans tout ça ; mais il vous sera facile de
mettre un peu d'ordre dans l'indentation.  Voici le modèle pour
soprano et violoncelle au complet :

@lilypond[quote,verbatim,ragged-right]
\version "2.11.15"
sopranoMusic = \relative c' {
  \clef treble
  \key c \major
  \time 4/4

  a4 b c d
}

sopranoLyrics = \lyricmode {
  Aaa Bee Cee Dee
}

celloMusic = \relative c {
  \clef bass
  \key c \major
  \time 4/4

  d4 g fis8 e d4
}

\score{
  <<
    <<
      \new Voice = "one" {
        \autoBeamOff
        \sopranoMusic
      }
      \new Lyrics \lyricsto "one" \sopranoLyrics
    >>
    \new Staff \celloMusic
  >>
  \layout { }
  \midi { }
}
@end lilypond



@node How LilyPond files work
@section How LilyPond files work

La mise en forme des fichiers d'entrée de LilyPond est vraiment
peu astreignante, afin d'offrir assez de souplesse aux utilisateurs
expérimentés pour qu'ils puissent organiser leurs fichiers comme
ils l'entendent.  Cependant, les nouveaux utilisateurs peuvent parfois
se perdre en raison de cette souplesse.  Cette section présente
sommairement l'organisation du code LilyPond, en privilégiant
la simplicité au détriment de certains détails.  Vous trouverez une
description plus complète dans @ref{File structure}.

La plupart des exemples de ce manuel sont de courts fragments, par exemple

@example
c4 a b c
@end example

Comme vous le savez maintenant (du moins nous l'espèrons), ceci ne
peut pas être traité en tant que tel. Il s'agit de formes abrégées des
exemples complets ; pour pouvoir être traitées, elles doivent au moins
être encadrées par des accolades :

@example
@{
  c4 a b c
@}
@end example

La plupart des exemples font aussi intervenir la commande
@code{\relative}, suivie de @code{c'} ou @code{c''}.  Elle n'est pas à
proprement parler nécessaire pour le traitement des exemples, mais
dans la plupart des cas le résultat sera vraiment déplorable si vous
l'oubliez.

@lilypond[quote,fragment,ragged-right,verbatim]
\relative c'' {
  c4 a b c
}
@end lilypond

C'est ici que nous entamons les choses sérieuses : le code LilyPond,
sous cette forme, est en réalité un @emph{autre} raccourci. Même s'il
est traité sans problème, et aboutit au bon résultat, c'est une forme
abrégée de :

@example
\score @{
  \relative c'' @{
    c4 a b c
  @}
@}
@end example

Un bloc @code{\score} doit commencer par une et une seule expression
musicale. Rappelez-vous que cette expression peut être ce que vous
voulez, d'une note toute seule à un gigantesque

@example
@{
  \new GrandStaff <<
    collez ici la partition complète de votre opéra de Wagner préféré
  >>
@}
@end example

@noindent
Dès lors que tout cela est entre accolades : @code{@{ ... @}}, c'est
une et une seule expression musicale.

Le bloc @code{\score} peut contenir d'autres éléments, tels que

@example
\score @{
  @{ c'4 a b c' @}
  \layout @{ @}
  \midi @{ @}
  \header @{ @}
@}
@end example

@noindent
Certains préfèrent mettre ces commandes en dehors du bloc 
@code{\score} --- par exemple, on met souvent le @code{\header}
au-dessus. C'est juste là une autre forme abrégée que LilyPond
accepte.

@cindex variables
@cindex indentifiers

Une autre abréviation pratique est la possibilité de définir
des variables --- également appelées @qq{identificateurs}. Dans tous
les modèles, vous trouverez :

@example
melodie = \relative c' @{
  c4 a b c
@}

\score @{
  @{ \melodie @}
@}
@end example

Lorsque LilyPond examinera ce fichier, il va prendre la valeur de la
variable @code{melodie}, c'est-à-dire tout ce qui suit le signe @code{=},
et l'insérer partout où il tombera sur @code{\melodie}.  Vous êtes
libre de choisir comment dénommer vos variables@footnote{Les noms de
variables sont sensibles à la casse, et ne peuvent contenir ni
chiffres, ni tirets, ni caractères accentués.} ; ce peut être
@code{melodie}, @code{global}, @code{maindroitepiano}, ou
@code{laTeteAToto}.  Pour plus de détails, voir @ref{Saving typing
with identifiers and functions}.

Pour une description complète du format des fichiers d'entrée, voir 
@ref{File structure}.


@node Score is a single musical expression
@section Score is a single musical expression

Dans la section précédente, @ref{How LilyPond files work}, nous
avons vu l'organisation générale des fichiers d'entrée de LilyPond.
Mais c'est comme si nous avions éludé la question essentielle : comment
diable peut-on savoir quoi mettre après @code{\score} ?

En fait, nous ne l'avons pas éludée du tout : le grand mystère est
tout simplement qu'il n'y a @emph{pas} de mystère.  Allez,
expliquons-le en une ligne :

@quotation
@emph{Un bloc @code{\score} doit commencer par une et une seule
expression musicale.}
@end quotation

@noindent
Peut-être serait-il judicieux de relire la section
@ref{Music expressions explained}, dans laquelle vous avez
appris à construire de grandes expressions musicales petit bout
par petit bout --- nous avons vu les notes, puis les accords, etc.
Maintenant, nous allons partir d'une grande expression musicale,
et redescendre la pente.

@example
\score @{
  @{   % cette accolade marque le début de l'expression musicale
    \new GrandStaff <<
    insérez ici votre opéra de Wagner préféré
    >>
  @}   % cette accolade marque la fin de l'expression musicale
  \layout @{ @}
@}
@end example

Un opéra de Wagner multiplierait facilement la longueur de ce manuel
par deux ou trois, alors faisons-le en version chant/piano.  On n'a
plus besoin d'une partition d'orchestre --- @code{GrandStaff} --- donc
laissons cela de côté.  Par contre, un chanteur et un piano
@emph{pourraient} nous être utiles.

@example
\score @{
  @{
    <<
      \new Staff = "chanteur" <<
      >>
      \new PianoStaff = piano <<
      >>
    >>
  @}
  \layout @{ @}
@}
@end example

Vous vous souvenez que nous avons recours à @code{<<} et @code{>>}
pour mettre en place des musiques simultanées.  Et, pour le
coup, on aimerait @emph{vraiment} que la partie vocale et l'accompagnement
soient imprimés ensemble...

@example
\score @{
  @{
    <<
      \new Staff = "chanteur" <<
        \new Voice = "chant" @{ @}
      >>
      \new Lyrics \lyricsto chant \new Lyrics @{ @}
      \new PianoStaff = "piano" <<
        \new Staff = "mainDroite" @{ @}
        \new Staff = "mainGauche" @{ @}
      >>
    >>
  @}
  \layout @{ @}
@}
@end example

On y voit nettement plus clair maintenant.  Nous voici donc avec la
partie du chanteur, qui contient un ensemble @code{Voice}, ce qui dans
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.

Nous avons également une partie de piano, qui contient deux portées :
une pour la main droite, une autre pour la main gauche.


À ce point, on pourrait commencer à ajouter les notes. Dans les
accolades qui suivent @code{\new Voice = chant}, on pourrait commencer
à écrire

@example
\relative c'' @{
  a4 b c d
@}
@end example

Mais si l'on procédait ainsi, la section @code{\score} deviendrait
vite assez touffue, et très rapidement on ne s'y retrouverait plus.
C'est pourquoi on utilisera plutôt des variables, ou identificateurs :

@example
melodie = @{ @}
texte = @{ @}
mainDroite = @{ @}
mainGauche = @{ @}
\score @{
  @{
    <<
      \new Staff = "chanteur" <<
        \new Voice = "chant" @{ \melodie @}
      >>
      \new Lyrics \lyricsto chant \new Lyrics @{ \texte @}
      \new PianoStaff = "piano" <<
        \new Staff = "mainDroite" @{ \mainDroite @}
        \new Staff = "mainGauche" @{ \mainGauche @}
      >>
    >>
  @}
  \layout @{ @}
@}
@end example

@noindent
Souvenez-vous que vous pouvez donner aux variables le nom que vous
voulez, à condition de respecter les caractères autorisés. Ces
limitations sont décrites dans @ref{File structure}.

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 :
assurez-vous que chaque élément d'un même niveau a le même décalage
horizontal dans votre éditeur de texte !



@node An orchestral part
@section An orchestral part

Dans la musique d'orchestre, toutes les notes sont imprimées deux fois.
D'abord dans les parties séparées destinées aux musiciens, et ensuite
dans le conducteur destiné au chef.  Les variables sont là pour vous éviter
un double travail.  La musique n'est entrée qu'une seule fois, et stockée dans
une variable, dont le contenu servira à imprimer à la fois 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 @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
@}
@end example

@noindent
On établira alors une partie séparée en constituant un nouveau fichier :

@example
\include "musique-Cor.ly"
\header @{
  instrument = "Cor en Fa"
@}

@{
 \transpose f c' \notesCor
@}
@end example

À la ligne

@example
\include "musique-Cor.ly"
@end example

@noindent
sera substitué le contenu du fichier @file{musique-Cor.ly}, et de ce
fait la variable @code{notesCor} se trouvera définie.  La commande
@code{\transpose f@tie{}c'} indique que son argument @code{\notesCor}
soit transposé à la quinte supérieure : le son réel @samp{f} s'écrit
@code{c'}, ce qui est la caractéristique d'un Cor en Fa. La transposition
est visible comme suit :

@lilypond[quote,ragged-right]
\transpose f c' \relative c {
  \time 2/4
  r4 f8 a cis4 f e d
}
@end lilypond

Dans les pièces d'ensemble, il arrive souvent qu'une voix ne joue pas
pendant plusieurs mesures.  Un silence spécial, appelé silence multi-mesures,
l'indique alors. On l'obtient par un @samp{R} majuscule, suivi d'une
durée : @code{1}@tie{}pour une pause, @code{2}@tie{}pour une demi-pause,
etc.  Cette durée peut être multipliée pour établir de plus longs silences.
Par exemple, le silence suivant dure 3@tie{}mesures à 2/4.

@example
R2*3
@end example

Dans une partie séparée, les silences multi-mesures sont compressés.
Il faut pour cela définir la propriété @code{skipBars} à @q{vrai} :

@example
\set Score.skipBars = ##t
@end example

@noindent
Cette commande donne la valeur @q{vrai} --- @q{true} en anglais,
@samp{#t} dans le langage Scheme --- à cette propriété dans le
contexte @code{Score}.  Si l'on ajoute dans la musique ci-dessus le
silence multi-mesures et cette option, on obtient le résultat suivant :

@lilypond[quote,ragged-right]
\transpose f c' \relative c {
  \time 2/4
  \set Score.skipBars = ##t
  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 @file{musique-Basson.ly} en
tant que variable @code{notesBasson}, on établira un conducteur avec

@example
\include "musique-Basson.ly"
\include "musique-Cor.ly"

<<
  \new Staff \notesCor
  \new Staff \notesBasson
>>
@end example

@noindent
ce qui équivaut à

@lilypond[quote,ragged-right]
\relative c <<
  \new Staff {
    \time 2/4 R2*3
    r4 f8 a cis4 f e d
  }
  \new Staff {
    \clef bass
    r4 d,8 f | gis4 c | b bes |
    a8 e f4 | g d | gis f
  }
>>
@end lilypond

Des informations plus détaillées sur la mise en place de conducteurs
et de parties séparées se trouvent dans le manuel : voir
@ref{Orchestral music}.

Les variables (@q{propriétés}) réglables sont abordées en détail dans
@ref{Changing context properties on the fly}.
