@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @c This file is part of lilypond.tely @ignore Translation of GIT committish: 27af34a245b02a6b89c9af3becefcfe676b2e19d 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.23" 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.23" 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} ni 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.23" 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 n'y avons pas fait appel 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.23" 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, ces formeulations 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 passons aux 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 identificateurs Un autre raccourci 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 rencontrera @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 chiffre, ni tiret, ni caractère accentué.} ; 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 remonter 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} sera 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 assigne la valeur @q{vrai} --- @q{true} en anglais, et @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}.