X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Ffr%2Fuser%2Ffundamental.itely;fp=Documentation%2Ffr%2Fuser%2Ffundamental.itely;h=0000000000000000000000000000000000000000;hb=941dff9d2a67080e0dd8474f1e70f0c72ace6424;hp=47eca98f52647ae1f15361329ce2ffc11e1b8b26;hpb=5a22d6233a39d3164e1ca043244794c268be4ad0;p=lilypond.git diff --git a/Documentation/fr/user/fundamental.itely b/Documentation/fr/user/fundamental.itely deleted file mode 100644 index 47eca98f52..0000000000 --- a/Documentation/fr/user/fundamental.itely +++ /dev/null @@ -1,2919 +0,0 @@ -@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- -@c This file is part of lilypond-learning.tely -@ignore - Translation of GIT committish: db53c05f11bea8831733b1fdf7ebe32cb1f491f4 - - When revising a translation, copy the HEAD committish of the - version that you are working on. See TRANSLATION for details. -@end ignore - -@c \version "2.12.0" - -@c Translators: Valentin Villenave, Jean-Charles Malahieude -@c Translation checkers: John Mandereau -@c Translation status: post-GDP - -@node Fundamental concepts -@chapter Fundamental concepts - -Le tutoriel nous a montré comment obtenir une édition de toute beauté à -partir d'un simple fichier texte. Nous nous intéresserons dans cette -partie aux concepts et techniques qui permettent d'obtenir des -partitions complexes de même qualité. - -@menu -* How LilyPond input files work:: -* Voices contain music:: -* Contexts and engravers:: -* Extending the templates:: -@end menu - -@node How LilyPond input files work -@section How LilyPond input 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 @ruser{File structure}. - -@menu -* Introduction to the LilyPond file structure:: -* Score is a (single) compound musical expression:: -* Nesting music expressions:: -* On the un-nestedness of brackets and ties:: -@end menu - -@node Introduction to the LilyPond file structure -@subsection Introduction to the LilyPond file structure - -@cindex format d'entrée -@cindex structure de ficher - -Un fichier d'entrée LilyPond ressemble à : - -@example -\version @w{"@version{}"} -\header @{ @} -\score @{ - @var{...expression musicale composite...} % c'est là qu'est la musique ! - \layout @{ @} - \midi @{ @} -@} -@end example - -@noindent -Il existe de nombreuses variantes à ce schéma simpliste, mais cet -exemple est un préambule à notre propos. - -@funindex \book -@funindex \score -@cindex book, livre, ouvrage -@cindex livre -@cindex score, partition -@cindex partition - -Jusqu'à présent, les exemples que nous avons pu voir ne faisaient pas -appel à la commande @code{\score@{@}}. En fait, LilyPond ajoute -automatiquement les commandes nécessaires au traitement d'un code -simpliste. LilyPond considère - -@example -\relative c'' @{ - c4 a d c -@} -@end example - -@noindent -comme un raccourci de - -@example -\book @{ - \score @{ - \new Staff @{ - \new Voice @{ - \relative c'' @{ - c4 a b c - @} - @} - @} - \layout @{ @} - @} -@} -@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 -expression était incluse dans les commandes de notre premier exemple. - -@cindex contextes implicites -@cindex implicites, contextes - -@strong{Attention :} de nombreux exemples, dans la documentation de -LilyPond, ne font pas apparaître les commandes @code{\new Staff} ou -@code{\new Voice}, qui sont créées implicitement. Ce qui -n'est pas primordial pour des exemples simples le devient dès que la -situation devient un peu plus complexe. Le fait de ne pas déclarer -explicitement un contexte peut alors amener à des résultats quelque peu -surprenants, comme la création d'une portée supplémentaire et -indésirable. La manière de créer explicitement des contextes est -traitée plus en détails au chapitre @ref{Contexts and engravers}. - -@warning{Dès lors que votre musique dépasse quelques lignes, nous vous -engageons fortement à créer explicitement les voix et portées.} - -Mais revenons à notre premier exemple, et penchons-nous tout d'abord sur -la commande @code{\score}. - -Un bloc @code{\score} doit contenir une et une seule expression -musicale, exprimée immédiatement à la suite de la commande -@code{\score}. Rappelez-vous que cette expression peut être n'importe -quoi, d'une note isolée à un gigantesque - -@example -@{ - \new StaffGroup << - @var{...collez ici la partition complète d'un opéra de Wagner...} - >> -@} -@end example - -@noindent -Dès lors que tout cela est entre accolades : @code{@{ ... @}}, LilyPond -le considère comme une et une seule expression musicale. - -Comme nous l'avons vu précédemment, un bloc @code{\score} peut contenir -d'autres informations : - -@example -\score @{ - @{ c'4 a b c' @} - \header @{ @} - \layout @{ @} - \midi @{ @} -@} -@end example - -@funindex \header -@funindex \layout -@funindex \midi -@funindex midi -@cindex header -@cindex en-tête -@cindex layout -@cindex mise en forme -@cindex midi - -@noindent -Gardez à l'esprit que ces trois commandes -- @code{\header}, -@code{\layout} et @code{\midi} -- sont spécifiques : à l'inverse de -toutes les commandes débutant par une oblique inversée @code{\} -(@emph{backslash} en anglais), @strong{elles ne constituent pas} des -expressions musicales et ne peuvent pas faire partie d'expressions -musicales. Elles peuvent de ce fait être placées à l'intérieur du -bloc @code{\score}, ou bien à l'extérieur. En réalité, ces commandes -sont la plupart du temps indépendantes du bloc @code{\score} -- par -exemple, la commande @code{\header} intervient souvent avant le bloc -@code{\score}, comme le montre l'exemple ci-dessus. - -Les deux autres commandes -- @code{\layout @{ @}} et @code{\midi @{@}} --- que nous n'avons pas détaillées pour l'instant, auront respectivement -pour effet, lorsqu'elles interviennent, de produire une sortie -imprimable et un fichier MIDI. Nous nous y intéressons plus -particulièrement dans le manuel de notation, aux chapitres -@ruser{Score layout} et @ruser{Creating MIDI files}. - -@cindex partitions multiples -@cindex book, bloc implicite -@cindex implicite, bloc book -@funindex \book -@funindex book - -Vous pouvez tout à fait mentionner plusieurs blocs @code{\score}. Ils -seront traités comme autant de partitions indépendantes qui seront -regroupées dans un seul fichier résultant. La commande @code{\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. - -En résumé : - -Dès que LilyPond rencontre un bloc @code{\book}, il crée un -fichier distinct (.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. - -Tout bloc @code{\layout} affecte le bloc @code{\score} ou @code{\book} -au sein duquel il intervient : si c'est à l'intérieur d'un bloc -@code{\score}, seul celui-ci en sera affecté. Dans le cas où le bloc -@code{\layout} se trouve à l'extérieur du bloc @code{\score}, que le -bloc @code{\book} soit explicite ou non, il affectera chacun des -@code{\score} compris dans ce @code{\book}. - -Pour plus de détail à ce sujet, consultez -@ruser{Multiple scores in a book}. - -@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 ponctuation, ni caractère accentué, ni espace.} ; ce peut être -@code{melodie}, @code{global}, @code{maindroitepiano}, ou -@code{laTeteAToto}, tant qu'il ne s'agit pas de @qq{mot réservé}. Pour -plus de détails, voir @ref{Saving typing with variables and functions}. - - -@seealso -Pour une description complète du format des fichiers d'entrée, voir -@ruser{File structure}. - - -@node Score is a (single) compound musical expression -@subsection Score is a (single) compound musical expression - -@funindex \score -@funindex score -@cindex partition -@cindex bloc score, contenu -@cindex Expression musicale composite - -Dans la section précédente, -@ref{Introduction to the LilyPond file structure}, 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'@strong{il n'y a 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 StaffGroup << - @var{...insérez ici l'intégralité d'un opéra de Wagner...} - >> - @} % 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 contentons-nous d'une voix et d'un piano. On -n'a plus besoin d'une partition d'orchestre --- @emph{i.e.} des -portées regroupées en @code{StaffGroup} --- donc laissons cela de -côté. Par contre, nous voulons bien une voix et un piano. - -@example -\score @{ - @{ - << - \new Staff = "chanteur" << - >> - \new PianoStaff = piano << - >> - >> - @} - \layout @{ @} -@} -@end example - -Vous vous souvenez que nous avons recours à @code{<<} et @code{>>} -en lieu et place de @code{@{ ... @}} pour gérer des musiques -simultanées. Et, pour le coup, on aimerait @emph{vraiment} que la -partie vocale et l'accompagnement soient imprimés ensemble... Bien que -faire appel à @code{<< ... >>} ne soit pas réellement nécessaire pour la -portée du chanteur, dans la mesure où elle ne contient qu'une seule -expression musicale, nous vous recommandons de prendre l'habitude de -l'encadrer ainsi plutôt que par de simples accolades --- une portée peut -en effet contenir plusieurs voix. - -@lilypond[verbatim,quote,ragged-right] -\score { - << - \new Staff = "singer" << - \new Voice = "vocal" { c'1 } - \addlyrics { And } - >> - \new PianoStaff = "piano" << - \new Staff = "upper" { c'1 } - \new Staff = "lower" { c'1 } - >> - >> - \layout { } -} -@end lilypond - -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 ---, et des paroles. - -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'' @{ - r4 d8\noBeam g, c4 r -@} -@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. -Avec quelques notes de plus, nous pourrions avoir : - -@lilypond[verbatim,quote,ragged-right] -melody = \relative c'' { r4 d8\noBeam g, c4 r } -text = \lyricmode { And God said, } -upper = \relative c'' { 2~ } -lower = \relative c { b2 e2 } - -\score { - << - \new Staff = "singer" << - \new Voice = "vocal" { \melody } - \addlyrics { \text } - >> - \new PianoStaff = "piano" << - \new Staff = "upper" { \upper } - \new Staff = "lower" { - \clef "bass" - \lower - } - >> - >> - \layout { } -} -@end lilypond - -Respectez bien la différence entre les notes -- introduites par -@code{\relative} --, et les paroles -- introduites par -@code{\lyricmode}. Cette distinction est primordiale afin que LilyPond -puisse interpréter ce qui les suit comme étant respectivement de la -musique ou du texte. - -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 ! - - -@seealso -Manuel de notation : @ruser{Structure of a score}. - - -@node Nesting music expressions -@subsection Nesting music expressions - -@cindex portées, temporaires -@cindex ossias - -Déclarer toutes les portées dès le départ n'est pas une obligation ; -elles peuvent intervenir temporairement n'importe où dans la partition. -Ceci est tout à fait indiqué pour créer des sections @rglos{ossia}. -L'exemple suivant illustre la manière de créer temporairement une -nouvelle portée, l'espace de trois notes : - -@lilypond[verbatim,quote,ragged-right] -\new Staff { - \relative g' { - r4 g8 g c4 c8 d | - e4 r8 - << - { f c c } - \new Staff { - f8 f c - } - >> - r4 | - } -} -@end lilypond - -@noindent -Vous noterez la taille de la clef, identique à celle que l'on trouve -lors d'un changement en cours de ligne --- légèrement plus petite que -celle imprimée en tête de ligne. - -@cindex portée, positionnement - -Une section ossia se placera au dessus de la portée en procédant ainsi : - -@lilypond[verbatim,quote,ragged-right] -\new Staff = "main" { - \relative g' { - r4 g8 g c4 c8 d | - e4 r8 - << - { f c c } - \new Staff \with { - alignAboveContext = #"main" } - { f8 f c } - >> - r4 | - } -} -@end lilypond - -Cet exemple recourt à @code{\with}, que nous verrons en détail plus -avant. C'est un moyen de modifier le comportement par défaut d'une -portée individuelle. Nous indiquons ici que la nouvelle portée doit se -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{Size of objects} et @ruser{Ossia staves}. - - -@node On the un-nestedness of brackets and ties -@subsection On the un-nestedness of brackets and ties - -@cindex crochets, imbrication -@cindex crochets, types de - -Nous avons déjà rencontré plusieurs types de crochets au fil de nos -fichiers LilyPond. Ils obéissent à des règles différentes qui peuvent -paraître déroutantes. Avant d'examiner ces règles, voici une liste des -différents types de crochet : - -@c attempt to force this onto a new page -@need 50 -@multitable @columnfractions .3 .7 -@headitem Type de crochet - @tab Fonction -@item @code{@{ .. @}} - @tab Délimite un segment de musique séquentielle -@item @code{< .. >} - @tab Délimite les notes d'un accord -@item @code{<< .. >>} - @tab Délimitent des sections simultanées -@item @code{( .. )} - @tab Marque le début et la fin d'une liaison -@item @code{\( .. \)} - @tab Marque le début et la fin d'une liaison de phrasé -@item @code{[ .. ]} - @tab Marque le début et la fin d'une ligature manuelle -@end multitable - -D'autres constructions permettent d'obtenir des lignes regroupant ou en -travers des notes : les liaisons de prolongation indiquées par un -tilde (@code{~}), les marques de nolet avec -@code{\times@tie{}x/y@tie{}@{..@}}, ou -encore les notes d'ornement avec @code{\grace@{..@}}. - -En dehors de LilyPond, l'imbrication correcte de différents types de -crochets exige un strict respect des conventions, telles que -@code{<<@tie{}[@tie{}@{@tie{}(@tie{}..@tie{})@tie{}@}@tie{}]@tie{}>>}, -où les marques de fermeture interviennent -obligatoirement dans l'ordre exactement inverse à celles d'ouverture. -Ceci @strong{doit} être rigoureusement respecté pour les trois -types de crochets utilisés pour @strong{délimiter} comme l'indique le -tableau ci-dessus. -Une telle rigueur dans l'imbrication n'est @strong{pas} requise pour les -types de crochets dont la fonction est de @strong{marquer}, selon le -tableau ci-dessus, lorsqu'il sont utilisés en combinaison avec des -liaisons de prolongation ou des nolets. En effet, il ne s'agit pas -de crochets ayant pour fonction de borner quelque chose ; ils agissent -plutôt comme marquant le début de quelque chose et sa fin. - -Ainsi, et bien que ce ne soit pas très musical, une liaison de phrasé -peut débuter avant l'insertion d'une ligature manuelle et s'arrêter -avant la fin de la ligature : - -@lilypond[quote,verbatim,fragment,ragged-right,relative=2] - { g8\( a b[ c b\) a] } -@end lilypond - -De manière générale, différents types de crochets, notamment s'ils -indiquent des nolets, liaisons de prolongation ou notes d'ornements, -peuvent se mélanger entre eux. L'exemple suivant montre une ligature -qui se prolonge sur un triolet (ligne 1), puis une liaison qui se -prolonge sur un triolet (ligne 2) et enfin une ligature et une liaison -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.\) -} -@end lilypond - - -@node Voices contain music -@section Voices contain music - -Les chanteurs utilisent leur voix pour chanter ; 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 se trouve -être le concept fondamental de LilyPond. - -@menu -* I'm hearing Voices:: -* Explicitly instantiating voices:: -* Voices and vocals:: -@end menu - -@node I'm hearing Voices -@subsection I'm hearing Voices - -@cindex polyphonie -@cindex calques (layers) -@cindex voix multiples -@cindex Voice, contexte -@cindex contexte de voix -@cindex musique simultanée -@cindex musique concurrente -@cindex voix ou accords -@cindex accords ou voix - -Dans une partition gérée par LilyPond, le niveau le plus bas, ou bien -élémentaire ou fondamental, est le @qq{contexte de voix} -- @emph{Voice -context} en anglais --. Pour d'autres logiciels, on fait tantôt -référence à la notion de @qq{couche} ou de @qq{calque}. - -En réalité, le contexte de voix est le seul à pouvoir contenir de la -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. - -Si une voix unique peut tout à fait contenir plusieurs notes dans un -accord, à partir de quand aurons-nous vraiment besoin de plusieurs -voix ? Considérons déjà ces quatre accords : - -@lilypond[quote,verbatim,fragment,ragged-right,relative=1] -\key g \major -4 -@end lilypond - -Nous exprimons ici chacun des accords par l'utilisation de -chevrons gauche et droite simples, @code{< ... >}, puisque nous -n'avons besoin que d'une seule voix. Supposons maintenant que le fa -dièse soit une croche, suivie d'un sol croche -- une note de passage -vers le la ? Nous avons alors deux notes qui débutent au même moment, -mais dont la durée est différente : un ré noire et un fa dièse croche. -Comment coder cela ? Dans la mesure où toutes les notes d'un accord -doivent avoir la même durée, nous ne pouvons pas écrire un accord. Nous -ne pouvons pas non plus écrire deux notes séparées, puisqu'elles -débutent en même temps. Nous avons alors besoin de deux voix. - -Voyons comment cela se pratique selon la grammaire de LilyPond. - -@funindex << \\ >> -@funindex \\ - -Le plus sûr moyen de saisir un fragment où plusieurs voix cohabitent -sur la même portée, consiste à saisir chacune des voix séquentiellement -(avec @code{@{...@}}), puis à les combiner en simultané à l'aide de -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 -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. - -Voici comment éclater les accords en deux voix, avec la note de passage -et la liaison : - -@lilypond[quote,verbatim,fragment,ragged-right,relative=2] -\key g \major -% 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. - -Autre exemple : - -@lilypond[quote,verbatim,fragment,ragged-right,relative=2] -\key d \minor -% Voice "1" Voice "2" -<< { r4 g g4. a8 } \\ { d,2 d4 g } >> | -<< { bes4 bes c bes } \\ { g4 g g8( a) g4 } >> | -<< { a2. r4 } \\ { fis2. s4 } >> | -@end lilypond - -Le recours à une construction @code{<< \\ >>} particulière à chaque -mesure n'est pas nécessaire. Bien qu'on y gagne en lisibilité si chaque -mesure ne contient que quelques notes, il est plus judicieux de -carrément séparer chaque voix : - -@lilypond[quote,verbatim,fragment,ragged-right,relative=2] -\key d \minor -<< { - % Voice "1" - r4 g g4. a8 | - bes4 bes c bes | - a2. r4 | -} \\ { - % Voice "2" - d,2 d4 g | - g4 g g8( a) g4 | - fis2. s4 | -} >> -@end lilypond - - -@cindex voix, nomage -@cindex voix et constructions simultanées -@cindex liaisons et constructions simultanées - -Cet exemple ne comporte que deux voix, mais il peut être étendu pour -traiter trois voix ou plus en ajoutant autant de séparateurs @code{\\} -que de besoin. - -Les contextes @code{Voice} portent les noms @code{"1"}, @code{"2"}, etc. -Pour chacun de ces contextes, la direction et l'orientation des -liaisons, hampes, nuances, etc. est définie automatiquement. - -@lilypond[quote,verbatim,fragment] -\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 } >> | -} -@end lilypond - -Ces voix sont séparées de la voix principale, laquelle contient les notes en -dehors de la construction @code{<< .. >>} -- que nous appellerons -@emph{construction simultanée}. Les liaisons, de prolongation ou non, -ne peuvent relier des notes que si elles appartiennent à la même voix ; -elles ne peuvent ni pénétrer une contruction 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. Reprenons notre exemple, en -affectant une couleur et une allure différentes aux notes de chacune des -voix. Vous noterez qu'un changement apporté à une voix ne se propage -pas aux autres, et qu'il se reporte jusqu'au bout, et que la voix aux -triangles bleus comporte une liaison de prolongation entre deux -constructions. - -@lilypond[quote,verbatim] -\new Staff \relative c' { - % Main voice - c16 d e f - << % Bar 1 - { - \voiceOneStyle - g4 f e - } - \\ - { - \voiceTwoStyle - r8 e4 d c8 ~ - } - >> - << % Bar 2 - % Voice 1 continues - { d2 e2 } - \\ - % Voice 2 continues - { c8 b16 a b8 g ~ g2 } - \\ - { - \voiceThreeStyle - s4 b4 c2 - } - >> -} -@end lilypond - -@funindex \voiceOneStyle -@funindex \voiceTwoStyle -@funindex \voiceThreeStyle -@funindex \voiceFourStyle -@funindex \voiceNeutralStyle - -Les commandes @code{\voiceXXXStyle} sont principalement dédiées à une -utilisation pédagogique, comme l'est ce document. Elles modifient la -couleur des hampes et ligatures et le style de tête des notes, pour -permettre une meilleure distinction entre les différentes voix. La -première voix comporte des têtes en losange rouge, la deuxième en -triangle bleu, la troisième en cercle barré vert, la quatrième (non -utilisée ici) en croix magenta ; @code{\voiceNeutralStyle} (non utilisé -ici) revient au style par défaut. Nous verrons plus tard comment créer -de telles commandes. -Voir @ref{Visibility and color of objects} et -@ref{Using variables for tweaks}. - -La polyphonie ne modifie en rien la relation entre les notes au sein -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 @} -@end example - -@noindent -@code{noteB} est relative à @code{noteA} @* -@code{noteC} est relative à @code{noteB}, pas à @code{noteA} @* -@code{noteD} est relative à @code{noteB}, pas à @code{noteA} ni -@code{noteC} @* -@code{noteE} est relative à @code{noteD}, pas à @code{noteA} - -Une méthode alternative, et qui peut simplifier les choses si les notes -des différentes voix sont espacées, consiste à placer une commande -@code{\relative} au début de chacune des voix : - -@example -\relative c' @{ noteA ... @} -<< - \relative c'' @{ < noteB noteC > ... @} -\\ - \relative g' @{ noteD ... @} ->> -\relative c' @{ noteE ... @} -@end example - -Pour finir, analysons le principe d'utilisation des voix dans une pièce -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 -à 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. - -@c The following should appear as music without code -@lilypond[quote,ragged-right] -\new Staff \relative c'' { - \key aes \major - << % Voice one - { c2 aes4. bes8 } - \\ % Voice two - { aes2 f4 fes } - \\ % No voice three - \\ % Voice four - { - % Ignore these for now - they are explained in Ch 4 - \once \override NoteColumn #'force-hshift = #0 - 2 - \once \override NoteColumn #'force-hshift = #0.5 - des2 - } - >> | - 1 | -} -@end lilypond - -La direction des hampes sert souvent à indiquer dans la continuité deux -lignes mélodiques simultanées. Ici, les hampes des notes les plus -hautes vont vers le haut, et celles des notes plus basses vers le -bas. C'est une première indication que nous avons eu recours à plus -d'une voix. - -Mais le réel besoin de multiples voix se fait sentir dès lors que -plusieurs notes qui débutent en même temps ont des durées différentes. -C'est évident au troisième temps de la première mesure : le la bémol est -une noire pointée, le fa une noire, et le ré bémol une blanche. On ne -peut les grouper dans un accord, puisque toutes les notes composant un -accord doivent être de même durée. On ne peut non plus les écrire -séquentiellement, puisqu'elles débutent toutes au même instant. Ce -fragment de mesure nécessite trois voix, et une bonne pratique voudrait -que l'intégralité de la mesure soit sur trois voix, comme ci-dessous où -nous avons une allure et une couleur différentes aux notes de chacune -d'entre elles. Une fois de plus, nous reviendrons plus tard sur le code -que vous ne comprendriez pas. - -@c The following should appear as music without code -@c The three voice styles should be defined in -init -@lilypond[quote,ragged-right] -\new Staff \relative c'' { - \key aes \major - << - { % Voice one - \voiceOneStyle - c2 aes4. bes8 - } - \\ % Voice two - { \voiceTwoStyle - aes2 f4 fes - } - \\ % 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 - 2 - \once \override NoteColumn #'force-hshift = #0.5 - des2 - } - >> | - 1 | -} -@end lilypond - -Essayons à présent de coder cette musique en partant de zéro. Comme -nous le verrons, certaines difficultés vont se présenter. Partons de ce -que nous avons appris : utilisons la construction @code{<< \\ >>} pour -saisir la première mesure dans trois voix : - -@lilypond[quote,verbatim,fragment,ragged-right] -\new Staff \relative c'' { - \key aes \major - << - { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { 2 des2 } - >> - 1 -} -@end lilypond - -@cindex stem down -@cindex hampes en bas -@cindex stem up -@cindex hampes en haut - -La direction des hampes est attribuée automatiquement : les voix -impaires portent des hampes vers le haut, les voix paires des hampes -vers le bas. Les hampes des voix 1 et 2 sont orientées comme il faut -mais celles de la voix 3 devraient, dans le cas qui nous occupe, aller -vers le bas. Nous pouvons corriger cela en sautant la voix 3 et en -plaçant la musique dans la voix 4 : - -@lilypond[quote,verbatim,fragment,ragged-right] -\new Staff \relative c'' { - \key aes \major - << % Voice one - { c2 aes4. bes8 } - \\ % Voice two - { aes2 f4 fes } - \\ % Omit Voice three - \\ % Voice four - { 2 des2 } - >> | - 1 | -} -@end lilypond - -@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 ; 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 -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{Fixing overlapping notation}). - - -@seealso -Manuel de notation : @ruser{Multiple voices}. - - -@node Explicitly instantiating voices -@subsection Explicitly instantiating voices - -@funindex \voiceOne -@funindex voiceOne -@funindex \voiceTwo -@funindex voiceTwo -@funindex \voiceThree -@funindex voiceThree -@funindex \voiceFour -@funindex voiceFour -@funindex \oneVoice -@funindex oneVoice -@funindex \new Voice -@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 -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 -plus importantes puisqu'elle permet de bien séparer les voix et de leur -affecter un nom plus parlant. - -En particulier, la construction @code{<< \\ >>} que nous avons vue -précédemment : - -@example -\new Staff @{ - \relative c' @{ - << @{ e4 f g a @} \\ @{ c,4 d e f @} >> - @} -@} -@end example - -@noindent -équivaut à - -@example -\new Staff << - \new Voice = "1" @{ \voiceOne \relative c' @{ e4 f g a @} @} - \new Voice = "2" @{ \voiceTwo \relative c' @{ c4 d e f @} @} ->> -@end example - -Toutes deux produiront - -@c The following example should not display the code -@lilypond[ragged-right,quote] -\new Staff << - \new Voice = "1" { \voiceOne \relative c' { e4 f g a } } - \new Voice = "2" { \voiceTwo \relative c' { c4 d e f } } ->> -@end lilypond - -@cindex Voice, retour à un seul contexte -@cindex retour à un contexte Voice unique - -Les commandes @code{\voiceXXX} fixent la direction des hampes, des -liaisons de prolongation et de phrasé, des articulations, des -annotations, des points d'augmentation des notes pointées et des -doigtés. @code{\voiceOne} et @code{\voiceThree} font pointer ces objets -vers le haut, alors que @code{\voiceTwo} et @code{\voiceFour} les font -pointer vers le bas. Ces commandes génèrent par ailleurs un décalage -horizontal de chacune des voix pour éviter tout risque de chevauchement -entre plusieurs notes. La commande @code{\oneVoice} les ramène aux -critères normaux. - -Voyons, à l'aide de ces exemples simples, les effets respectifs de -@code{\oneVoice}, @code{\voiceOne} et @code{\voiceTwo} sur les -annotations, liaisons de prolongation ou de phrasé, et sur les nuances. - -@lilypond[quote,ragged-right,verbatim] -\relative c'{ - % Default behavior or behavior after \oneVoice - c d8 ~ d e4 ( f g a ) b-> c -} -@end lilypond - -@lilypond[quote,ragged-right,verbatim] -\relative c'{ - \voiceOne - c d8 ~ d e4 ( f g a ) b-> c - \oneVoice - c, d8 ~ d e4 ( f g a ) b-> c -} -@end lilypond - -@lilypond[quote,ragged-right,verbatim] -\relative c'{ - \voiceTwo - c d8 ~ d e4 ( f g a ) b-> c - \oneVoice - c, d8 ~ d e4 ( f g 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 -d'elles aura ses avantages selon les circonstances. - -Une expression séquentielle qui apparaît en premier dans un @code{<< >>} --- attention, @strong{pas} dans une construction @code{<< \\ >>} -- -appartient à la voix principale. Ceci est utile lorsque des voix -supplémentaires apparaissent pendant que la voix principale est jouée. -Voici une meilleure réalisation de notre exemple. -Les notes colorées et en croix mettent en évidence le fait que la -mélodie principale est maintenant dans un seul contexte de voix, ce qui -permet d'ajouter une liaison de phrasé à l'ensemble. - -@lilypond[quote,ragged-right,verbatim] -\new Staff \relative c' { - \voiceOneStyle - % The following notes are monophonic - c16^( d e f - % Start simultaneous section of three voices - << - % Continue the main voice in parallel - { g4 f e | d2 e2) } - % Initiate second voice - \new Voice { - % Set stems, etc, down - \voiceTwo - r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2 - } - % Initiate third voice - \new Voice { - % Set stems, etc, up - \voiceThree - s2. | s4 b4 c2 - } - >> -} -@end lilypond - -@cindex imbrication d'expressions musicales -@cindex imbrication de constructions simultanées - -@cindex voix temporaires -@cindex voix, imbrication - - -Dans certaines circonstances de polyphonie complexe, vous pourrez être -amené à recourir à une voix temporaire, ce qui peut être une manière -plus naturelle de saisir la musique : - -@lilypond[quote,ragged-right,verbatim] -\new Staff \relative c' { - c16^( d e f - << - { g4 f e | d2 e2) } - \new Voice { - \voiceTwo - r8 e4 d c8 ~ | - << - {c8 b16 a b8 g ~ g2} - \new Voice { - \voiceThree - s4 b4 c2 - } - >> - } - >> -} -@end lilypond - -@cindex espacement des notes - -Cette manière de brièvement imbriquer des voix est bien utile pour de -courts fragments de musique polyphonique. Mais lorsqu'une portée est -très souvent polyphonique, on peut y gagner en clarté si l'on utilise -plusieurs voix sur l'ensemble de cette portée et que l'on positionne des -silences invisibles pour sauter les moments où il n'y a rien dans cette -voix. - -@lilypond[quote,ragged-right,verbatim] -\new Staff \relative c' << - % Initiate first voice - \new Voice { - \voiceOne - c16^( d e f g4 f e | d2 e2) | - } - % Initiate second voice - \new Voice { - % Set stems, etc, down - \voiceTwo - s4 r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2 | - } - % Initiate third voice - \new Voice { - % Set stems, etc, up - \voiceThree - s1 | s4 b4 c2 | - } ->> -@end lilypond - -@subsubheading Note columns - -@cindex note column -@cindex empilement de notes -@cindex collisions de notes -@cindex shift, commandes -@cindex décalage, commandes -@funindex \shiftOff -@funindex shiftOff -@funindex \shiftOn -@funindex shiftOn -@funindex \shiftOnn -@funindex shiftOnn -@funindex \shiftOnnn -@funindex shiftOnnn - -Les notes rapprochées d'un accord, ou des notes de différentes voix qui -tombent ensemble, seront rangées sur deux colonnes, voire plus, pour -palier d'éventuels chevauchements des têtes. On appelle cela des -empilements de notes. Chaque voix dispose de plusieurs empilements, et -l'attribution d'un décalage à une voix en particulier s'appliquera à -l'empilement en question s'il y avait risque de collision. -Nous en avons une illustration à la deuxième mesure de l'exemple -ci-dessus : le do de la deuxième voix est décalé à droite du ré de la -première voix et, dans l'accord final, le do de la troisième voix est -lui aussi décalé à droite des autres notes. - -Les commandes @code{\shiftOn}, @code{\shiftOnn}, @code{\shiftOnnn}, et -@code{\shiftOff} spécifient le degré nécessaire de décalage qui sera -appliqué aux notes ou accords de la voix en question afin d'éviter une -collision. Par défaut, les voix extérieures -- normalement les -première et deuxième -- se verront attribuer @code{\shiftOff}, alors que -les voix intérieures -- trois et quatre -- se verront attribuer -@code{\shiftOn}. Lorsqu'un décalage s'applique, les voix un et trois -iront vers la droite, et les voix deux et quatre vers la gauche. - -@code{\shiftOnn} et @code{\shiftOnnn} définissent des degrés augmentés -de décalage auquel on peut devoir temporairement recourir dans des -situations complexes -- voir @ref{Real music example}. - -Un empilement peut ne contenir qu'une note ou un accord dans une voix -aux hampes vers le haut, et une note ou un accord dans une voix -aux hampes vers le bas. Dans le cas où des notes, issues de deux voix -ayant toutes deux des hampes dans la même direction, se retrouvent au -même moment et qu'aucun décalage n'a été spécifié ou qu'ils sont -identiques, LilyPond vous le signalera par le message @qq{Trop -d'empilements en conflit}. - - -@seealso -Manuel de notation : @ruser{Multiple voices}. - - -@node Voices and vocals -@subsection Voices and vocals - -La musique vocale est une gageure en soi : il nous faut combiner deux -expressions différentes -- des notes et des paroles. - -@funindex \new Lyrics -@funindex \lyricsto -@funindex lyricsto -@funindex Lyrics -@cindex Lyrics, création d'un contexte -@cindex paroles, affectation à une voix - -Nous avons déjà abordé la commande @code{\addlyrics}, qui permet de -gérer des partitions simples. Cette technique est cependant -relativement limitée. Pour de la musique un peu plus compliquée, il -vous faudra contenir les paroles dans un contexte @code{Lyrics}, créé -par la commande @code{\new Lyrics} ; vous relierez ensuite ces paroles -aux notes grâce à la commande @code{\lyricsto@{@}} et au nom assigné à -la voix en question. - -@lilypond[quote,verbatim,fragment] -<< - \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. - } ->> -@end lilypond - -Notez bien que les paroles sont liées à un contexte de voix -(@code{Voice}), @strong{non} à un contexte de portée (@code{Staff}). Il -est donc nécessaire de créer explicitement les contextes @code{Staff} -et @code{Voice}. - -@cindex paroles et ligatures -@cindex ligatures et paroles -@funindex \autoBeamOff -@funindex autoBeamOff - -Si la ligature automatique que LilyPond applique par défaut -est pleinement adaptée en matière de musique instrumentale, il -n'en va pas de même dans le cas d'une musique associée à des paroles, -et pour laquelle soit les ligatures sont carrément absentes, soit elles -servent à indiquer un mélisme -- plusieurs notes pour une même syllabe. -Dans l'exemple qui suit, nous utilisons la commande @code{\autoBeamOff} -afin de désactiver les ligatures automatiques. - -@funindex \new ChoirStaff -@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 -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} -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' } -SopOneLyrics = \lyricmode { - Let | flee -- cy flocks the | hills a -- dorn, __ } -SopTwoLyrics = \lyricmode { - Let | flee -- cy flocks the | hills a -- dorn, } - -\score { - \new ChoirStaff << - \new Staff << - \new Voice = "SopOne" { - \global - \SopOneMusic - } - \new Lyrics \lyricsto "SopOne" { - \SopOneLyrics - } - >> - \new Staff << - \new Voice = "SopTwo" { - \global - \SopTwoMusic - } - \new Lyrics \lyricsto "SopTwo" { - \SopTwoLyrics - } - >> - >> -} -@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. - -@cindex structure d'hymne -@cindex SATB, structure -@cindex partition vocale avec plusieurs couplets -@cindex couplets multiples et musique vocale - -Voici maintenant la première ligne d'une hymne pour chœur à quatre voix -mixtes, comportant quatre couplets. Les paroles sont ici identiques -pour les quatre voix. Vous remarquerez le recours aux variables afin de -séparer de la structure de portée les notes et les paroles. Vous -noterez aussi une variable particulière, que nous avons appelée -@qq{MetriqueArmure}, 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 } - -\score { - \new ChoirStaff << - \new Staff << - \clef "treble" - \new Voice = "Sop" { \voiceOne \TimeKey \SopMusic } - \new Voice = "Alto" { \voiceTwo \AltoMusic } - \new Lyrics \lyricsto "Sop" { \VerseOne } - \new Lyrics \lyricsto "Sop" { \VerseTwo } - \new Lyrics \lyricsto "Sop" { \VerseThree } - \new Lyrics \lyricsto "Sop" { \VerseFour } - >> - \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 ; 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 : - -@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 refrainA, sur la même portée, alors même qu'une -deuxième portée s'amorce en parallèle pour contenir 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 : - -@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 : - -@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 - } - >> - >> -} -@end lilypond - - -@seealso -Manuel de notation : @ruser{Vocal music}. - - -@node Contexts and engravers -@section Contexts and engravers - -Nous avons évoqué rapidement les contextes et graveurs dans les chapitres -précédents ; examinons en détail ces concepts essentiels à la -maîtrise de LilyPond. - -@menu -* Contexts explained:: -* Creating contexts:: -* Engravers explained:: -* Modifying context properties:: -* Adding and removing engravers:: -@end menu - -@node Contexts explained -@subsection Contexts explained - -@cindex contextes, les différents - -Imprimer de la musique impose d'ajouter un certain nombre d'éléments de -notation. Par exemple, voici un fragment de partition, précédé du code -qui l'engendre : - -@lilypond[quote,verbatim,relative=2,fragment] -cis4 cis2. g4 -@end lilypond - -Si le code est assez austère, dans la partition ont été ajoutés un -chiffre de mesure, des barres de mesure, des altérations et une clé. -Pour une bonne raison : LilyPond @emph{interprète} le code. Il le -compulse dans l'ordre chronologique, de même qu'on lit une partition de -gauche à droite ; et pendant ce traitement, le logiciel garde en -mémoire les limites des mesures, ou encore quelles hauteurs de note -demandent des altérations accidentelles. Ces informations se présentent -à plusieurs niveaux : ainsi, une altération n'a d'effet que sur une -seule portée, tandis qu'une barre de mesure doit être synchronisée sur -toute l'étendue verticale de la partition. - -LilyPond regroupe ces règles et ces fragments d'information dans des -@emph{Contextes}. Certains contextes sont les voix (contexte @code{Voice}), -les portées (contexte @code{Staff}), ou la partition dans son ensemble -(contexte @code{Score}). Ils sont ordonnés hiérarchiquement : ainsi un -contexte @code{Staff} peut contenir plusieurs contextes -@code{Voice}, et un contexte @code{Score} peut contenir plusieurs -contextes @code{Staff}. - -@quotation -@image{context-example,5cm,,} -@end quotation - -Chaque contexte est chargé de faire appliquer certaines règles de gravure, -de créer certains objets, et de prendre en compte les propriétés qui leur -sont associées. Ainsi, le contexte @code{Voice} peut faire intervenir une -altération accidentelle, puis le contexte @code{Staff} devra déterminer s'il -faudra imprimer ou non cette dernière dans la suite de la mesure. - -Les barres de mesure, quant à elles, sont alignées verticalement grâce au -contexte @code{Score} par défaut. -En revanche, dans une musique polymétrique, par exemple mêlant une -portée à 3/4 et une autre à 4/4, les barres de mesures n'ont plus à être -alignées : il faut alors modifier les comportement par défaut des -contextes @code{Score} et @code{Staff}. - -Dans une partition très simple, les contextes sont créés implicitement -et peuvent être ignorés. Mais lorsqu'il s'agit de morceaux plus amples --- entendons par là tout ce qui s'écrit sur plus d'une portée -- il faut -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. - -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. - -Le nom de chacun des contextes est formé d'un ou plusieurs mots aux -initiales en majuscule et directement accolés les uns aux autres sans -ponctuation, comme par exemple @code{GregorianTranscriptionStaff}. - - -@seealso -Manuel de notation : @ruser{Contexts explained}. - - -@node Creating contexts -@subsection Creating contexts - -@funindex \new -@funindex new -@cindex nouveaux contextes -@cindex Contextes, création de - -Il en va des contextes comme de toute hiérarchie : il faut un sommet -- -le contexte @code{Score} en l'occurence. La commande @code{\score} est -chargée de le créer, mais pour des partitions simples, il le sera -automatiquement. - -Lorsqu'une partition ne comporte qu'une voix et une seule portée, vous -pouvez laisser LilyPond créer automatiquement les contextes @code{Voice} -et @code{Staff} ; mais leur présence explicite devient indispenssable dès -que la situation se complique. -Le moyen le plus simple est d'utiliser la commande @code{\new}. Elle -doit intervenir avant une expression musicale, ainsi : - -@example -\new @var{type} @var{expression-musicale} -@end example - -@noindent -où @var{type} correspond au nom du contexte (tels @code{Staff} ou -@code{Voice}). Cette commande crée un nouveau contexte, puis -interprète l'@var{expression-musicale} contenue dans ledit -contexte. - -Notez bien qu'il n'existe pas de commande @code{\new Score}, puisque le -contexte premier que constitue @code{Score} est créé par @code{\score}. - -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 -besoin. Dans un but didactique, voici maintenant une application -complète et largement commentée : - -@lilypond[quote,verbatim,ragged-right] -\score { % start of single compound music expression - << % start of simultaneous staves section - \time 2/4 - \new Staff { % create RH staff - \key g \minor - \clef "treble" - \new Voice { % create voice for RH notes - \relative c'' { % start of RH notes - d4 ees16 c8. | - d4 ees16 c8. | - } % end of RH notes - } % end of RH voice - } % end of RH staff - \new Staff << % create LH staff; needs two simultaneous voices - \key g \minor - \clef "bass" - \new Voice { % create LH voice one - \voiceOne - \relative g { % start of LH voice one notes - g8 ees, | - g8 ees, | - } % end of LH voice one notes - } % end of LH voice one - \new Voice { % create LH voice two - \voiceTwo - \relative g { % start of LH voice two notes - g4 ees | - g4 ees | - } % end of LH voice two notes - } % end of LH voice two - >> % end of LH staff - >> % end of simultaneous staves section -} % end of single compound music expression -@end lilypond - -Notez que toute déclaration qui ouvre un bloc par une -accolade, @code{@{}, ou un double chevron gauche, @code{<<}, est -indentée de deux espaces supplémentaires, et de deux autres pour sa -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 -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 a -qu'une voix -- bornée par des accolades simples. - -@cindex contexte, noms de -@cindex nommage des contextes - -La commande @code{\new} peut aussi permettre de nommer le contexte créé, -et ainsi le distinguer des autres contextes déjà existants : - -@example -\new @var{type} = @var{"UnNom"} @var{expression-musicale} -@end example - -Vous noterez la distinction entre le nom du type de contexte, -@code{Staff}, @code{Voice}, etc, et le nom -- une simple suite de -lettres au bon gré de l'utilisateur -- permettant d'identifier une -instance particulière du type en question. Vous pouvez utiliser des -chiffres et espaces, à la stricte condition d'englober le tout dans des -guillemets ; l'identificateur suivant est tout à fait valide : -@code{\new Staff = "MaPortee 1" @var{expression-musicale}}. -Comme nous l'avons déjà vu dans le chapitre consacré aux paroles -(@ref{Voices and vocals}), cet identifiant permettra ensuite de se -référer à ce contexte particulier. - - -@seealso -Manuel de notation : @ruser{Creating contexts}. - - -@node Engravers explained -@subsection Engravers explained - -@cindex engravers -@cindex graveurs - -Tout point qui compose une partition générée par LilyPond est -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 ! 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. - -Les graveurs résident et opèrent au sein des contextes. -Les graveurs tels que le @code{Metronome_mark_engraver}, dont les effets -s'appliquent à la partition dans son intégralité, opèrent au sein du -contexte de plus haut niveau -- le contexte @code{Score}. - -Les graveurs @code{Clef_engraver} et @code{Key_engraver} seront logés -dans chacun des contextes @code{Staff} ; deux portées peuvent requérir -des clefs et des armures différentes. - -Les graveurs @code{Note_heads_engraver} et @code{Stem_engraver} résident -dans chacun des contextes @code{Voice}, contexte du plus bas niveau. - -Chaque graveur confectionne les objets spécifiquement associés à sa -fonction et traite les propriétés attachées à cette fonction. Ces -propriétés, tout comme celles relatives aux contextes, peuvent être -modifiées afin d'influencer le comportement du graveur et par voie de -conséquence le rendu des éléments dont il a la charge. - -Les graveurs ont tous un nom composé, formé des différents mots -décrivant leur fonction. Seule l'initiale du premier mot est en -majuscule, et les mots qui le composent sont joints par un caractère -souligné. Ainsi, le @code{Staff_symbol_engraver} est chargé de créer -les lignes de la portée, et le @code{Clef_engraver} détermine la hauteur -de référence de la portée en dessinant le symbole de la clef. - -Voici quelques-uns des graveurs les plus courants, ainsi que leur -fonction. Vous noterez qu'il est facile d'en connaître la fonction à -partir du nom, et vice versa. - -@multitable @columnfractions .3 .7 -@headitem Graveur - @tab Fonction -@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 -@item Clef_engraver - @tab Grave les clefs -@item Completion_heads_engraver - @tab Divise les notes qui dépassent de la mesure -@item 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 -@item Key_engraver - @tab Crée l'armure -@item Metronome_mark_engraver - @tab Grave les indications métronomiques -@item Note_heads_engraver - @tab Grave les têtes de note -@item Rest_engraver - @tab Grave les silences -@item Staff_symbol_engraver - @tab Grave les cinq lignes (par défaut) de la portée -@item Stem_engraver - @tab Crée les hampes et les trémolos sur une hampe unique -@item Time_signature_engraver - @tab Crée les métriques -@end multitable - -@smallspace - -Nous verrons plus avant comment le résultat de LilyPond peut changer -lorsqu'on modifie l'action des graveurs. - - -@seealso -Références internes : @rinternals{Engravers and Performers}. - - -@node Modifying context properties -@subsection Modifying context properties - -@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 -@funindex unset - -Les contextes gèrent les différentes valeurs des nombreuses -@emph{propriétés} qui leur sont attachées. Beaucoup d'entre elles -sont susceptibles d'être modifiées afin d'influer sur l'interprétation -de l'input et ainsi changer l'apparence du résultat. On les modifie -grâce à la commande @code{\set}, qui s'utilise ainsi : - -@example -\set @emph{ContexteNommé}.@emph{propriétéNommée} = #@emph{valeur} -@end example - -où @emph{ContexteNommé} est habituellement @code{Score}, -@code{Staff} ou @code{Voice}. S'il n'est pas mentionné, il sera -considéré comme étant @code{Voice}. - -Les noms des propriétés de contexte sont composés de mots accolés sans -trait d'union ni caractère souligné, et dont seul le premier n'aura pas -d'initiale en majuscule. Voici quelques exemples de celles les plus -communément utilisées. - -@c attempt to force this onto a new page -@need 50 -@multitable @columnfractions .25 .15 .45 .15 -@headitem propriétéNommée - @tab Type - @tab Fonction - @tab Exemple de valeur -@item extraNatural - @tab Booléen - @tab Si vrai, ajoute un bécarre avant une altération accidentelle - @tab @code{#t}, @code{#f} -@item currentBarNumber - @tab Entier - @tab Détermine le numéro de la mesure en cours - @tab @code{50} -@item doubleSlurs - @tab Booléen - @tab Si vrai, imprime les liaisons au-dessous @strong{et} au-dessus des notes - @tab @code{#t}, @code{#f} -@item instrumentName - @tab Texte - @tab Détermine le nom à afficher en début de portée - @tab @code{"Cello I"} -@item fontSize - @tab Réel - @tab Augmente ou diminue la taille de la fonte - @tab @code{2.4} -@item stanza - @tab Texte - @tab Détermine le texte à imprimer avant le début d'un couplet - @tab @code{"2"} -@end multitable - -@noindent -où un bolé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 en 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 : ils sont partie intégrante des -valeurs bolé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 oublier de -saisir deux signes dièse -- par exemple @code{##t}. - -@cindex propriétés et contextes -@cindex réglage de propriétés au sein des contextes - -Avant de déterminer l'une de ces propriétés, nous devons savoir dans -quel contexte elle intervient. Si cela est bien souvent évident, il -peut arriver que cela tourne au cauchemar. Lorsque vous ne spécifiez -pas le bon contexte, aucun message d'erreur ne s'affiche et l'effet -attendu n'est pas au rendez-vous. Par exemple, le @code{instrumentName} -est de manière incontestable membre du contexte @code{Staff}, puisque -c'est bien la portée que l'on va nommer. -Dans l'exemple suivant, la première portée affiche effectivement un nom, -alors que ce n'est pas le cas pour la deuxième dans la mesure où le -contexte n'a pas été spécifié. - -@lilypond[quote,verbatim,ragged-right] -<< - \new Staff \relative c'' { - \set Staff.instrumentName = #"Soprano" - c4 c - } - \new Staff \relative c' { - \set instrumentName = #"Alto" % Wrong! - d4 d - } ->> -@end lilypond - -Dans la mesure où le nom de contexte par défaut est @code{Voice}, la -deuxième commande @code{\set} a défini @qq{Alto} comme propriété -@code{instrumentName} du contexte de voix. Puisque LilyPond n'ira pas -chercher une telle propriété dans la contexte @code{Voice}, celle-ci ne -sera pas interprétée. Il ne s'agit pas d'une erreur, aucun message -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 -pas. Vous pourriez déterminer par la commande @code{\set} n'importe -quelle @q{propriété}, même fictive, à partir de n'importe quel nom et -dans n'importe lequel des contextes disponibles. Mais tant que ce nom -est inconnu de LilyPond, rien ne se passera. Certains éditeurs de texte -disposent d'une prise en charge spécifique aux fichiers source LilyPond, -à l'instar de LilyPondTool couplé à JEdit et qui documente les noms des -propriétés dans une infobulle lorsque vous les survolez à la souris, ou -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 -@rinternals{Tunable context properties}, ou @rinternals{Contexts}. - -La propriété @code{instrumentName} ne sera prise en compte que si elle -est définie dans un contexte @code{Staff} ; d'autres propriétés peuvent -par contre être définies dans plusieurs contextes différents. C'est le -cas de la propriété @code{extraNatural} qui est définie par défaut à ##t -(vrai) pour toutes les portées. Si vous lui attribuez la valeur ##f -(faux) dans un contexte @code{Staff} particulier, elle ne s'appliquera -qu'aux altérations de la portée en question ; si vous lui attribuez la -valeur @q{faux} au niveau du contexte @code{Score}, cela s'appliquera -alors à toutes les portées. - -Voici comment supprimer les bécarres supplémentaires pour une portée : - -@lilypond[quote,verbatim,ragged-right] -<< - \new Staff \relative c'' { - ais4 aes - } - \new Staff \relative c'' { - \set Staff.extraNatural = ##f - ais4 aes - } ->> -@end lilypond - -@noindent -et pour toutes les portées : - -@lilypond[quote,verbatim,ragged-right] -<< - \new Staff \relative c'' { - ais4 aes - } - \new Staff \relative c'' { - \set Score.extraNatural = ##f - ais4 aes - } ->> -@end lilypond - -Autre exemple, si la propriété @code{clefOctavation} est déterminée au -niveau du contexte @code{Score}, elle modifiera la valeur de l'octave en -cours pour toutes les portées actives ; cette valeur sera considérée -comme étant la nouvelle valeur par défaut pour toutes les portées à -venir. - -La commande opposée, @code{\unset}, efface la propriété du contexte ; la -plupart des propriétés reviennent de ce fait à leur valeur par défaut. -En règle générale, la commande @code{\unset} n'est pas nécessaire dès -lors que vous faites appel à une nouvelle commande @code{\set} pour -modifier le réglage. - -Les commandes @code{\set} et @code{\unset} peuvent intervenir n'importe -où dans votre fichier source. Elles seront effectives dès leur -apparition et jusqu'à la fin de la partition, à moins d'être affectées -par un @code{\unset} ou un nouveau @code{\set}. À titre d'exemple, nous -allons jouer avec la taille des fontes, ce qui affecte entre -autres la grosseur des têtes de note. Les modifications s'appliquent -toujours par rapport à la valeur par défaut, non par rapport à la -dernière valeur. - -@lilypond[quote,verbatim,ragged-right,relative=1,fragment] -c4 -% make note heads smaller -\set fontSize = #-4 -d e -% make note heads larger -\set fontSize = #2.5 -f g -% return to default size -\unset fontSize -a b -@end lilypond - -Nous venons de voir comment déterminer la valeur de différents types de -propriété. N'oubliez pas que les nombres, entiers ou réels, doivent -être précédés d'un signe dièse (@code{#}) et les valeurs vrai ou faux de -deux signes dièse -- respectivement ##t et ##f --. Une valeur textuelle -doit être encadrée de guillemets anglais, @code{``@dots{ }''}, bien que, -comme nous le constaterons plus tard, la commande @code{\markup} permet -aussi de spécifier du texte. - -@unnumberedsubsubsec 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 -création de ce contexte. Ceci constitue parfois une façon plus claire -de spécifier les valeurs d'une propriété pour la durée de vie du -contexte. Lorsque vous créez un contexte à l'aide de la commande -@code{\new}, vous pouvez la faire suivre immédiatement d'un bloc -@code{\with @{ .. @}} qui contiendra les réglages des différentes -propriétés. Ainsi, si nous voulions par exemple annuler l'impression des -bécarres supplémentaires sur la durée d'une portée, nous écririons : - -@example -\new Staff \with @{ extraNatural = ##f @} -@end example - -@noindent -ce qui donnerait : - -@lilypond[quote,verbatim,ragged-right] -<< - \new Staff - \relative c'' { - gis ges aes ais - } - \new Staff \with { extraNatural = ##f } - \relative c'' { - gis ges aes ais - } ->> -@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} ; un @code{\unset} les ramènera à -leur valeur par défaut. - -@cindex fontSize, valeur par défaut et réglage - -La propriété @code{fontSize} constitue une exception : lorsqu'elle est -déterminée au sein d'un bloc @code{\with}, cela redéfinit la valeur par -défaut de la taille de fonte. Une modification est possible par la -commande @code{\set}, mais la commande @code{\unset fontSize} fera -revenir à la nouvelle valeur par défaut. - -@unnumberedsubsubsec Setting context properties with @code{\context} - -@cindex propriétés d'un contexte, définition avec \context -@funindex \context -@funindex context - -Vous pouvez régler les valeurs des propriétés de contexte en une seule -fois pour tous les contextes d'un même type, par exemple tous les -contextes @code{Staff}. Le type du contexte doit être donné -explicitement d'après son nom, par exemple @code{Staff}, précédé d'une -oblique inverse, donc nous saisirons @code{\Staff}. La manière de -régler la valeur des propriétés est la même que ce que nous avons vu -avec la commande @code{\with}, puisqu'on se place dans un bloc -@code{\context} inclus dans un bloc @code{\layout}. Chaque bloc -@code{\context} affectera tous les contextes concernés par le bloc -@code{\score} ou @code{\book} au sein duquel apparaît ce bloc -@code{\layout}. Voici comment le mettre en place : - -@lilypond[verbatim,quote] -\score { - \new Staff { - \relative c'' { - cis4 e d ces - } - } - \layout { - \context { - \Staff - extraNatural = ##t - } - } -} -@end lilypond - -@noindent -Les propriétés de contexte ainsi définies peuvent être adaptées pour -chacun des contextes en particulier grâce à un bloc @code{\with} ou bien -une commande @code{\set} au fil des notes. - - -@seealso -Manuel de notation : -@ruser{Changing context default settings}, -@c uncomment when backslash-node-name issue is resolved -pm -@c @ruser{The set command}. - -Références internes : -@rinternals{Contexts}, -@rinternals{Tunable context properties}. - - -@node Adding and removing engravers -@subsection Adding and removing engravers - -@cindex graveurs, ajout -@cindex graveurs, suppression - -@funindex \consists -@funindex consists -@funindex \remove -@funindex remove - -Nous avons vu que chaque contexte met en œuvre plusieurs graveurs, et -que chacun de ces graveurs est chargé de générer une composante -particulière du fichier de sortie, qui les barres de mesure, qui la -portée, qui les têtes de note, les hampes, etc. Le fait de supprimer un -graveur d'un contexte éliminera sa contribution au fichier de sortie. -Bien que ce soit là un moyen radical de modifier le résultat, cette -pratique est dans quelques cas fort utile. - -@subsubheading 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 -la section précédente. - -Illustrons notre propos en reprenant un exemple du chapitre précédent, -duquel nous supprimerons les lignes de la portée. Pour mémoire, les -lignes d'une portée sont générées par le @code{Staff_symbol_engraver}. - -@lilypond[quote,verbatim,ragged-right] -\new Staff \with { - \remove Staff_symbol_engraver -} -\relative c' { - c4 - \set fontSize = #-4 % make note heads smaller - d e - \set fontSize = #2.5 % make note heads larger - f g - \unset fontSize % return to default size - a b -} -@end lilypond - -@cindex ambitus, graveur - -Vous pouvez aussi ajouter individuellement un graveur à un contexte. La -commande se formule ainsi : - -@code{\consists @var{Nom_du_graveur}} - -et se place dans un bloc @code{\with}. Certaines partitions vocales -font apparaître un @rglos{ambitus} au début de la portée, afin -d'indiquer ses notes extrêmes. L'ambitus est généré par -l'@code{Ambitus_engraver}, que l'on peut adjoindre à n'importe quel -contexte. Si nous l'ajoutons au contexte @code{Voice}, seule la -tessiture de cette voix sera calculée : - -@lilypond[quote,verbatim,ragged-right] -\new Staff << - \new Voice \with { - \consists Ambitus_engraver - } - \relative c'' { - \voiceOne - c a b g - } - \new Voice - \relative c' { - \voiceTwo - c e d f - } ->> -@end lilypond - -@noindent -alors que si nous l'ajoutons au contexte @code{Staff}, -l'@code{Ambitus_engraver} calculera l'écart maximal à partir de toutes -les notes de toutes les voix de la portée : - -@lilypond[quote,verbatim,ragged-right] -\new Staff \with { - \consists Ambitus_engraver - } - << - \new Voice - \relative c'' { - \voiceOne - c a b g - } - \new Voice - \relative c' { - \voiceTwo - c e d f - } ->> -@end lilypond - -@subsubheading Changing all contexts of the same type - -@funindex \layout -@funindex layout - -Les exemples ci-dessus nous ont montré comment ajouter ou retirer des -graveurs à des contextes individuels. Nous pourrions aussi ajouter ou -supprimer des graveurs à tous les contextes d'un même type en insérant -les commandes pour le contexte approprié au sein d'un bloc -@code{\layout}. Si nous voulions afficher un ambitus pour chacune des -portées d'un système à quatre portées, il nous suffirait d'écrire : - -@lilypond[quote,verbatim,ragged-right] -\score { - << - \new Staff << - \relative c'' { c a b g } - >> - \new Staff << - \relative c' { c a b g } - >> - \new Staff << - \clef "G_8" - \relative c' { c a b g } - >> - \new Staff << - \clef "bass" - \relative c { c a b g } - >> - >> - \layout { - \context { - \Staff - \consists Ambitus_engraver - } - } -} -@end lilypond - -@noindent -Vous réglerez de la même manière les propriétés de tous les contextes -d'un type particulier si vous insérez les commandes @code{\set} dans un -bloc @code{\context}. - - -@seealso -Manuel de notation : @ruser{Modifying context plug-ins}, -@ruser{Changing context default settings}. - - -@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 @ref{Templates}, -c'est bien beau, mais que faire quand ils ne traitent pas ce que l'on -veut précisément ? - -Les exemples qui suivent vous donneront des méthodes générales pour -adapter des modèles. - -@menu -* Soprano and cello:: -* Four-part SATB vocal score:: -* Building a score from scratch:: -@end menu - -@node Soprano and cello -@subsection Soprano and cello - -@cindex modèles, modification des - -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, on pourrait commencer par les -@qq{notes et paroles}, pour la partie de soprano. - -@example -\version @w{"@version{}"} -melodie = \relative c' @{ - \clef treble - \key c \major - \time 4/4 - - a4 b c d -@} - -texte = \lyricmode @{ - Aaa Bee Cee Dee -@} - -\score@{ - << - \new Voice = "un" @{ - \autoBeamOff - \melodie - @} - \new Lyrics \lyricsto "un" \texte - >> - \layout @{ @} - \midi @{ @} -@} -@end example - -Maintenant, on veut ajouter une partie de violoncelle. -Jetons un coup d'œil sur l'exemple avec les notes seules : - -@example -\version @w{"@version{}"} -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 de 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{sopranoMusique} et celle pour le -violoncelle @code{violoncelleMusique}. Tant qu'on y est, renommons -@code{texte} en @code{sopranoParoles}. 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{melodie = 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 @w{"@version{}"} -sopranoMusique = \relative c' @{ - \clef treble - \key c \major - \time 4/4 - - a4 b c d -@} - -sopranoParoles = \lyricmode @{ - Laaa Siii Dooo Rééé -@} - -violoncelleMusique = \relative c @{ - \clef bass - \key c \major - \time 4/4 - - d4 g fis8 e d4 -@} - -\score@{ - << - \new Voice = "un" @{ - \autoBeamOff - \sopranoMusique - @} - \new Lyrics \lyricsto "un" \sopranoParoles - >> - \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 à - -@c Indentation in this example is deliberately poor -@example -\score @{ - << - << - \new Voice = "un" @{ - \autoBeamOff - \sopranoMusique - @} - \new Lyrics \lyricsto "un" \sopranoParoles - >> - \new Staff \violoncelleMusique - >> - \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,addversion] -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 - - -@seealso -Les patrons originaux sont disponibles à l'annexe @qq{Modèles}, voir -@ref{Single staff}. - - -@node Four-part SATB vocal score -@subsection Four-part SATB vocal score - -@cindex exemple, SATB -@cindex SATB, squelette - -La plupart des œuvres écrites pour chœur à quatre voix mixtes et -orchestre, comme Elias de Mendelssohn ou le Messie de Haendel, disposent -la musique et les paroles du chœur sur quatre portées -- soprano, alto, -ténor et basse -- surmontant une réduction pour piano de -l'accompagnement orchestral. En voici un exemple, tiré du Messie de -Haendel : - -@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 -} -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 - r4 2 4 | - 4. 8 2 | - 4 2 | -} -lower = \relative c, { - \clef "bass" - \global - 4 2 4 | - 4. 8 2 | - 4 2 | -} - -\score { - << % combine ChoirStaff and PianoStaff in parallel - \new ChoirStaff << - \new Staff = "sopranos" << - \set Staff.instrumentName = #"Soprano" - \new Voice = "sopranos" { \global \sopranoMusic } - >> - \new Lyrics \lyricsto "sopranos" { \sopranoWords } - \new Staff = "altos" << - \set Staff.instrumentName = #"Alto" - \new Voice = "altos" { \global \altoMusic } - >> - \new Lyrics \lyricsto "altos" { \altoWords } - \new Staff = "tenors" << - \set Staff.instrumentName = #"Tenor" - \new Voice = "tenors" { \global \tenorMusic } - >> - \new Lyrics \lyricsto "tenors" { \tenorWords } - \new Staff = "basses" << - \set Staff.instrumentName = #"Bass" - \new Voice = "basses" { \global \bassMusic } - >> - \new Lyrics \lyricsto "basses" { \bassWords } - >> % end ChoirStaff - - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" - \new Staff = "upper" \upper - \new Staff = "lower" \lower - >> - >> -} -@end lilypond - -Aucun des modèles ne permet d'arriver exactement à cette mise en forme. -Celui qui s'en rapprocherait le plus est @qq{SATB vocal score and -automatic piano reduction} -- voir @ref{Vocal ensembles} -- mais encore -faudrait-il en modifier la mise en forme et refaire la partie de -piano qui n'est plus une simple reprise des parties vocales. Les -variables qui gèrent la musique et les paroles du chœur ne nécessitent -pas de modification, mais il nous faut d'autres variables pour la -réduction de piano. - -L'ordre dans lequel apparaissent les contextes dans le @code{ChoirStaff} -du modèle ne correspond pas à ce que nous voyons ci-dessus. Il nous -faudra y revenir pour obtenir quatre portées avec des paroles en dessous -de chacune d'elles. Toutes les voix devraient être @code{\voiceOne}, -ce qui est la position par défaut ; 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 ; 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} : - -@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 -@end example - -Il nous faut maintenant nous occuper de la partie de piano. Nous allons -nous contenter de récupérer la partie de piano du modèle -@q{Solo piano} : - -@example -\new PianoStaff << - \set PianoStaff.instrumentName = #"Piano " - \new Staff = "upper" \superieur - \new Staff = "lower" \inferieur ->> -@end example - -puis d'ajouter les définitions de variable pour @code{superieur} et -@code{inferieur}. - -Les systèmes pour chœur et pour piano doivent être combinés à l'aide de -doubles chevrons gauche/droite puisqu'ils doivent s'empiler : - -@example -<< % combine ChoirStaff and PianoStaff one above the other - \new ChoirStaff << - \new Staff = "sopranos" << - \new Voice = "sopranos" @{ \global \sopranoMusique @} - >> - \new Lyrics \lyricsto "sopranos" @{ \sopranoParoless @} - \new Staff = "altos" << - \new Voice = "altos" @{ \global \altoMusique @} - >> - \new Lyrics \lyricsto "altos" @{ \altoParoles @} - \new Staff = "tenors" << - \clef "G_8" % tenor clef - \new Voice = "tenors" @{ \global \tenorMusique @} - >> - \new Lyrics \lyricsto "tenors" @{ \tenorParoles @} - \new Staff = "basses" << - \clef "bass" - \new Voice = "basses" @{ \global \bassesMusique @} - >> - \new Lyrics \lyricsto "basses" @{ \bassesParoles @} - >> % end ChoirStaff - - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano" - \new Staff = "upper" \superieur - \new Staff = "lower" \inferieur - >> ->> -@end example - -Une fois tout cela mis en place, et après avoir ajouté les notes et les -paroles de ces trois mesures du Messie, nous obtenons : - -@lilypond[quote,verbatim,ragged-right,addversion] -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 -} -altoMusic = \relative a' { - \clef "treble" - r4 a2 a4 | fis4. fis8 a2 | g4 fis fis2 | -} -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 - r4 2 4 | - 4. 8 2 | - 4 2 | -} -lower = \relative c, { - \clef "bass" - \global - 4 2 4 | - 4. 8 2 | - 4 2 | -} - -\score { - << % combine ChoirStaff and PianoStaff in parallel - \new ChoirStaff << - \new Staff = "sopranos" << - \set Staff.instrumentName = #"Soprano" - \new Voice = "sopranos" { \global \sopranoMusic } - >> - \new Lyrics \lyricsto "sopranos" { \sopranoWords } - \new Staff = "altos" << - \set Staff.instrumentName = #"Alto" - \new Voice = "altos" { \global \altoMusic } - >> - \new Lyrics \lyricsto "altos" { \altoWords } - \new Staff = "tenors" << - \set Staff.instrumentName = #"Tenor" - \new Voice = "tenors" { \global \tenorMusic } - >> - \new Lyrics \lyricsto "tenors" { \tenorWords } - \new Staff = "basses" << - \set Staff.instrumentName = #"Bass" - \new Voice = "basses" { \global \bassMusic } - >> - \new Lyrics \lyricsto "basses" { \bassWords } - >> % end ChoirStaff - - \new PianoStaff << - \set PianoStaff.instrumentName = #"Piano " - \new Staff = "upper" \upper - \new Staff = "lower" \lower - >> - >> -} -@end lilypond - - -@node Building a score from scratch -@subsection Building a score from scratch - -@cindex modèles, création -@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 -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 -particulièrement. Pour voir comment procéder, nous allons monter la -partition d'un prélude pour orgue. - -Nous débutons par une section d'en-tête ; nous y mettrons entre autres -le titre et le nom du compositeur. Puis viennent toutes les définitions -de toutes les variables. Nous terminons par le bloc @code{\score}. -Attelons-nous pour cette aventure, en gardant bien à l'esprit ce que -nous venons de dire ; nous nous occuperons des détails en temps voulu. - -Nous nous appuyons sur les deux premières mesures du prélude sur -@emph{Jesu, meine Freude}, écrit pour orgue avec pédalier. Vous pouvez -voir ces deux mesures au bas de cette page. La main droite comporte -deux voix, la main gauche et le pédalier une seule. Il nous faut donc -quatre définitions de musique, plus une qui contiendra la métrique et -l'armure : - -@example -\version @w{"@version{}"} -\header @{ - title = "Jesu, meine Freude" - composer = "J S Bach" -@} -MetriqueArmure = @{ \time 4/4 \key c \minor @} -ManuelUnVoixUnMusique = @{s1@} -ManuelUnVoixDeuxMusique = @{s1@} -ManuelDeuxMusique = @{s1@} -PedalierOrgueMusique = @{s1@} - -\score @{ -@} -@end example - -Pour l'instant, nous utilisons des silences invisibles, @code{s1}, en -lieu et place des notes réelles. On verra plus tard. - -Passons maintenant au bloc @code{\score} et à ce qu'il devrait contenir. -Nous y recopions simplement la structure des portées que nous voulons. -La musique pour orgue se présente généralement sous la forme de trois -portées, une pour chaque main et une pour le pédalier. Les portées du -manuel sont regroupées, nous utiliserons donc un @code{PianoStaff}. La -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 -@end example - -Il nous faut ajouter à cela une portée pour le pédalier. Elle se place -sous le système de piano, mais puisqu'elle doit rester synchrone avec -lui, nous utilisons des doubles chevrons pour les regrouper. -Négliger ceci nous renverrait une erreur, et personne n'est à l'abri de -cette faute ! Pour preuve, il vous suffit de copier l'exemple complet en -fin de chapitre, de supprimer ces @code{<<} et @code{>>}, et de le -compiler, pour voir de quoi il retourne. - -@example -<< % Système pianistique et portée de pédalier sont synchrones - \new PianoStaff << - \new Staff = "ManuelUn" << - \new Voice @{ \ManuelUnVoixUnMusique @} - \new Voice @{ \ManuelUnVoixDeuxMusique @} - >> % fin du contexte de portée ManuelUn - \new Staff = "ManualDeux" << - \new Voice @{ \ManuelDeuxMusique @} - >> % fin du contexte de portée ManuelDeux - >> % fin du contexte PianoStaff - \new Staff = "PedalierOrgue" << - \new Voice @{ \PedalierOrgueMusique @} - >> ->> -@end example - -La construction en simultané -- @code{<< .. >>} -- n'est pas strictement -obligatoire pour les portées manuel deux et pédalier, qui ne contiennent -chacune qu'une seule expression musicale ; mais cela ne mange pas de -pain, et c'est une bonne habitude que de toujours encadrer par des -doubles chevrons gauche/droite ce qui suit une commande @code{\new -Staff} au cas où il y aurait plusieurs voix. Il en va autrement pour -les contextes @code{Voice} : ils doivent être toujours suivis -d'accolades -- @code{@{ .. @}} -- au cas où vous auriez employé -plusieurs variables qui doivent intervenir consécutivement. - -Ajoutons donc cette structure au bloc @code{\score}, tout en fignolant -l'indentation. Nous en profitons pour ajouter les clés appropriées, -effectuer les réglages concernant les hampes et liaisons de la portée -supérieure grâce à @code{\voiceOne} et @code{\voiceTwo}, et mettre en -place la métrique et l'armure de chaque portée grâce à notre variable -@code{\MetriqueArmure}. - -@example -\score @{ - << % 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 - \clef "treble" - \new Voice @{ \voiceOne \ManuelUnVoixUnMusique @} - \new Voice @{ \voiceTwo \ManuelUnVoixDeuxMusique @} - >> % fin du contexte de la portée ManuelUn - \new Staff = "ManuelDeux" << - \TimeKey - \clef "bass" - \new Voice @{ \ManuelDeuxMusique @} - >> % fin du contexte de la portée ManuelDeux - >> % fin du contexte PianoStaff - \new Staff = "PedalierOrgue" << - \TimeKey - \clef "bass" - \new Voice @{ \PedalierOrgueMusique @} - >> % fin du contexte de la portée PedalOrgan - >> -@} % fin du contexte Score -@end example - -Nous en avons fini avec la structure. Toutes les partitions pour orgue -auront cette structure, même si le nombre de voix peut changer. Tout ce -qui nous reste à faire maintenant consiste à saisir la musique et à -regrouper toutes les parties. - -@lilypond[quote,verbatim,ragged-right,addversion] -\header { - title = "Jesu, meine Freude" - composer = "J S Bach" -} -TimeKey = { \time 4/4 \key c \minor } -ManualOneVoiceOneMusic = \relative g' { - g4 g f ees | d2 c2 | -} -ManualOneVoiceTwoMusic = \relative c' { - ees16 d ees8~ ees16 f ees d c8 d~ d c~ | - c 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 | -} -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 - \clef "treble" - \new Voice { \voiceOne \ManualOneVoiceOneMusic } - \new Voice { \voiceTwo \ManualOneVoiceTwoMusic } - >> % end ManualOne Staff context - \new Staff = "ManualTwo" << - \TimeKey - \clef "bass" - \new Voice { \ManualTwoMusic } - >> % end ManualTwo Staff context - >> % end PianoStaff context - \new Staff = "PedalOrgan" << - \TimeKey - \clef "bass" - \new Voice { \PedalOrganMusic } - >> % end PedalOrgan Staff context - >> -} % end Score context -@end lilypond - -