X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Ffr%2Fuser%2Fchanging-defaults.itely;h=4f7d8755c9aebbf42d7608689b2cbad5dbd9b220;hb=5c14a087ca6cbd665fd631452b7b1283ba0387c3;hp=51dcf0c3e3a3bcd5265827b840ab349fecda2c19;hpb=b2b17336b4cafb69057d8f1d0b7a72db21fefb25;p=lilypond.git diff --git a/Documentation/fr/user/changing-defaults.itely b/Documentation/fr/user/changing-defaults.itely index 51dcf0c3e3..4f7d8755c9 100644 --- a/Documentation/fr/user/changing-defaults.itely +++ b/Documentation/fr/user/changing-defaults.itely @@ -1,16 +1,20 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @c This file is part of ../user/lilypond.tely @ignore - Translation of GIT committish: da55a1ec3c4b8195efc910b0c986c27f244def85 + Translation of GIT committish: 76de7e168dbc9ffc7671d99663c5ce50dae42abb 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.11.61" + +@c Translators: Valentin Villenave +@c Translation checkers: Gilles Thibault + @node Changing defaults @chapter Changing defaults - LilyPond est conçu pour engendrer, par défaut, des partitions de la plus haute qualité. Cependant, on peut parfois avoir à modifier cette mise en page par défaut. Celle-ci est réglée par tout un ensemble de @@ -22,18 +26,19 @@ comment trouver le bon levier pour obtenir tel ou tel effet en particulier. @cindex Référence du programme Les moyens de contrôle des différents réglages sont décrits dans un document -à part entière, la +séparé, la @iftex référence du programme @end iftex @ifnottex @ref{Top,Référence du programme,,lilypond-internals}. @end ifnottex -Ce guide répertorie toutes les variables, fonctions et autre options que -LilyPond met à votre disposition. Il est consultable en ligne, au format HTML, +Ce guide répertorie toutes les variables, fonctions et autres options que +LilyPond met à votre disposition. Il est consultable @c leave the @uref as one long line. -@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,on@/-line}, -mais est également inclus dans la documentation fournie avec le logiciel. +@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,en@tie{}ligne}, +au format HTML, mais est également inclus dans la documentation +fournie avec le logiciel. Il est quatre domaines dans lesquels on peut modifier les réglages par défaut : @@ -52,7 +57,7 @@ notation -- par exemple, le fait d'attribuer un chiffre de mesure distinct à ch @item La mise en page, autrement dit les marges, l'espacement, la taille du papier ; tous ces facteurs -font l'objet des chapitres @ref{Non-musical notation} et @ref{Spacing issues}. +font l'objet des chapitres @ref{General input and output} et @ref{Spacing issues}. @end itemize En sous-main, LilyPond se sert du langage Scheme (un dérivé du LISP) comme @@ -60,589 +65,24 @@ infrastructure. Modifier les choix de mise en page revient à pénétrer dans les entrailles du programme, et de ce fait requiert l'emploi du Scheme. Les fragments de Scheme, dans un fichier @code{.ly}, sont introduits par le caractère @q{hash}, (@code{#}, improprement surnommé @q{dièse}).@footnote{Le -@ref{Scheme tutorial} fournit quelques notions de base pour saisir des nombres, +@rlearning{Scheme tutorial} fournit quelques notions de base pour saisir des nombres, des listes, des chaînes de caractères ou des symboles, en Scheme.} @menu -* Automatic notation:: * Interpretation contexts:: -* The \override command:: -@end menu - - -@node Automatic notation -@section Automatic notation - -Cette section s'intéresse à la manière dont les altérations accidentelles -et les ligatures sont automatiquement ajoutées. - -@menu -* Automatic accidentals:: -* Setting automatic beam behavior:: +* The override command:: @end menu -@node Automatic accidentals -@subsection Automatic accidentals -@cindex Altérations accidentelles automatiques - -Une fonction a été créée pour regrouper les règles suivant lesquelles -s'impriment les altérations. Elle s'invoque de la manière suivante : - -@funindex set-accidental-style -@example -#(set-accidental-style 'REGLE) -@end example - -@c TODO: check the context stuff below -@c -does it *really* work? -@c -the default contexts as specified in -@c scm/music-function.scm seem to be different -vv - -Cette fonction prend pour argument le nom de la règle d'altérations, -auquel peut s'ajouter, comme argument facultatif, le contexte -devant être affecté : - -@example -#(set-accidental-style 'REGLE #('CONTEXTE#)) -@end example - -Si aucun contexte n'est spécifié, le contexte @code{Staff} sera affecté ; -cependant on peut souhaiter l'appliquer au contexte @code{Voice} en lieu -et place. - -Les régles d'altérations suivantes sont possibles : - -@table @code -@item default -C'est la règle d'impression par défaut, qui se rapporte à l'usage -en vigueur au XVIIIème siècle : les altérations accidentelles sont valables toute -une mesure, et uniquement à leur propre octave. - - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - %#(set-accidental-style 'default) - \musicA } - \context Staff = "down"{ - %#(set-accidental-style 'default) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'default" }}} -} -@end lilypond - -@item voice -En principe, LilyPond se souvient de toutes les altérations présentes sur la -portée (contexte Staff). Avec cette règle, cependant, les altérations sont indépendantes -pour chacune des voix. - - -@example - \new Staff << - #(set-accidental-style 'voice) - @{ @dots{} @} - >> -@end example - -De ce fait, les altérations d'une voix sont ignorées dans les autres voix, -ce qui peut donner lieu à un résultat malencontreux. Dans l'exemple suivant, -il est difficile de dire si le deuxième @samp{la} est dièse ou naturel. - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'voice) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'voice) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'voice" }}} -} -@end lilypond - -La règle @code{voice} n'est à envisager que dans le cas de voix devant être lues par -des musiciens différents. S'il s'agit d'un @q{conducteur}, ou d'une portée destinée -à un seul musicien, il vaut mieux utiliser @code{modern} ou @code{modern-cautionary}. - - -@item modern -@funindex modern style accidentals -Cette règle est la plus courante au XXème siècle. Les altérations accidentelles -sont imprimées comme avec le style @code{default}, mais lorsque une note non-altérée -apparaît à une octave différente, ou bien dans la mesure suivante, des bécarres de précaution -sont ajoutés. Dans l'exemple suivant, notez ainsi les deux bécarres dans la -deuxième mesure de la main droite. - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'modern) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'modern) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'modern" }}} -} -@end lilypond - -@item @code{modern-cautionary} -@funindex modern-cautionary -Cette règle est équivalente à @code{modern}, mais les bécarres de précaution sont -imprimés de façon particulière : soit plus petits, soit (par défaut) entre parenthèses. -Il est possible de le définir au moyen de la propriété @code{cautionary-style} -pour l'objet @internalsref{AccidentalSuggestion}. - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'modern-cautionary) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'modern-cautionary) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'modern-cautionary" }}} -} -@end lilypond - -@funindex modern-voice -@item modern-voice -Cette règle sert aux altérations dans de la musique polyphonique destinée -autant à des musiciens différents qu'à quelqu'un qui lirait l'ensemble des voix. -Les altérations sont imprimées voix par voix, mais les autres voix, dans le même -contexte @internalsref{Staff}, en @emph{tiennent compte} cette fois. - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'modern-voice) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'modern-voice) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'modern-voice" }}} -} -@end lilypond - -@funindex modern-voice-cautionary -@item modern-voice-cautionary -Cette régle est similaire à la précédente, mais les altérations de précautions -(celles que n'aurait pas ajoutées @code{voice}), sont imprimées de façon -particulière. On retrouve donc toutes les altérations qu'imprimerait -@code{default}, mais certaines sont considérées comme étant @qq{de précaution}. - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'modern-voice-cautionary) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'modern-voice-cautionary) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'modern-voice-cautionary" }}} -} -@end lilypond - -@item piano -@funindex piano accidentals -Cette règle est adaptée aux contextes GrandStaff -- ce qui n'empêche pas de devoir la spécifier -pour chaque portée individuelle au sein du contexte GrandStaff. - -@example -\new GrandStaff @{ << - \new Staff = "up" @{ << - #(set-accidental-style 'piano) - @{ @dots{} @} - >> @} - \new Staff = "down"@{ << - #(set-accidental-style 'piano) - @{ @dots{} @} - >> @} ->> @} -@end example - -Cette règle est communément employée pour les partitions de piano au XXème siècle. -Très similaire à @code{modern} de par son comportement, elle s'en distingue en ce que -les altérations tiennent compte des autre portées du contexte @internalsref{GrandStaff} ou -@internalsref{PianoStaff}. - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'piano) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'piano) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'piano" }}} -} -@end lilypond - -@item piano-cautionary -@funindex #(set-accidental-style 'piano-cautionary) -Identique à @code{#(set-accidental-style 'piano)}, mais les altérations de précaution -sont imprimées différemment. - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'piano-cautionary) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'piano-cautionary) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'piano-cautionary" }}} -} -@end lilypond - -@item no-reset -@funindex no-reset accidental style -C'est la même règle que @code{default}, mais l'effet des altérations accidentelles -ne cesse jamais, même dans les mesures suivantes. -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'no-reset) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'no-reset) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'no-reset" }}} -} -@end lilypond - -@item forget -Tout le contraire de @code{no-reset}: l'effet des altérations cesse aussitôt, -et de ce fait, toutes les altérations, quelque soit leur place dans la mesure, sont -imprimées, en fonction de l'armure éventuelle. - -@lilypond[quote,ragged-right] -musicA = { << \relative { cis'8 fis, d'4 8 f bis4 | cis2. 4 | } \\ - \relative { ais'2 cis, | fis8 b a4 cis2 | } >> } - -musicB = { \clef bass \new Voice { \voiceTwo \relative { < fis, a cis>4 - \change Staff = up cis' \change Staff = down - \change Staff = up dis' | \change Staff = down 4 gis - 2 | } }} - -\score { - \new PianoStaff { - << \context Staff = "up" { - #(set-accidental-style 'forget) - \musicA } - \context Staff = "down"{ - #(set-accidental-style 'forget) - \musicB } >> } - \header { piece = \markup {\fill-line { \fontsize #3 "'forget" }}} -} -@end lilypond -@end table - - -@seealso - -Référence du programme : @internalsref{Accidental_engraver}, -@internalsref{Accidental}, @internalsref{AccidentalSuggestion} et @internalsref{AccidentalPlacement}. - - -@refbugs - -Les notes simultanées sont considérées comme des évènements séquentiels. -Ce qui implique que, dans un accord, les altérations accidentelles sont -imprimées comme si les notes de l'accords apparaissaient une par une, en fonction -de l'ordre dans lequels elles ont été saisies -- ce qui peut poser problème lorsqu'au -sein d'un accord certaines altérations dépendent les unes des autres. Ce problème -est à résoudre manuellement, en insérant des @code{!} et des @code{?} après les notes -concernées. - - -@node Setting automatic beam behavior -@subsection Setting automatic beam behavior - -@funindex autoBeamSettings -@funindex (end * * * *) -@funindex (begin * * * *) -@cindex ligatures automatiques, réglage -@cindex réglage des ligatures automatiques - -@c [TODO: use \applyContext] - -Dans les métriques courantes, les ligatures automatiques peuvent commencer -sur n'importe quelle note, mais ne peuvent se terminer qu'à certains points précis -dans la mesure : sur une pulsation, ou après toute durée spécifiée par les propriétés -nommées @code{autoBeamSettings}. Ces propriétés consistent en une liste de règles -relatives au début ou à la fin des ligatures. Par défaut, elles sont définies dans -le fichier -@file{scm/@/auto@/-beam@/.scm}. - -On peut ajouter à cette liste une nouvelle règle, au moyen de la commande -@example -#(override-auto-beam-setting '(extrémité p q n m) a b [contexte]) -@end example - -@itemize @bullet - -@item @code{extrémité} désigne le début (@code{begin}) ou la fin (@code{end}) de la ligature. - -@item @code{p/q} désigne la valeur rythmique de la note que l'on veut affecter, ou de la -plus brève des notes concernées. Si cette règle doit s'appliquer à toutes les ligatures, -remplacez @code{p} et @code{q} par des étoiles @qq{@code{*}}. - - -@item @code{n/m} est le chiffre de mesure dans lequel la règle doit s'appliquer. Si -celle-ci doit s'appliquer dans toutes les métriques, remplacez @code{n} et @code{m} -par des étoiles @qq{@code{*}}. - -@item @code{a/b} est l'emplacement, dans la mesure, auquel les ligatures doivent -débuter ou s'achever (suivant la valeur @q{extrémité} que nous venons de voir). - - -@item @code{contexte} est un argument facultatif, qui détermine le contexte dans lequel -la règle doit s'appliquer. Par défaut, il s'agit de @code{'Voice}. -@code{#(score-override-auto-beam-setting '(A B C D) E F)} équivaut à -@code{#(override-auto-beam-setting '(A B C D) E F 'Score)}. - -@end itemize - -Par exemple, si l'on veut que les ligatures s'achèvent toujours après la première noire : - - -@example -#(override-auto-beam-setting '(end * * * *) 1 4) -@end example - -On peut obliger une règle de ligatures à ne s'appliquer qu'à des groupes dont la note -la plus brève est d'une valeur précise : - -@lilypond[quote,fragment,ragged-right,verbatim,relative=2] -\time 2/4 -#(override-auto-beam-setting '(end 1 16 * *) 1 16) -a16 a a a a a a a | -a32 a a a a16 a a a a a | -#(override-auto-beam-setting '(end 1 32 * *) 1 16) -a32 a a a a16 a a a a a | -@end lilypond - -On peut obliger une règle de ligatures à ne s'appliquer que pour un chiffre de mesure -précis : - -@lilypond[quote,fragment,ragged-right,verbatim,relative=2] -\time 5/8 -#(override-auto-beam-setting '(end * * 5 8) 2 8) -c8 c d d d -\time 4/4 -e8 e f f e e d d -\time 5/8 -c8 c d d d -@end lilypond - -Enfin, on peut désactiver une règle de ligatures au moyen du réglage suivant : - -@example -#(revert-auto-beam-setting '(extrémité p q n m) a b [contexte]) -@end example - -@noindent -@code{extrémité}, @code{p}, @code{q}, @code{n}, @code{m}, @code{a}, @code{b} et @code{contexte} -étant les mêmes que plus haut. Il est même possible de désactiver des règles que l'on n'a pas -explicitement créées : les règles par défaut, qui se trouvent dans le fichier @file{scm/@/auto@/-beam@/.scm}. - - - -@lilypond[quote,fragment,ragged-right,verbatim,relative=2] -\time 4/4 -a16 a a a a a a a a a a a a a a a -#(revert-auto-beam-setting '(end 1 16 4 4) 1 4) -a16 a a a a a a a a a a a a a a a -@end lilypond - -La commande @code{revert-auto-beam-setting} requiert exactement les mêmes arguments -que la règle d'origine. En d'autres termes, les étoiles ne seront pas prises en compte ici. - -@c KEEP LY -@lilypond[quote,fragment,ragged-right,verbatim,relative=2] -\time 1/4 -#(override-auto-beam-setting '(end 1 16 1 4) 1 8) -a16 a a a -#(revert-auto-beam-setting '(end 1 16 * *) 1 8) % ceci ne désactive pas la règle ! -a a a a -#(revert-auto-beam-setting '(end 1 16 1 4) 1 8) % ceci marche -a a a a -@end lilypond - - - -@c TODO: old material -- not covered by above stuff, I think. -Si, dans une mesure à 5/4, l'on veut que les ligatures soient regroupées temps par temps, -il est nécessaire d'indiquer toutes les terminaisons de ligatures. -@example -#(override-auto-beam-setting '(end * * * *) 1 4 'Staff) -#(override-auto-beam-setting '(end * * * *) 1 2 'Staff) -#(override-auto-beam-setting '(end * * * *) 3 4 'Staff) -#(override-auto-beam-setting '(end * * * *) 5 4 'Staff) -@dots{} -@end example - -La même syntaxe peut servir à définir les points de départ des ligatures. -Dans l'exemple suivant, les ligatures automatiques ne peuvent se terminer -que sur une noire pointée. -@example -#(override-auto-beam-setting '(end * * * *) 3 8) -#(override-auto-beam-setting '(end * * * *) 1 2) -#(override-auto-beam-setting '(end * * * *) 7 8) -@end example -@c ???? Je n'y comprends rien --vv -Dans une mesure à 4/4, cela implique que les ligatures ne peuvent se terminer que sur -la troisième croche, ou sur le quatrième temps (après la valeur de deux fois trois croches). - -Si une ligature se fait de manière inattendue, pensez à vérifer les règles automatiques -dans le fichier @file{scm/@/auto@/-beam@/.scm} pour rechercher d'éventuels conflits, dans -la mesure ou les règles par défaut s'ajoutent à vos propres règles. Il est alors nécessaire -de désactiver toute règle par défaut conduisant à des ligatures indésirables. - -Ainsi, pour obtenir des ligatures en groupes de @code{(3 4 3 2)} notes, dans une mesure à 12/8, -il faudra préalablement utiliser : - -@example -%%% annulons les réglages par défaut relatifs à 12/8, dans scm/auto-beam.scm -#(revert-auto-beam-setting '(end * * 12 8) 3 8) -#(revert-auto-beam-setting '(end * * 12 8) 3 4) -#(revert-auto-beam-setting '(end * * 12 8) 9 8) - -%%% puis ajoutons nos propres règles -#(override-auto-beam-setting '(end 1 8 12 8) 3 8) -#(override-auto-beam-setting '(end 1 8 12 8) 7 8) -#(override-auto-beam-setting '(end 1 8 12 8) 10 8) -@end example - -@cindex ligatures automatiques -@cindex groupes de notes -@funindex autoBeaming -@cindex paroles - -Si des ligatures sont utilisées dans les paroles d'une chanson (pour indiquer des mélismes), -les ligatures automatiques doivent être désactivées, avec @code{\autoBeamOff}. - - -@refcommands - -@funindex \autoBeamOff -@code{\autoBeamOff}, -@funindex \autoBeamOn -@code{\autoBeamOn}. - -@commonprop - -Les groupes de notes reliées par les ligatures peuvent être spécifiés au moyen -de la propriété @code{beatGrouping}. - -@lilypond[quote,verbatim,relative=2,fragment,ragged-right] -\time 5/16 -\set beatGrouping = #'(2 3) -c8[^"(2+3)" c16 c8] -\set beatGrouping = #'(3 2) -c8[^"(3+2)" c16 c8] -@end lilypond - - -@refbugs - -Si une partition se termine alors qu'une ligature automatique est restée inachevée, -cette dernière ligature ne sera pas imprimée du tout. C'est également valable dans -le cas d'une musique polyphonique, saisie avec la syntaxe @code{<< @dots{} \\ @dots{} ->>}, où une voix se terminerait sans que la dernière ligature -soit achevée. @node Interpretation contexts @section Interpretation contexts -This section describes what contexts are, and how to modify them. +Cette section traite des contextes. @menu * Contexts explained:: -* Creating contexts:: -* Changing context properties on the fly:: +* The set command:: * Modifying context plug-ins:: * Layout tunings within contexts:: * Changing context default settings:: @@ -655,234 +95,41 @@ This section describes what contexts are, and how to modify them. @node Contexts explained @subsection Contexts explained -When music is printed, a lot of notational elements must be added to the -output. For example, compare the input and output of the following example: - -@lilypond[quote,verbatim,relative=2,fragment] -cis4 cis2. g4 -@end lilypond - -The input is rather sparse, but in the output, bar lines, accidentals, -clef, and time signature are added. LilyPond @emph{interprets} the -input. During this step, the musical information is inspected in time -order, similar to reading a score from left to right. While reading -the input, the program remembers where measure boundaries are, and which -pitches require explicit accidentals. This information can be presented on -several levels. For example, the effect of an accidental is limited -to a single staff, while a bar line must be synchronized across the -entire score. - -Within LilyPond, these rules and bits of information are grouped in -@emph{Contexts}. Some examples of contexts are @context{Voice}, -@context{Staff}, and @context{Score}. They are hierarchical, for -example: a @context{Staff} can contain many @context{Voice}s, and a -@context{Score} can contain many @context{Staff} contexts. - -@quotation -@image{context-example,5cm,,} -@end quotation - -Each context has the responsibility for enforcing some notation rules, -creating some notation objects and maintaining the associated -properties. For example, the @context{Voice} context may introduce an -accidental and then the @context{Staff} context maintains the rule to -show or suppress the accidental for the remainder of the measure. The -synchronization of bar lines is handled at @context{Score} context. - -However, in some music we may not want the bar lines to be -synchronized -- consider a polymetric score in 4/4 and 3/4 time. In -such cases, we must modify the default settings of the @context{Score} -and @context{Staff} contexts. - -For very simple scores, contexts are created implicitly, and you need -not be aware of them. For larger pieces, such as anything with more -than one staff, they must be -created explicitly to make sure that you get as many staves as you -need, and that they are in the correct order. For typesetting pieces -with specialized notation, it can be useful to modify existing or -to define new contexts. - - -A complete description of all available contexts is in the program -reference, see -@ifhtml -@internalsref{Contexts}. -@end ifhtml -@ifnothtml -Translation @arrow{} Context. -@end ifnothtml - -@c [TODO: describe propagation] - - -@node Creating contexts -@subsection Creating contexts - -For scores with only one voice and one staff, contexts are -created automatically. For more complex scores, it is necessary to -create them by hand. There are three commands that do this. - -@itemize @bullet - -@item -The easiest command is @code{\new}, and it also the quickest to type. -It is prepended to a music expression, for example - -@funindex \new -@cindex new contexts -@cindex Context, creating - -@example -\new @var{type} @var{music expression} -@end example - -@noindent -where @var{type} is a context name (like @code{Staff} or -@code{Voice}). This command creates a new context, and starts -interpreting the @var{music expression} with that. - -A practical application of @code{\new} is a score with many -staves. Each part that should be on its own staff, is preceded with -@code{\new Staff}. - -@lilypond[quote,verbatim,relative=2,ragged-right,fragment] -<< - \new Staff { c4 c } - \new Staff { d4 d } ->> -@end lilypond - -The @code{\new} command may also give a name to the context, - -@example -\new @var{type} = @var{id} @var{music} -@end example -However, this user specified name is only used if there is no other -context already earlier with the same name. - - -@funindex \context - -@item -Like @code{\new}, the @code{\context} command also directs a music -expression to a context object, but gives the context an explicit name. The -syntax is - -@example -\context @var{type} = @var{id} @var{music} -@end example - -This form will search for an existing context of type @var{type} -called @var{id}. If that context does not exist yet, a new -context with the specified name is created. This is useful if -the context is referred to later on. For example, when -setting lyrics the melody is in a named context - -@example -\context Voice = "@b{tenor}" @var{music} -@end example - -@noindent -so the texts can be properly aligned to its notes, - -@example -\new Lyrics \lyricsto "@b{tenor}" @var{lyrics} -@end example - -@noindent - -Another possible use of named contexts is funneling two different -music expressions into one context. In the following example, -articulations and notes are entered separately, - -@example -music = @{ c4 c4 @} -arts = @{ s4-. s4-> @} -@end example - -They are combined by sending both to the same @context{Voice} context, - -@example -<< - \new Staff \context Voice = "A" \music - \context Voice = "A" \arts ->> -@end example -@lilypond[quote,ragged-right] -music = { c4 c4 } -arts = { s4-. s4-> } -\relative c'' << - \new Staff \context Voice = "A" \music - \context Voice = "A" \arts ->> -@end lilypond - -With this mechanism, it is possible to define an Urtext (original -edition), with the option to put several distinct articulations on the -same notes. - -@cindex creating contexts - -@item -The third command for creating contexts is -@example -\context @var{type} @var{music} -@end example +@untranslated -@noindent -This is similar to @code{\context} with @code{= @var{id}}, but matches -any context of type @var{type}, regardless of its given name. - -This variant is used with music expressions that can be interpreted at -several levels. For example, the @code{\applyOutput} command (see -@ref{Running a function on all layout objects}). Without an explicit -@code{\context}, it is usually applied to @context{Voice} - -@example -\applyOutput #'@var{context} #@var{function} % apply to Voice -@end example - -To have it interpreted at the @context{Score} or @context{Staff} level use -these forms - -@example -\applyOutput #'Score #@var{function} -\applyOutput #'Staff #@var{function} -@end example +@node The set command +@subsection The @code{\set} command -@end itemize - - -@node Changing context properties on the fly -@subsection Changing context properties on the fly - -@cindex properties +@cindex propriétés @funindex \set -@cindex changing properties +@cindex modifier des propriétés -Each context can have different @emph{properties}, variables contained -in that context. They can be changed during the interpretation step. -This is achieved by inserting the @code{\set} command in the music, +Chaque contexte peut avoir plusieurs @emph{propriétés}, c'est-à-dire +des variables qu'il inclut. Ces dernières peuvent être modifiées @qq{à la volée}, +c'est-à-dire pendant que la compilation s'accomplit. C'est là le rôle de la +commande @code{\set}. @example -\set @var{context}.@var{prop} = #@var{value} +\set @var{contexte}.@var{propriété} = #@var{valeur} @end example -For example, +Ainsi : @lilypond[quote,verbatim,relative=2,fragment] R1*2 \set Score.skipBars = ##t R1*2 @end lilypond -This command skips measures that have no notes. The result is that -multi-rests are condensed. The value assigned is a Scheme object. In -this case, it is @code{#t}, the boolean True value. +Cette commande permet de condenser les mesures vides de notes, en des silences +multi-mesures. Il s'agit d'un objet Scheme, auquel on attribue la valeur booléenne +@q{vrai}, c'est-à-dire la lettre @code{#t} pour @q{True} en anglais. + +Ce changement étant appliqué @q{à la volée}, il n'affecte que le second groupe de notes. -If the @var{context} argument is left out, then the current bottom-most -context (typically @context{ChordNames}, @context{Voice}, or -@context{Lyrics}) is used. In this example, +Si l'argument @var{contexte} n'est pas spécifié, alors la propriété cherchera à s'appliquer +dans le contexte le plus restreint où elle est employée : le plus souvent + @code{ChordNames}, @code{Voice}, ou @code{Lyrics}. Dans l'exemple suivant, @lilypond[quote,verbatim,relative=2,fragment] c8 c c c @@ -891,12 +138,13 @@ c8 c c c @end lilypond @noindent -the @var{context} argument to @code{\set} is left out, so automatic -beaming is switched off in the current @internalsref{Voice}. Note that -the bottom-most context does not always contain the property that you -wish to change -- for example, attempting to set the @code{skipBars} -property (of the bottom-most context, in this case @code{Voice}) will -have no effect. +aucun argument @var{contexte} n'a été donné à la commande @code{\set}. +De ce fait, les ligatures automatiques sont désactivées dans le +contexte actuel, c'est-à-dire @rinternals{Voice}. Notez que le +contexte le plus restreint n'est pas toujours le bon, +et peut ne pas contenir la propriété qui vous intéresse : ainsi, la propriété +@code{skipBars}, évoquée plus haut, ne relève pas du contexte @code{Voice}, +et le code suivant ne fonctionnera pas. @lilypond[quote,verbatim,relative=2,fragment] R1*2 @@ -904,59 +152,58 @@ R1*2 R1*2 @end lilypond -Contexts are hierarchical, so if a bigger context was specified, for -example @context{Staff}, then the change would also apply to all -@context{Voice}s in the current stave. The change is applied -@q{on-the-fly}, during the music, so that the setting only affects the -second group of eighth notes. +Les contextes s'organisent de façon hiérarchique : aussi, lorsqu'un contexte de niveau +supérieur est spécifié (par exemple @code{Staff}), la propriété sera modifée dans +tous les contextes inférieurs (tous les contextes @code{Voice}, par exemple) +qu'il contient. @funindex \unset -There is also an @code{\unset} command, +La commande @code{\unset} permet d'annuler la définition d'une propriété : + @example -\unset @var{context}.@var{prop} +\unset @var{contexte}.@var{propriété} @end example @noindent -which removes the definition of @var{prop}. This command removes -the definition only if it is set in @var{context}, so +si et seulement si cette propriété à été définie dans ce @var{contexte} +précis ; ainsi, @example \set Staff.autoBeaming = ##f @end example @noindent -introduces a property setting at @code{Staff} level. The setting also -applies to the current @code{Voice}. However, +même s'il s'applique à tous les contextes @code{Voice} contenus dans le +contexte @code{Staff}, ne peut être annulé au niveau @code{Voice}. Le code +suivant sera sans effet. @example \unset Voice.autoBeaming @end example @noindent -does not have any effect. To cancel this setting, the @code{\unset} -must be specified on the same level as the original @code{\set}. In -other words, undoing the effect of @code{Staff.autoBeaming = ##f} -requires +En d'autres termes, la commande @code{\unset} doit impérativement être +accompagnée du même contexte que la commande @code{\set} d'origine. +Pour annuler l'effet, dans notre exemple, de @code{Staff.autoBeaming = ##f}, +il faut donc entrer : @example \unset Staff.autoBeaming @end example -Like @code{\set}, the @var{context} argument does not have to be -specified for a bottom context, so the two statements +Si l'on se trouve dans le contexte le plus restreint, il n'est pas obligatoire, +là encore, de spécifier le @var{contexte}. Ainsi, les deux lignes suivantes sont équivalentes. + @example \set Voice.autoBeaming = ##t \set autoBeaming = ##t @end example -@noindent -are equivalent. - @cindex \once -Settings that should only apply to a single time-step can be entered -with @code{\once}, for example in +Pour modifier une propriété de façon à ce qu'elle ne s'applique qu'une seule fois, +il convient d'employer la commande @code{\once} : @lilypond[quote,verbatim,relative=2,fragment] c4 @@ -965,54 +212,60 @@ c4 c4 @end lilypond -the property @code{fontSize} is unset automatically after the second -note. +Ici le changement de taille est annulé aussitôt après la note concernée. -A full description of all available context properties is in the -program reference, see +La référence du programme contient une description exhaustive de toutes les +propriétés contexte par contexte : voir @ifhtml -@internalsref{Tunable context properties}. +@rinternals{Tunable context properties}. @end ifhtml @ifnothtml -Translation @arrow{} Tunable context properties. +Translation @expansion{} Tunable context properties. @end ifnothtml @node Modifying context plug-ins @subsection Modifying context plug-ins -Notation contexts (like @code{Score} and @code{Staff}) not only -store properties, -they also contain plug-ins called @q{engravers} that create notation -elements. For example, the @code{Voice} context contains a -@code{Note_head_engraver} and the @code{Staff} context contains a -@code{Key_signature_engraver}. +Les contextes, tels que @code{Score} ou @code{Staff}, ne contiennent +pas que des propriétés ; ils mettent également en œuvre certains +sous-programmes (@q{plug-ins}, pour employer le terme consacré) nommés +@q{graveurs} (@q{engravers}, pour reprendre le terme anglais). +Ces sous-programmes sont chargés de créer les différents éléments de notation : +On trouve ainsi dans le contexte @code{Voice}, un graveur @code{Note_head_engraver}, +chargé des têtes de notes, et dans le contexte @code{Staff}, un graveur +@code{Key_signature_engraver}, chargé de l'armure. -For a full a description of each plug-in, see +Vous trouverez une description exhaustive de chaque graveur dans @ifhtml -@internalsref{Engravers}. +@rinternals{Engravers and Performers}. @end ifhtml @ifnothtml -Program reference @arrow Translation @arrow{} Engravers. +Program reference @expansion Translation @expansion{} Engravers. @end ifnothtml -Every context described in +Chaque contexte mentionné dans @ifhtml -@internalsref{Contexts} +@rinternals{Contexts} @end ifhtml @ifnothtml -Program reference @arrow Translation @arrow{} Context. +Program reference @expansion Translation @expansion{} Context. @end ifnothtml -lists the engravers used for that context. +répertorie les graveurs mis en œuvre. -It can be useful to shuffle around these plug-ins. This is done by -starting a new context with @code{\new} or @code{\context}, and -modifying it, +On peut faire, au moyen de ces graveurs, sa propre @qq{cuisine}, en +modifiant les contextes à volonté. + + +Lorsque un contexte est créé, par la commande @code{\new} ou @code{\context}, on peut +y adjoindre un bloc @code{\with} (en anglais @q{avec}), dans lequel il est possible +d'ajouter (commande @code{\consists}) ou d'enlever (commande @code{\remove}) +des graveurs : @funindex \with @example -\new @var{context} \with @{ +\new @var{contexte} \with @{ \consists @dots{} \consists @dots{} \remove @dots{} @@ -1020,14 +273,15 @@ modifying it, @emph{etc.} @} @{ - @emph{..music..} + @emph{..musique..} @} @end example @noindent -where the @dots{} should be the name of an engraver. Here is a simple -example which removes @code{Time_signature_engraver} and -@code{Clef_engraver} from a @code{Staff} context, +Ici les points de suspension @dots{} devront être remplacés par les noms +des graveurs désirés. Dans l'exemple suivant, on enlève du contexte +@code{Staff}, le chiffre de mesure (graveur @code{Time_signature_engraver}) +et la clé (graveur @code{Clef_engraver}). @lilypond[quote,relative=1,verbatim,fragment] << @@ -1043,22 +297,21 @@ example which removes @code{Time_signature_engraver} and >> @end lilypond -In the second staff there are no time signature or clef symbols. This -is a rather crude method of making objects disappear since it will affect -the entire staff. This method also influences the spacing, which may or -may not be desirable. A more -sophisticated method of blanking objects is shown in @ref{Common tweaks}. +La clé et le chiffre de mesure ont disparu de la deuxième portée. C'est une méthode +quelque peu radicale, puisqu'elle affectera toute la portée jusqu'à la fin de la +partition. L'espacement s'en trouve également affecté, ce qui peut être ou non +l'effet recherché. Une méthode plus sophistiquée aurait été de rendre ces objets +transparents (voir @rlearning{Common tweaks}). -The next example shows a practical application. Bar lines and time -signatures are normally synchronized across the score. This is done -by the @code{Timing_translator} and @code{Default_bar_line_engraver}. -This plug-in keeps an administration of time signature, location -within the measure, etc. By moving thes engraver from @code{Score} to -@code{Staff} context, we can have a score where each staff has its own -time signature. +Dans l'exemple suivant, voici une mise en pratique plus utile. En temps +normal, les barres de mesure et la métrique sont synchronisées verticalement +dans toute la partition. Les graveurs qui en sont responsables se nomment +@code{Timing_translator} et @code{Default_bar_line_engraver}. +En les enlevant du contexte @code{Score} pour les attribuer au contexte +@code{Staff}, chaque portée peut désormais avoir sa propre métrique. -@cindex polymetric scores -@cindex Time signatures, multiple +@cindex polymétrique, partition +@cindex Chiffres de mesure multiples @lilypond[quote,relative=1,ragged-right,verbatim,fragment] \new Score \with { @@ -1086,35 +339,35 @@ time signature. @node Layout tunings within contexts @subsection Layout tunings within contexts -Each context is responsible for creating certain types of graphical -objects. The settings used for printing these objects are also stored by -context. By changing these settings, the appearance of objects can be -altered. +Chaque contexte est chargé de créer plusieurs types d'objets graphiques. +Il contient également les réglages nécessaires pour chacun de ces objets. +Si l'on modifie ces réglages, les objets n'auront plus la même apparence. -The syntax for this is +La syntaxe employée pour ce faire est @example -\override @var{context}.@var{name} #'@var{property} = #@var{value} +\override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur} @end example -Here @var{name} is the name of a graphical object, like @code{Stem} or -@code{NoteHead}, and @var{property} is an internal variable of the -formatting system (@q{grob property} or @q{layout property}). The latter is a -symbol, so it must be quoted. The subsection @ref{Constructing a -tweak}, explains what to fill in for @var{name}, @var{property}, and -@var{value}. Here we only discuss the functionality of this command. +Ici @var{objet} est un objet graphique, tel que @code{Stem} (les hampes) +ou @code{NoteHead} (les têtes de note) ; @var{propriété} est une variable +(désignée par un symbole, ce qui explique l'apostrophe) employée par le système +de mise en page. La sous-section @ref{Constructing a tweak} vous +aidera à savoir quoi mettre à la place de @var{objet}, @var{propriété} et +@var{valeur} ; notre propos n'est ici que d'examiner l'emploi de cette commande. -The command +La commande suivante : @verbatim \override Staff.Stem #'thickness = #4.0 @end verbatim @noindent -makes stems thicker (the default is 1.3, with staff line thickness as a -unit). Since the command specifies @context{Staff} as context, it only -applies to the current staff. Other staves will keep their normal -appearance. Here we see the command in action: +rend les hampes plus épaisses (la valeur par défaut est 1.3, ce qui signifie qu'elles +sont 1,3 fois plus épaisses que les lignes de la portée). Dans la mesure où nous avons +indiqué @code{Staff} comme contexte, ce réglage ne s'appliquera qu'à la portée courante ; +les autres portées demeureront intactes. + @lilypond[quote,verbatim,relative=2,fragment] c4 @@ -1124,13 +377,12 @@ c4 c4 @end lilypond -The @code{\override} command changes the definition of the @code{Stem} -within the current @context{Staff}. After the command is interpreted -all stems are thickened. +La commande @code{\override} modifie donc la définition de l'objet @code{Stem} +dans le contexte @code{Staff} ; toutes les hampes qui suivent seront affectées. -Analogous to @code{\set}, the @var{context} argument may be left out, -causing the default context @context{Voice} to be used. Adding -@code{\once} applies the change during one timestep only. +Tout comme avec la commande @code{\set}, l'argument @var{contexte} peut être omis, auquel +cas le contexte par défaut (ici, @code{Voice}) sera employé. La commande @code{\once} +permet de n'appliquer la modification qu'une seule fois. @lilypond[quote,fragment,verbatim,relative=2] c4 @@ -1139,10 +391,10 @@ c4 c4 @end lilypond -The @code{\override} must be done before the object is -started. Therefore, when altering @emph{Spanner} objects such as slurs -or beams, the @code{\override} command must be executed at the moment -when the object is created. In this example, +La commande @code{\override} doit être entrée @emph{avant} l'objet concerné. +Ainsi, lorsque l'on veut altérer un objet qui se prolonge, tel qu'une liaison, +une ligature ou tout autre objet dit @emph{Spanner}, la commande @code{\override} +doit être saisie avant que l'objet soit créé. @lilypond[quote,fragment,verbatim,relative=2] \override Slur #'thickness = #3.0 @@ -1152,29 +404,30 @@ c8 c]) @end lilypond @noindent -the slur is fatter but the beam is not. This is because the command for -@code{Beam} comes after the Beam is started, so it has no effect. +Dans cet exemple, la liaison (@emph{Slur}) est épaissie, mais non la ligature +(@emph{Beam}). En effet, le code qui lui est relatif n'a pas été inséré avant le début de +la ligature, et demeure donc sans effet. -Analogous to @code{\unset}, the @code{\revert} command for a context -undoes an @code{\override} command; like with @code{\unset}, it only -affects settings that were made in the same context. In other words, the -@code{\revert} in the next example does not do anything. +De même que la commande @code{\unset}, la commande @code{\revert} défait +ce qui a été fait par une commande @code{\override}. Tout comme avec @code{\unset}, +elle ne peut annuler que les réglages effectués dans le même contexte. +Ainsi dans l'exemple suivant, la commande @code{\revert} est sans effet. @example \override Voice.Stem #'thickness = #4.0 \revert Staff.Stem #'thickness @end example -Some tweakable options are called @q{subproperties} and reside inside -properties. To tweak those, use commands of the form +Il existe, à l'intérieur même de certaines propriétés, des options que l'on +nomme @q{sous-propriétés}. La syntaxe est alors @c leave this as a long long @example -\override @var{context}.@var{name} #'@var{property} #'@var{subproperty} = #@var{value} +\override @var{contexte}.@var{objet} #'@var{propriété} #'@var{sous-propriété} = #@var{valeur} @end example @noindent -such as +Ainsi, par exemple : @example \override Stem #'details #'beamed-lengths = #'(4 4 3) @@ -1183,25 +436,25 @@ such as @seealso -Internals: @internalsref{OverrideProperty}, @internalsref{RevertProperty}, -@internalsref{PropertySet}, @internalsref{Backend}, and -@internalsref{All layout objects}. +Référence du programme : @rinternals{OverrideProperty}, @rinternals{RevertProperty}, +@rinternals{PropertySet}, @rinternals{Backend}, et +@rinternals{All layout objects}. -@refbugs +@knownissues -The back-end is not very strict in type-checking object properties. -Cyclic references in Scheme values for properties can cause hangs -or crashes, or both. +La sous-couche Scheme ne vérifie pas la saisie des propriétés de façon +très stricte. Des références cycliques dans des valeurs Scheme peuvent +de ce fait interrompre, ou faire planter le programme -- ou bien les deux. @node Changing context default settings @subsection Changing context default settings -The adjustments of the previous subsections (@ref{Changing context -properties on the fly}, @ref{Modifying context plug-ins}, and -@ref{Layout tunings within contexts}) can also be entered separately -from the music in the @code{\layout} block, +Les réglages montrés dans les sous-sections @ref{The +set command}, @ref{Modifying context plug-ins} et +@ref{Layout tunings within contexts} peuvent également être saisis indépendamment +de la musique dans le bloc @code{\layout}, au moyen de la commande @code{\context} : @example \layout @{ @@ -1216,10 +469,11 @@ from the music in the @code{\layout} block, @} @end example -The @code{\Staff} command brings in the existing definition of the -staff context so that it can be modified. +Le raccourci @code{\Staff} invoque les définitions inhérentes au contexte +@code{Staff}, de façon à ce qu'elles puissent être modifiées. -The statements +Les lignes suivantes affecteront toutes les portées (tous les contextes @code{Staff}) +dans la partition. @example \set fontSize = #-2 \override Stem #'thickness = #4.0 @@ -1227,10 +481,10 @@ The statements @end example @noindent -affect all staves in the score. Other contexts can be modified -analogously. +Les autres contextes peuvent être modifiés de même manière. -The @code{\set} keyword is optional within the @code{\layout} block, so +La commande @code{\set}, dans le bloc @code{\layout}, est facultative ; aussi +les lignes suivantes produiront-elles le même effet. @example \context @{ @@ -1239,20 +493,15 @@ The @code{\set} keyword is optional within the @code{\layout} block, so @} @end example -@noindent -will also work. - +@knownissues -@refbugs +Il est impossible de stocker des modifications de contexte dans un identificateur. -It is not possible to collect context changes in a variable and apply -them to a @code{\context} definition by referring to that variable. - -The @code{\RemoveEmptyStaffContext} will overwrite your current -@code{\Staff} settings. If you wish to change the defaults for a -staff which uses @code{\RemoveEmptyStaffContext}, you must do so -after calling @code{\RemoveemptyStaffContext}, ie +Le raccourci @code{\RemoveEmptyStaffContext} détruit tous les réglages +du contexte @code{\Staff}. Pour modifier des propriétés de portées gouvernées +par @code{\RemoveEmptyStaffContext}, il faut le faire impérativement @emph{après} +avoir invoqué @code{\RemoveEmptyStaffContext} : @example \layout @{ @@ -1268,15 +517,16 @@ after calling @code{\RemoveemptyStaffContext}, ie @node Defining new contexts @subsection Defining new contexts -Specific contexts, like @context{Staff} and @code{Voice}, are made of -simple building blocks. It is possible to create new types of -contexts with different combinations of engraver plug-ins. +Les contextes tels que @code{Staff} ou @code{Voice} sont faits +de briques de constructions empilées. En combinant divers graveurs, +il est possible de créer de nouveaux types de contextes. -The next example shows how to build a different type of -@context{Voice} context from scratch. It will be similar to -@code{Voice}, but only prints centered slash noteheads. It can be used -to indicate improvisation in jazz pieces, +Dans l'exemple suivant, on construit, de zéro, un nouveau contexte très +semblable à @code{Voice}, mais qui n'imprime que des têtes de notes en forme +de barres obliques au centre de la portée. Un tel contexte, par exemple, peut +servir à indiquer un passage improvisé dans un morceau de jazz. +@c KEEP LY @lilypond[quote,ragged-right] \layout { \context { \name ImproVoice @@ -1295,14 +545,14 @@ to indicate improvisation in jazz pieces, \relative c'' { a4 d8 bes8 \new ImproVoice { c4^"ad lib" c - c4 c^"undress" c_"while playing :)" c } + c4 c^"dévêtez-vous" c_"tout en jouant :)" c } a1 } @end lilypond -These settings are defined within a @code{\context} block inside a -@code{\layout} block, +On a rassemblé les réglages dans un bloc @code{\context}, lui-même dans +le bloc @code{\layout} : @example \layout @{ @@ -1312,59 +562,62 @@ These settings are defined within a @code{\context} block inside a @} @end example -In the following discussion, the example input shown should go in place -of the @dots{} in the previous fragment. +En lieu et place des points (@dots{}), voici les éléments à saisir : -First it is necessary to define a name for the new context: +@itemize @bullet +@item Tout d'abord, il convient de donner un nom @code{\name} à notre nouveau contexte : @example \name ImproVoice @end example -Since it is similar to the @context{Voice}, we want commands that work -on (existing) @context{Voice}s to remain working. This is achieved by -giving the new context an alias @context{Voice}, +@item Comme il est très semblable à @code{Voice}, nous souhaitons que toutes les +commandes associées au @code{Voice} déjà existant, restent valables. D'où nécessité +de la commande @code{\alias}, qui va l'associer au contexte @code{Voice} : @example \alias Voice @end example -The context will print notes and instructive texts, so we need to add -the engravers which provide this functionality, +@item Ce contexte doit pouvoir imprimer des notes, et des indications textuelles ; +on ajoute donc les graveurs appropriés. @example \consists Note_heads_engraver \consists Text_engraver @end example -but we only need this on the center line, +@item Cependant, on veut que les notes s'affichent toutes au centre de la portée : @example \consists Pitch_squash_engraver squashedPosition = #0 @end example -The @internalsref{Pitch_squash_engraver} modifies note heads (created -by @internalsref{Note_heads_engraver}) and sets their vertical -position to the value of @code{squashedPosition}, in this case@tie{}@code{0}, -the center line. +@noindent +Le graveur @rinternals{Pitch_squash_engraver} intercepte les notes créées par +@rinternals{Note_heads_engraver}, et les @q{écrase} pour qu'elles aient toutes la +même position verticale, définie par @code{squashedPosition} : ici il s'agit de la +valeur@tie{}@code{0}, c'est-à-dire la ligne du milieu. -The notes look like a slash, and have no stem, +@item On veut que les notes aient la forme d'une barre oblique, sans aucune hampe : @example \override NoteHead #'style = #'slash \override Stem #'transparent = ##t @end example -All these plug-ins have to cooperate, and this is achieved with a -special plug-in, which must be marked with the keyword @code{\type}. -This should always be @internalsref{Engraver_group}, +@item Afin que tous ces graveurs puissent travailler de concert, on leur adjoint un +sous-programme spécial, introduit par la commande @code{\type} : il s'agit de +@code{Engraver_group}, @example \type "Engraver_group" @end example -Put together, we get +@end itemize + +Récapitulons -- on se retrouve avec le bloc suivant : @example \context @{ @@ -1381,10 +634,11 @@ Put together, we get @end example @funindex \accepts -Contexts form hierarchies. We want to hang the @context{ImproVoice} -under @context{Staff}, just like normal @code{Voice}s. Therefore, we -modify the @code{Staff} definition with the @code{\accepts} -command, +Ce n'est pas tout. En effet, on veut intégrer le nouveau contexte +@code{ImproVoice} dans la hiérarchie des contextes. Tout comme le +contexte @code{Voice}, sa place est au sein du contexte @code{Staff}. +Nous allons donc modifier le contexte @code{Staff}, +au moyen de la commande @code{\accepts} : @example \context @{ @@ -1394,10 +648,12 @@ command, @end example @funindex \denies -The opposite of @code{\accepts} is @code{\denies}, -which is sometimes needed when reusing existing context definitions. +Le contraire de @code{\accepts} est @code{\denies}, +qui est parfois utile lorsque l'on recycle des définitions de +contextes déjà existantes. -Putting both into a @code{\layout} block, like +Enfin, tout cela doit prendre place dans le bloc @code{\layout}, +comme suit : @example \layout @{ @@ -1412,15 +668,15 @@ Putting both into a @code{\layout} block, like @} @end example -Then the output at the start of this subsection can be entered as +On peut alors saisir la musique, comme dans l'exemple plus haut : @example \relative c'' @{ a4 d8 bes8 \new ImproVoice @{ c4^"ad lib" c - c4 c^"undress" - c c_"while playing :)" + c4 c^"dévêtez-vous" + c c_"tout en jouant :)" @} a1 @} @@ -1430,9 +686,9 @@ Then the output at the start of this subsection can be entered as @node Aligning contexts @subsection Aligning contexts -New contexts may be aligned above or below exisiting contexts. This -could be useful in setting up a vocal staff (@ref{Vocal ensembles}) and -in ossia, +Il est possible d'aligner verticalement chaque nouveau contexte, +en-dessous ou au-dessus, par exemple dans le cas de musique vocale +(@rlearning{Vocal ensembles}) ou d'@qq{ossias}. @cindex ossia @findex alignAboveContext @@ -1455,37 +711,38 @@ ossia = { f4 f f f } @node Vertical grouping of grobs @subsection Vertical grouping of grobs -The VerticalAlignment and VerticalAxisGroup grobs work together. -VerticalAxisGroup groups together different grobs like Staff, Lyrics, -etc. VerticalAlignment then vertically aligns the different grobs -grouped together by VerticalAxisGroup. There is usually only one -VerticalAlignment per score but every Staff, Lyrics, etc. has its own -VerticalAxisGroup. +Les objets @code{VerticalAlignment} et @code{VerticalAxisGroup} +travaillent de concert. Comme leurs noms anglais l'indiquent, +@code{VerticalAxisGroup} regroupe différents objets tels que les portées +(@code{Staff}), les paroles (@code{Lyrics}) et ainsi de suite ; puis +@code{VerticalAlignment} synchronise verticalement ces différents groupes. +En général, il n'y a qu'un seul @code{VerticalAlignment} pour l'ensemble +de la partition, mais chaque contexte @code{Staff}, @code{Lyrics}, etc. +possède son propre @code{VerticalAxisGroup}. -@node The \override command +@node The override command @section The @code{\override} command -In the previous section, we have already touched on a command that -changes layout details: the @code{\override} command. In this section, -we will look in more detail at how to use the command in practice. The -general syntax of this command is: +La commande @code{\override} permet de modifier la mise en page +en détail. Examinons son utilisation concrètementet dans les détails. +La syntaxe de cette commande ressemble généralement à : @example -\override @var{context}.@var{layout_object} #'@var{layout_property} = #@var{value} +\override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur} @end example -This will set the @var{layout_property} of the specified @var{layout_object}, -which is a member of the @var{context}, to the @var{value}. +La propriété @var{propriété} de l'objet @var{objet}, appartenant au contexte +@var{contexte}, se voit ainsi attribuer la valeur @var{valeur}. @menu * Constructing a tweak:: * Navigating the program reference:: * Layout interfaces:: * Determining the grob property:: -* Objects connected to the input:: -* Using Scheme code instead of \tweak:: -* \set versus \override:: +* The tweak command:: +* Using Scheme code instead of tweak:: +* set versus override:: * Difficult tweaks:: @end menu @@ -1494,52 +751,54 @@ which is a member of the @var{context}, to the @var{value}. @node Constructing a tweak @subsection Constructing a tweak -Commands which change output generally look like +Les commandes permettant de modifier l'apparence de la partition +ressemblent en général à @example \override Voice.Stem #'thickness = #3.0 @end example @noindent -To construct this tweak we must determine these bits of information: +Pour élaborer un réglage de ce type, on a besoin de connaître précisément : @itemize -@item the context: here @context{Voice}. -@item the layout object: here @code{Stem}. -@item the layout property: here @code{thickness}. -@item a sensible value: here @code{3.0}. +@item le contexte : ici @code{Voice} (la voix). +@item l'objet à affecter : ici @code{Stem} (les hampes). +@item la propriété à modifier : ici @code{thickness} (l'épaisseur du trait). +@item la valeur désirée : ici @code{3.0} (par défaut, elle est de 1.3). @end itemize -Some tweakable options are called @q{subproperties} and reside inside -properties. To tweak those, use commands in the form +Certaines @q{sous-propriétés} sont parfois contenues dans une propriété. +La commande devient alors : @example \override Stem #'details #'beamed-lengths = #'(4 4 3) @end example -@cindex internal documentation -@cindex finding graphical objects -@cindex graphical object descriptions -@cindex tweaking +@cindex documentation exhaustive +@cindex trouver des objets graphiques +@cindex objets graphiques, description +@cindex régler @funindex \override -@cindex internal documentation -For many properties, regardless of the data type of the property, setting the -property to false ( @code{##f} ) will result in turning it off, causing -Lilypond to ignore that property entirely. This is particularly useful for -turning off grob properties which may otherwise be causing problems. +Pour bien des propriétés, quel que soit le type de valeur requise, +attribuer la valeur @q{faux} (@code{##f} en Scheme) reviendra à désactiver +complètement l'action de la propriété qui se trouve ainsi purement +ignorée par LilyPond. Cela peut s'avérer fort utile pour des propriétés +causant des désagréments. +@c such announcements are to be avoided -vv +@ignore We demonstrate how to glean this information from the notation manual and the program reference. - +@end ignore @node Navigating the program reference @subsection Navigating the program reference -Suppose we want to move the fingering indication in the fragment -below: +Comment, par exemple, déplacer le doigté dans le fragment suivant ? @lilypond[quote,fragment,relative=2,verbatim] c-2 @@ -1547,13 +806,13 @@ c-2 f @end lilypond -If you visit the documentation on fingering instructions (in -@ref{Fingering instructions}), you will notice: +Sur la page de la documentation relative aux doigtés, c'est-à-dire +@ref{Fingering instructions}, se trouve l'indication suivante : @quotation @seealso -Program reference: @internalsref{Fingering}. +Référence du programme : @rinternals{Fingering}. @end quotation @@ -1568,7 +827,7 @@ expression for the input @code{-2}. The page contains many links forward. For example, it says @quotation -Accepted by: @internalsref{Fingering_engraver}, +Accepted by: @rinternals{Fingering_engraver}, @end quotation @noindent @@ -1576,7 +835,7 @@ That link brings us to the documentation for the Engraver, the plug-in, which says @quotation -This engraver creates the following layout objects: @internalsref{Fingering}. +This engraver creates the following layout objects: @rinternals{Fingering}. @end quotation In other words, once the @code{FingerEvent}s are interpreted, the @@ -1587,7 +846,7 @@ In other words, once the @code{FingerEvent}s are interpreted, the @c I can't figure out what this is supposed to mean. -gp The @code{Fingering_engraver} is also listed to create -@internalsref{Fingering} objects, +@rinternals{Fingering} objects, @c old info? it doesn't make any sense to me with our current docs. This is also the @@ -1596,72 +855,84 @@ manual. @end ignore @ifnothtml -The programmer's reference is available as an HTML document. It is -highly recommended that you read it in HTML form, either online or -by downloading the HTML documentation. This section will be much more -difficult to understand if you are using the -PDF manual. +Ladite référence est disponible au format HTML, ce qui rend la navigation bien +plus aisée. Il est possible soit de la lire en ligne, soit de la télécharger +dans ce format. La démarche présentée ici sera plus difficle à comprendre +dans un document au format PDF. @end ifnothtml -Follow the link to @internalsref{Fingering}. At the top of the -page, you will see +Suivons le lien @rinternals{Fingering}. En haut de la nouvelle page, +on peut lire @quotation -Fingering objects are created by: @internalsref{Fingering_engraver} and -@internalsref{New_fingering_engraver}. +Fingering objects are created by: @rinternals{Fingering_engraver} and +@rinternals{New_fingering_engraver}. @end quotation -By following related links inside the program reference, we can follow the -flow of information within the program: +En d'autres termes, @emph{Les indications de doigtés} +(@code{Fingering} en anglais) @emph{sont créées par les graveurs +@rinternals{Fingering_engraver} et @rinternals{New_fingering_engraver}.} + +En suivant derechef les liens propres à la référence du programme, on suit en fait +le cheminement qui aboutit à la création de la partition : @itemize @bullet -@item @internalsref{Fingering}: -@internalsref{Fingering} objects are created by: -@internalsref{Fingering_engraver} +@item @rinternals{Fingering}: +@rinternals{Fingering} objects are created by: +@rinternals{Fingering_engraver} -@item @internalsref{Fingering_engraver}: -Music types accepted: @internalsref{fingering-event} +@item @rinternals{Fingering_engraver}: +Music types accepted: @rinternals{fingering-event} -@item @internalsref{fingering-event}: +@item @rinternals{fingering-event}: Music event type @code{fingering-event} is in Music expressions named -@internalsref{FingerEvent} +@rinternals{FingeringEvent} @end itemize -This path goes against the flow of information in the program: it -starts from the output, and ends at the input event. You could -also start at an input event, and read with the flow of -information, eventually ending up at the output object(s). +Ce cheminement se produit, bien sûr, en sens inverse : nous sommes ici partis +du résultat, et avons abouti aux évènements (en anglais @q{Events}) engendrés +par le fichier d'entrée. L'inverse est également possible : on peut partir d'un +évènement, et suivre le cheminement de LilyPond qui aboutit à la création d'un +ou plusieurs objets graphiques. -The program reference can also be browsed like a normal document. It -contains chapters on +La référence du programme peut également se parcourir comme un document normal. +On y trouve des chapitres tels que @ifhtml -@internalsref{Music definitions}, +@rinternals{Music definitions}, @end ifhtml @ifnothtml @code{Music definitions} @end ifnothtml -on @internalsref{Translation}, and the @internalsref{Backend}. Every -chapter lists all the definitions used and all properties that may be -tuned. +@rinternals{Translation}, ou encore @rinternals{Backend}. Chaque chapitre +recense toutes les définitions employées, et les propriétés sujettes à +ajustements. + +@c -- what about adding a link to the glossary here ? -vv +@ignore +La Référence du programme n'est pas traduite en français -- notamment du fait +qu'elle est en évolution constante, tout comme LilyPond. En revanche, les termes +musicaux font l'objet d'un @commentfairelelien{glossaire} fort utile pour les utilisateurs +francophones. +@end ignore @node Layout interfaces @subsection Layout interfaces -@cindex interface, layout -@cindex layout interface -@cindex grob +@cindex interfaces de rendu +@cindex rendu, interfaces de +@cindex objets graphiques -The HTML page that we found in the previous section describes the -layout object called @internalsref{Fingering}. Such an object is a -symbol within the score. It has properties that store numbers (like -thicknesses and directions), but also pointers to related objects. A -layout object is also called a @emph{Grob}, which is short for Graphical -Object. For more details about Grobs, see @internalsref{grob-interface}. +Tous les éléments de notation sont considérés comme des objets graphiques +(en anglais @q{Graphical Object}, d'où le diminutif @emph{Grob}). +Chaque objet est doté d'un certain nombre de propriétés (l'épaisseur du trait, +l'orientation, etc.), et lié à d'autres objets. +Le fonctionnement de ces objets est décrit en détail dans @rinternals{grob-interface}. -The page for @code{Fingering} lists the definitions for the -@code{Fingering} object. For example, the page says +Prenons l'exemple des doigtés (en anglais @q{Fingering}). +La page @code{Fingering} de la Référence du programme établit une liste de définitions +propres à ce type d'objets : @quotation @code{padding} (dimension, in staff space): @@ -1670,57 +941,65 @@ The page for @code{Fingering} lists the definitions for the @end quotation @noindent -which means that the number will be kept at a distance of at least 0.5 -of the note head. +Ce qui signifie que les doigtés doivent être maintenus à une certaine distance (@emph{padding}) +des notes : 0,5 unités @emph{staff-space} (espace de portée). -Each layout object may have several functions as a notational or -typographical element. For example, the Fingering object -has the following aspects +Chaque objet peut avoir plusieurs attributs, en tant qu'élément typographique +ou musical. Ainsi, un doigté (objet @q{Fingering}) possède les attributs suivants : + @itemize @bullet @item -Its size is independent of the horizontal spacing, unlike slurs or beams. +Sa taille ne dépend pas de l'espacement horizontal, contrairement aux liaisons ou ligatures. @item -It is a piece of text. Granted, it is usually a very short text. +C'est du texte -- un texte vraiment court, certes. @item -That piece of text is typeset with a font, unlike slurs or beams. +Ce texte est imprimé au moyen d'une fonte, contrairement aux liaisons ou ligatures. @item -Horizontally, the center of the symbol should be aligned to the -center of the notehead. +Sur l'axe horizontal, le centre de ce symbole doit être aligné avec le centre de la note. @item -Vertically, the symbol is placed next to the note and the staff. +Sur l'axe vertical, le symbole doit être proche de la note et de la portée. @item -The vertical position is also coordinated with other superscript -and subscript symbols. +Sur l'axe vertical encore, il doit également s'ordonner avec les éventuels +autres symboles, ponctuations, ou éléments textuels. @end itemize -Each of these aspects is captured in so-called @emph{interface}s, -which are listed on the @internalsref{Fingering} page at the bottom +Faire appliquer ces différents attributs est le rôle des @emph{interfaces}, +que l'on trouve en bas de la page @rinternals{Fingering}. @quotation This object supports the following interfaces: -@internalsref{item-interface}, -@internalsref{self-alignment-interface}, -@internalsref{side-position-interface}, @internalsref{text-interface}, -@internalsref{text-script-interface}, @internalsref{font-interface}, -@internalsref{finger-interface}, and @internalsref{grob-interface}. +@rinternals{item-interface}, +@rinternals{self-alignment-interface}, +@rinternals{side-position-interface}, @rinternals{text-interface}, +@rinternals{text-script-interface}, @rinternals{font-interface}, +@rinternals{finger-interface}, and @rinternals{grob-interface}. @end quotation -Clicking any of the links will take you to the page of the respective -object interface. Each interface has a number of properties. Some of -them are not user-serviceable (@q{Internal properties}), but others -can be modified. +@noindent +En français, + +@quotation +Cet objet admet les interfaces suivantes : +@end quotation -We have been talking of @emph{the} @code{Fingering} object, but actually it -does not amount to much. The initialization file (see -@ref{Default files}) -@file{scm/@/define@/-grobs@/.scm} shows the soul of the @q{object}, +Suit la liste des interfaces en question, présentées comme autant de liens, +qui conduisent sur les pages dédiées à chacune d'entre elles. +Chaque interface est dotée d'un certain nombre de propriétés, dont certaines +peuvent être modifiées, et d'autres non (les @q{Internal properties}, ou +propriétés internes). + +Pour aller encore plus loin, plutôt que de simplement parler de l'objet +@code{Fingering}, ce qui ne nous avance pas à grand chose, on peut aller explorer +son âme même, dans les fichiers source de LilyPond (voir +@rlearning{Other sources of information}), en l'occurence le fichier +@file{scm/@/define@/-grobs@/.scm} : @example (Fingering @@ -1746,15 +1025,14 @@ does not amount to much. The initialization file (see @end example @noindent -As you can see, the @code{Fingering} object is nothing more than a -bunch of variable settings, and the webpage in the Program Reference -is directly generated from this definition. - +@dots{}où l'on découvre que l'objet @code{Fingering} n'est rien de plus qu'un +amas de variables et de réglages. La page de la Référence du programme est +en fait directement engendrée par cette définition. @node Determining the grob property @subsection Determining the grob property -Recall that we wanted to change the position of the @b{2} in +Nous voulions changer la position du chiffre @b{2} dans le fragment suivant : @lilypond[quote,fragment,relative=2,verbatim] c-2 @@ -1762,10 +1040,10 @@ c-2 f @end lilypond -Since the @b{2} is vertically positioned next to its note, we have to -meddle with the interface associated with this positioning. This is -done using @code{side-position-interface}. The page for this interface -says +Dans la mesure où le @b{2} est placé, verticalement, à proximité de la note qui lui +correspond, nous allons devoir trouver l'interface en charge de ce placement, qui se +trouve être @code{side-position-interface}. Sur la page de cette interface, on +peut lire : @quotation @code{side-position-interface} @@ -1775,9 +1053,19 @@ support). The property @code{direction} signifies where to put the victim object relative to the support (left or right, up or down?) @end quotation +@noindent +Ce qui signifie +@quotation +@code{side-position-interface} + +Placer l'objet affecté à proximité d'autres objets. La propriété +@code{direction} indique où placer l'objet (à droite ou à gauche, +en haut ou en bas). +@end quotation + @cindex padding @noindent -Below this description, the variable @code{padding} is described as +En-dessous de cette description se trouve décrite la variable @code{padding} : @quotation @table @code @@ -1788,16 +1076,23 @@ Add this much extra space between objects that are next to each other. @end table @end quotation -By increasing the value of @code{padding}, we can move the -fingering away from the notehead. The following command inserts -3 staff spaces of white -between the note and the fingering: +@noindent +Ce qui signifie +@quotation +Ajouter tel espace supplémentaire entre des objets proches les uns des +autres. +@end quotation + +@noindent +En augmentant la valeur de @code{padding}, on peut donc éloigner le doigté de la +note. La commande suivante insère trois unités d'espace vide entre la note et le doigté : + @example \once \override Voice.Fingering #'padding = #3 @end example -Inserting this command before the Fingering object is created, -i.e., before @code{c2}, yields the following result: +En ajoutant cette commande avant la création du doigté (de l'objet @q{Fingering}), +donc avant @code{c2}, on obtient le résultat suivant : @lilypond[quote,relative=2,fragment,verbatim] \once \override Voice.Fingering #'padding = #3 @@ -1807,23 +1102,31 @@ f @end lilypond -In this case, the context for this tweak is @context{Voice}. This -fact can also be deduced from the program reference, for the page for -the @internalsref{Fingering_engraver} plug-in says +Dans le cas présent, le réglage intervient dans le contexte @code{Voice}, +ce qui pouvait également se déduire de la Référence du programme, où la page +du graveur @rinternals{Fingering_engraver} indique : @quotation -Fingering_engraver is part of contexts: @dots{} @internalsref{Voice} +Fingering_engraver is part of contexts: @dots{} @rinternals{Voice} @end quotation +@noindent +Ce qui signifie +@quotation +Le graveur Fingering_engraver fait partie des contextes : @dots{} @rinternals{Voice} +@end quotation -@node Objects connected to the input -@subsection Objects connected to the input + +@node The tweak command +@subsection The @code{\tweak} command @funindex \tweak -In some cases, it is possible to take a short-cut for tuning graphical -objects. For objects that result directly from a piece of the input, -you can use the @code{\tweak} function, for example +Dans certains cas, on peut passer par un raccourci pour arranger les +objets graphiques. Lorsqu'un objet est directement engendré par un élément distinct +du fichier source, on peut utiliser la commande @code{\tweak}. + +Dans l'accord suivant, les notes sont modifiées une par une : @lilypond[relative=2,fragment,verbatim,ragged-right] < @@ -1834,40 +1137,41 @@ you can use the @code{\tweak} function, for example >4-\tweak #'padding #10 -. @end lilypond -As you can see, properties are set in the objects directly, -without mentioning the grob name or context where this should be -applied. +Comme on peut le voir, les propriétés sont ici modifiées directement +en même temps que les objets sont saisis. Il n'est plus besoin de spécifier ni +le nom de l'objet (@emph{grob}), ni le contexte dans lequel cela doit s'appliquer. -This technique only works for objects that are directly connected to -an @internalsref{event} from the input, for example +Ce procédé ne marche que pour des objets directement liés aux évènements +(@rinternals{Event}) du fichier source. Par exemple : @itemize @bullet -@item note heads, caused by chord-pitch (i.e., notes inside a chord) -@item articulation signs, caused by articulation instructions +@item Les têtes de notes au sein d'un accord, qui sont directement engendrées par +les hauteurs indiquées +@item Les signes d'articulation, engendrés par les indications de ponctuation. @end itemize -It notably does not work for stems and accidentals (these are caused -by note heads, not by music events) or clefs (these are not caused by -music inputs, but rather by the change of a property value). +En revanche, les hampes ou les altérations sont engendrées par les têtes de notes, +et non par des évènements dans le fichier source. De même pour les clés, qui ne +sont pas directement engendrées par le fichier source, mais plutôt par le +changement d'une propriété interne. -There are very few objects which are @emph{directly} connected to -output. A normal note (like @code{c4}) is not directly connected -to output, so +En fait, très peu d'objets passent @emph{directement} du code source à la partition. +Une note toute simple, par exemple @code{c4}, fait l'objet d'un traitement et n'est donc +pas directement rendue ; c'est pourquoi le code suivant ne sera d'aucun effet : @example \tweak #'color #red c4 @end example @noindent -does not change color. See @ref{Displaying music expressions}, for -details. +Voir pour plus de détails @ref{Displaying music expressions}. -@node Using Scheme code instead of \tweak +@node Using Scheme code instead of tweak @subsection Using Scheme code instead of @code{\tweak} -The main disadvantage of @code{\tweak} is its syntactical -inflexibility. For example, the following produces a syntax error. +L'inconvénient principal de la commande @code{\tweak} est la rigidité de sa +syntaxe. Par exemple, le code suivant produit une erreur. @example F = \tweak #'font-size #-3 -\flageolet @@ -1878,13 +1182,13 @@ F = \tweak #'font-size #-3 -\flageolet @end example @noindent -With other words, @code{\tweak} doesn't behave like an articulation -regarding the syntax; in particular, it can't be attached with -@samp{^} and @samp{_}. +En d'autres termes, @code{\tweak} ne se comporte pas comme une articulation : +il ne peut notamment pas être accolé avec les symboles @samp{^} ou @samp{_}. -Using Scheme, this problem can be circumvented. The route to the -result is given in @ref{Adding articulation to notes (example)}, -especially how to use @code{\displayMusic} as a helping guide. +C'est en se servant du langage Scheme que l'on peut résoudre ce problème. +Dans cet exemple, on a recours aux méthodes décrites dans @ref{Adding +articulation to notes (example)}, en particulier quant à l'emploi de +@code{\displayMusic}. @example F = #(let ((m (make-music 'ArticulationEvent @@ -1900,115 +1204,115 @@ F = #(let ((m (make-music 'ArticulationEvent @end example @noindent -Here, the @code{tweaks} properties of the flageolet object -@samp{m} (created with @code{make-music}) are extracted with -@code{ly:music-property}, a new key-value pair to change the -font size is prepended to the property list with the -@code{acons} Scheme function, and the result is finally -written back with @code{set!}. The last element of the -@code{let} block is the return value, @samp{m} itself. +Ici les propriétés @code{tweak} de l'objet flageolet nommé +@samp{m} (créé au moyen de @code{make-music}) sont extraites par +@code{ly:music-property}, une nouvelle valeur de la taille de fonte +est ajoutée à la liste de ses propriétés (grâce à la fonction Scheme +@code{acons}), et le résultat de cette opération est renvoyé par @code{set!}. +Le dernier élément, dans ce bloc @code{let}, est la valeur finale de +@samp{m} lui-même. -@node \set versus \override +@node set versus override @subsection @code{\set} vs. @code{\override} -We have seen two methods of changing properties: @code{\set} and -@code{\override}. There are actually two different kinds of -properties. - -Contexts can have properties, which are usually named in -@code{studlyCaps}. They mostly control the translation from -music to notatino, eg. @code{localKeySignature} (for determining -whether to print accidentals), @code{measurePosition} (for -determining when to print a barline). Context properties can -change value over time while interpreting a piece of music; -@code{measurePosition} is an obvious example of -this. Context properties are modified with @code{\set}. - -There is a special type of context property: the element -description. These properties are named in @code{StudlyCaps} -(starting with capital letters). They contain the -@q{default settings} for said graphical object as an -association list. See @file{scm/@/define@/-grobs@/.scm} -to see what kind of settings there are. Element descriptions -may be modified with @code{\override}. - -@code{\override} is actually a shorthand; +Si les propriétés peuvent être modifiées de deux façons, par les commandes +@code{\set} et @code{\override}, c'est qu'il y a deux types de propriétés. + +Les contextes peuvent avoir des propriétés, dont les noms commencent par une +minuscule puis comprennent une ou plusieurs majuscules (de style +@code{totoTutu}). Elles ont surtout trait +à la notation des éléments musicaux : par exemple, @code{localKeySignature} permet +de choisir s'il faut ou non imprimer une altération, ou @code{measurePosition} permet +de choisir quand il faut imprimer une barre de mesure. Ces propriétés de contextes +sont appelées à changer au long de l'interprétation de la partition : +@code{measurePosition} en est un exemple évident. Ces propriétés doivent +être modifiées avec la commande @code{\set}. + +Il existe un type particulier de propriétés : les descriptions +d'éléments. Ces propriétés, dont les noms commencent par une majuscule, puis comprennent +une ou plusieurs majuscules (de style @code{TotoTata}), contiennent les réglages +@q{par défaut} pour les objets graphiques. Ces réglages sont sous forme de liste Scheme ; on +peut les consulter dans le fichier @file{scm/@/define@/-grobs@/.scm}. +Les descriptions d'éléments doivent être modifiées avec la commande @code{\override}. + +@code{\override} est en fait un raccourci : @example -\override @var{context}.@var{name} #'@var{property} = #@var{value} +\override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur} @end example @noindent -is more or less equivalent to +est plus ou moins l'équivalent de @c leave this long line -gp @example -\set @var{context}.@var{name} #'@var{property} = #(cons (cons '@var{property} @var{value})