1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
2 @c This file is part of lilypond.tely
4 Translation of GIT committish: 148e80b8992a7fb9d59ec439c00b79decbbe3bad
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. See TRANSLATION for details.
12 @c Translators: Ludovic Sardain
13 @c Translation checkers: Jean-Yves Baudais, Valentin Villenave, John Mandereau, Jean-Charles Malahieude
15 @node Working on LilyPond projects
16 @chapter Working on LilyPond projects
18 Cette section explique comment résoudre ou éviter certains problèmes
19 courants. Si vous avez de l'expérience en programmation, beaucoup de
20 ces astuces peuvent vous paraître évidentes, mais vous ne perdrez tout
21 de même pas votre temps à lire ce chapitre.
24 * Suggestions for writing LilyPond input files::
25 * When things don't work::
29 @node Suggestions for writing LilyPond input files
30 @section Suggestions for writing LilyPond input files
32 Maintenant vous êtes prêt à travailler sur de plus gros fichiers
33 LilyPond --- des pièces entières, et plus seulement les petits
34 exemples du tutoriel. Mais comment devriez-vous vous y prendre ?
36 Tant que LilyPond parvient à comprendre vos fichiers et produit le
37 résultat que vous souhaitez, peu importe la manière dont le code est
38 organisé. Néanmoins, quelques critères doivent être pris en compte
39 lorsque l'on écrit un fichier LilyPond.
42 @item Si vous faites une erreur, la structure même du fichier LilyPond
43 peut permettre de la localiser plus ou moins facilement.
45 @item Et si vous souhaitez partager vos fichiers avec quelqu'un
46 d'autre, ou si vous souhaitez modifier vos propres fichiers dans
47 quelques années ? Si certains fichiers LilyPond sont compréhensibles
48 au premier coup d'oeil, d'autres vous feront vous arracher les cheveux
51 @item Et si vous souhaitez mettre à jour votre fichier pour
52 l'utiliser avec une version plus récente de LilyPond ? La syntaxe du
53 langage d'entrée change parfois lorsque LilyPond s'améliore. La
54 plupart des changements peuvent être appliqués automatiquement avec
55 @code{convert-ly}, mais quelques-uns peuvent requérir une intervention
56 manuelle. Vos fichiers LilyPond peuvent être structurés de manière à
57 faciliter leur mise à jour.
61 * General suggestions::
62 * Typesetting existing music::
64 * Saving typing with variables and functions::
68 @node General suggestions
69 @subsection General suggestions
71 Voici quelques conseils qui peuvent vous éviter certains problèmes ou
75 @item @strong{Ajoutez le numéro de version dans chaque fichier}.
76 Notez que chaque fichier modèle contient une ligne @code{\version
77 "2.11.32"}. Nous vous conseillons fortement d'inclure cette ligne,
78 même pour de petits fichiers. Par expérience, il est très difficile
79 de se rappeler quelle version de LilyPond on utilisait quelques
80 années auparavant. L'utilitaire @command{convert-ly} demande que vous
81 spécifiiez la version de LilyPond vous utilisiez alors.
83 @item @strong{Ajoutez des contrôles}: @ruser{Octave checks}, et
84 @ruser{Bar and bar number checks}. Si vous avez ajouté des contrôles
85 de loin en loin, et que vous faites une erreur, vous pourrez la
86 retrouver plus rapidement. @qq{De loin en loin}, qu'est-ce à dire ?
87 Cela dépend de la complexité de la musique. Pour de la musique très
88 simple, peut-être une ou deux fois. Pour de la musique très complexe,
89 peut-être à chaque mesure.
91 @item @strong{Une mesure par ligne de texte}. Si la musique en elle-même ou
92 le résultat que vous désirez contient quelque chose de compliqué, il
93 est souvent bon de n'écrire qu'une seule mesure par ligne. Économiser
94 de la place en tassant huit mesures par ligne, ça ne vaut pas vraiment
95 le coup si l'on doît corriger vos fichiers.
97 @item @strong{Ajoutez des commentaires}. Utilisez soit des
98 numéros de mesure (assez souvent), soit des références au contenu
99 musical --- @qq{second thème des violons}, @qq{quatrième variation}, etc.
100 Vous pouvez ne pas avoir besoin des commentaires lorsque vous écrivez
101 une pièce pour la première fois, mais si vous souhaitez y revenir deux
102 ou trois ans plus tard pour changer quelque chose, ou si vous donnez
103 le fichier source à un ami, ce sera beaucoup plus difficile de
104 déterminer vos intentions ou la manière dont votre fichier est
105 structuré si vous n'y avez pas adjoint de commentaires.
107 @item @strong{Indentez les accolades}. Beaucoup de problèmes
108 viennent d'un défaut de parité entre @code{@{} et @code{@}}.
110 @item @strong{Mentionnez les durées} au début de chaque section ou
111 variable. Si vous saisissez @code{c4 d e} au début d'une phrase, vous
112 vous épargnerez des problèmes si, plus tard, vous modifiez votre musique.
114 @item @strong{Séparez les affinages de mise en forme} de la musique
115 elle-même. Voyez @ref{Saving typing with variables and functions} et
121 @node Typesetting existing music
122 @subsection Typesetting existing music
124 Si vous saisissez de la musique à partir d'une partition existante,
125 c'est-à-dire de la musique déjà écrite,
129 @item n'entrez qu'un seul système de la partition originale
130 à la fois --- mais toujours une seule mesure par ligne de texte ---,
131 et vérifiez chaque système lorsqu'il est terminé. Vous pouvez
132 utiliser les commandes @code{showLastLength} et @code{showFirstLength}
133 pour accélérer la compilation --- voir @ruser{Skipping corrected music} ;
135 @item définissez @code{mBreak = @{\break @}} et insérez
136 @code{\mBreak} dans le fichier d'entrée pour obtenir des sauts de
137 ligne identiques à la partition originale. Cela facilite la
138 comparaison entre la partition originale et la partition de
139 LilyPond. Lorsque vous avez fini de relire votre musique, vous pouvez
140 définir @code{mBreak = @{ @}} pour enlever tous ces sauts de ligne, et
141 laisser LilyPond placer les sauts de ligne selon son propre algorithme.
143 @item encadrez les notes d'une partie pour instrument transpositeur
147 \transpose c tonalite-naturelle @{...@}
149 (où @code{tonatilte-naturelle} correspond à celle de l'instrument en
150 question) de telle sorte que la musique comprise dans cette variable se
151 retrouve en ut. Vous pourrez toujours transposer à l'inverse si besoin
152 lorsque vous ferez appel à cette variable. Des erreurs de transposition
153 seront moins susceptibles de se produire si la musique de toutes les
154 variables est dans la même et unique tonalité.
156 De la même manière, prénez toujours le do comme note de départ ou
157 d'arrivée. Ceci aura pour simple conséquence que les autres tonalités
158 que vous utiliserez seront celles propres à chacun des instruments --
159 sib pour une trompette en si bémol, ou lab pour une clarinette en la bémol.
165 @subsection Large projects
167 Lorsque l'on travaille sur un gros projet, il devient vital
168 de structurer clairement ses fichiers LilyPond.
172 @item @strong{Utilisez un identificateur pour chaque voix},
173 avec un minimum de structure dans la définition. La structure de la
174 section @code{\score} est la plus susceptible de changer, notamment
175 dans une nouvelle version de LilyPond, alors que la définition du
176 @code{violon} l'est beaucoup moins.
179 violin = \relative c'' @{
192 @item @strong{Séparez les retouches} des définitions de
193 musique. Nous vous avons déjà invité à adopter une telle pratique, qui
194 par ailleurs devient vitale pour des projets d'importance. Nous
195 pouvons avoir besoin de changer la définition de
196 @code{fpuisp}, mais dans ce cas nous n'aurons besoin de le faire
197 qu'une seule fois, et nous pourrons encore éviter de
198 modifier quoi que ce soit à l'intérieur de la définition
203 \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
204 violin = \relative c'' @{
212 @node Saving typing with variables and functions
213 @subsection Saving typing with variables and functions
216 @cindex identificateurs
218 Jusqu'à maintenant, vous avez vu ce type de code :
220 @lilypond[quote,verbatim,ragged-right]
221 hornNotes = \relative c'' { c4 b dis c }
229 Vous comprendrez combien cela peut être utile pour écrire de la
230 musique minimaliste :
232 @lilypond[quote,verbatim,ragged-right]
233 fragmentA = \relative c'' { a4 a8. b16 }
234 fragmentB = \relative c'' { a8. gis16 ees4 }
235 violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA }
243 Néanmoins vous pouvez aussi utiliser ces identificateurs
244 --- aussi connus sous le nom de variables, macros, ou commandes
245 (définies par l'utilisateur) --- pour des retouches :
247 @lilypond[quote,verbatim,ragged-right]
248 dolce = \markup{ \italic \bold dolce }
249 padText = { \once \override TextScript #'padding = #5.0 }
250 fthenp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
251 violin = \relative c'' {
253 c4._\dolce b8 a8 g a b |
255 c4.^"hi there!" d8 e' f g d |
256 c,4.\fthenp b8 c4 c-. |
263 \layout{ragged-right=##t}
267 Ces identificateurs sont évidemment utiles pour économiser de la
268 frappe. Mais ils peuvent l'être même si vous ne les utilisez qu'une
269 seule fois : ils réduisent la complexité. Regardons l'exemple
270 précédent sans aucun identificateur. C'est beaucoup plus laborieux à
271 lire, et particulièrement la dernière ligne.
274 violin = \relative c'' @{
276 c4._\markup@{ \italic \bold dolce @} b8 a8 g a b |
277 \once \override TextScript #'padding = #5.0
278 c4.^"hi there!" d8 e' f g d |
279 c,4.\markup@{ \dynamic f \italic \small @{ 2nd @}
280 \hspace #0.1 \dynamic p @} b8 c4 c-. |
285 @c TODO Replace the following with a better example -td
286 @c Skylining handles this correctly without padText
288 Jusqu'ici nous avons vu des substitutions statiques : quand LilyPond
289 rencontre @code{\padText}, il le remplace par le contenu que nous lui
290 avons défini --- c'est-à-dire le contenu à droite de @code{padText=}.
292 LilyPond gère également des substitutions non-statiques --- vous
293 pouvez les voir comme des fonctions.
295 @lilypond[quote,verbatim,ragged-right]
297 #(define-music-function (parser location padding) (number?)
299 \once \override TextScript #'padding = #$padding
307 c4^"piu mosso" fis a g
311 Utiliser les identificateurs est aussi un bon moyen pour vous épargner
312 du travail si la syntaxe de LilyPond change un jour --- voir
313 @ref{Updating old input files}. Si vous avez une seule définition, par
314 exemple @code{\dolce}, pour tous vos fichiers (voir @ref{Style sheets}),
315 et que la syntaxe change, alors vous n'aurez qu'à mettre à
316 jour votre seule définition @code{\dolce}, au lieu de devoir modifier
317 chaque fichier @code{.ly}.
321 @subsection Style sheets
323 La sortie que produit LilyPond peut être largement modifiée --- voir
324 @ref{Tweaking output} pour plus de détails. Mais que faire si vous
325 avez beaucoup de fichiers auxquels vous souhaitez appliquer vos
326 retouches ? Ou si vous souhaitez simplement séparer les retouches de
327 la musique elle-même ? Rien de plus facile.
329 Prenons un exemple. Ne vous inquiétez pas si vous ne comprenez pas
330 les parties avec tous les @code{#()}. Celles-ci sont expliquées dans
331 @ref{Advanced tweaks with Scheme}.
333 @lilypond[quote,verbatim,ragged-right]
334 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
335 #:line(#:dynamic "mp" #:text #:italic "dolce" )))
336 tempoMark = #(define-music-function (parser location markp) (string?)
338 \once \override Score . RehearsalMark #'self-alignment-X = #left
339 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
340 \mark \markup { \bold $markp }
345 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
346 \tempoMark "Poco piu mosso"
347 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
351 Il y a quelques problèmes de chevauchement ; nous allons arranger
352 cela en utilisant les techniques de @ref{Moving objects}. On peut
353 aussi faire quelque chose pour les définitions de @code{mpdolce}
354 et @code{tempoMark}. Elles produisent le résultat que nous désirons,
355 mais nous pourrions aussi vouloir les utiliser dans une autre pièce.
356 Il suffirait de les copier et coller au début de chaque
357 fichier, mais c'est fastidieux. De plus, cela laisse les définitions
358 dans nos fichiers de musique, et je trouve personnellement tous ces
359 @code{#()} assez laids. Stockons-les dans un autre fichier :
362 %%% enregistrez ceci dans un fichier nommé "definitions.ly"
363 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
364 #:line(#:dynamic "mp" #:text #:italic "dolce" )))
365 tempoMark = #(define-music-function (parser location markp) (string?)
367 \once \override Score . RehearsalMark #'self-alignment-X = #left
368 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
369 \mark \markup @{ \bold $markp @}
373 Maintenant, modifions notre musique (enregistrez ce fichier
374 sous @file{"musique.ly"}).
376 @c We have to do this awkward example/lilypond-non-verbatim
377 @c because we can't do the \include stuff in the manual.
380 \include "definitions.ly"
384 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
385 \once \override Score.RehearsalMark #'padding = #2.0
386 \tempoMark "Poco piu mosso"
387 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
391 @lilypond[quote,ragged-right]
392 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
393 #:line(#:dynamic "mp" #:text #:italic "dolce" )))
394 tempoMark = #(define-music-function (parser location markp) (string?)
396 \once \override Score . RehearsalMark #'self-alignment-X = #left
397 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
398 \mark \markup { \bold $markp }
403 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
404 \once \override Score.RehearsalMark #'padding = #2.0
405 \tempoMark "Poco piu mosso"
406 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
410 C'est mieux, mais effectuons encore quelques retouches. Le glissando
411 est peu visible, c'est pourquoi nous allons l'épaissir et le
412 rapprocher des têtes de note. Déplaçons l'indication métronomique
413 au-dessus de la clef, au lieu de la laisser au-dessus de la première
414 note. Et pour finir, mon professeur de composition déteste les
415 chiffrages de mesure en @qq{C}, nous allons donc le transformer en @qq{4/4}.
417 Cependant, ne changez pas le fichier @file{musique.ly}. Remplacez le
418 fichier @file{definitions.ly} par ceci :
422 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
423 #:line( #:dynamic "mp" #:text #:italic "dolce" )))
424 tempoMark = #(define-music-function (parser location markp) (string?)
426 \once \override Score . RehearsalMark #'self-alignment-X = #left
427 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
428 \mark \markup @{ \bold $markp @}
433 \override MetronomeMark #'extra-offset = #'(-9 . 0)
434 \override MetronomeMark #'padding = #'3
437 \override TimeSignature #'style = #'numbered
440 \override Glissando #'thickness = #3
441 \override Glissando #'gap = #0.1
446 @lilypond[quote,ragged-right]
447 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
448 #:line( #:dynamic "mp" #:text #:italic "dolce" )))
449 tempoMark = #(define-music-function (parser location markp) (string?)
451 \once \override Score . RehearsalMark #'self-alignment-X = #left
452 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
453 \mark \markup { \bold $markp }
458 \override MetronomeMark #'extra-offset = #'(-9 . 0)
459 \override MetronomeMark #'padding = #'3
462 \override TimeSignature #'style = #'numbered
465 \override Glissando #'thickness = #3
466 \override Glissando #'gap = #0.1
472 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
473 \once \override Score.RehearsalMark #'padding = #2.0
474 \tempoMark "Poco piu mosso"
475 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
479 C'est encore mieux ! Mais supposons maintenant que je veuille publier
480 cette pièce. Mon professeur de composition n'aime pas les chiffrages
481 de mesure en @qq{C}, mais moi je les aime bien. Copions l'actuel
482 @file{definitions.ly} dans le fichier @file{publication-web.ly}, et
483 modifions ce dernier. Puisque la musique est destinée à produire un
484 fichier PDF affiché sur écran, nous allons aussi augmenter la taille
489 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
490 #:line( #:dynamic "mp" #:text #:italic "dolce" )))
491 tempoMark = #(define-music-function (parser location markp) (string?)
493 \once \override Score . RehearsalMark #'self-alignment-X = #left
494 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
495 \mark \markup @{ \bold $markp @}
498 #(set-global-staff-size 23)
501 \override MetronomeMark #'extra-offset = #'(-9 . 0)
502 \override MetronomeMark #'padding = #'3
507 \override Glissando #'thickness = #3
508 \override Glissando #'gap = #0.1
513 @lilypond[quote,ragged-right]
514 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
515 #:line( #:dynamic "mp" #:text #:italic "dolce" )))
516 tempoMark = #(define-music-function (parser location markp) (string?)
518 \once \override Score . RehearsalMark #'self-alignment-X = #left
519 \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
520 \mark \markup { \bold $markp }
523 #(set-global-staff-size 23)
526 \override MetronomeMark #'extra-offset = #'(-9 . 0)
527 \override MetronomeMark #'padding = #'3
530 \override Glissando #'thickness = #3
531 \override Glissando #'gap = #0.1
537 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
538 \once \override Score.RehearsalMark #'padding = #2.0
539 \tempoMark "Poco piu mosso"
540 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
544 Il ne nous reste plus qu'à remplacer @code{\include "definitions.ly"}
545 par @code{\include "publication-web.ly"} dans notre fichier de musique.
547 Il est possible, bien sûr, de rendre cela encore plus pratique. Nous
548 pourrions créer un fichier @file{definitions.ly} qui ne contiendrait
549 que les définitions de @code{mpdolce} et de @code{tempoMark}, un
550 fichier @file{publication-web.ly} qui ne contiendrait que la section
551 @code{layout} décrite ci-dessus et un fichier @file{universite.ly} qui
552 ne contiendrait que les retouches pour produire le résultat que mon
553 professeur préfère. Le début du fichier @file{musique.ly} ressemblerait
557 \include "definitions.ly"
559 %%% Décommentez seulement une de ces deux lignes !
560 \include "publication-web.ly"
561 %\include "universite.ly"
564 Cette approche peut être utile même si vous ne produisez qu'un seul
565 jeu de partitions. J'utilise personnellement une demi-douzaine de
566 fichiers de @qq{feuille de style} pour mes projets. Je commence
567 chaque fichier de musique par @code{\include "../global.ly"} qui contient :
571 \version @w{"@version{}"}
572 #(ly:set-option 'point-and-click #f)
573 \include "../init/init-defs.ly"
574 \include "../init/init-mise-en-page.ly"
575 \include "../init/init-en-tetes.ly"
576 \include "../init/init-papier.ly"
579 @node When things don't work
580 @section When things don't work
583 * Updating old files::
584 * Troubleshooting (taking it all apart)::
588 @node Updating old input files
589 @subsection Updating old input files
591 La syntaxe de LilyPond change de temps en temps. Ces changements de
592 syntaxe du langage d'entrée accompagnent les améliorations du
593 logiciel. Ces changements sont parfois destinés à rendre les fichiers
594 plus faciles à lire et à écrire, ou permettent d'intégrer de nouvelles
597 LilyPond est fourni avec un utilitaire qui facilite cette mise à
598 jour : @command{convert-ly}. Pour savoir comment utiliser ce programme,
599 voir @rprogram{Updating files with convert-ly}.
601 Malheureusement, @command{convert-ly} ne peut pas réaliser toutes les
602 modifications. Il s'occupe des changements qui ne requièrent qu'une
603 simple substitution de texte --- comme @code{raggedright} devenant
604 @code{ragged-right} ---, les autres étant trop compliqués à effectuer.
605 Les changements de syntaxe qui ne sont pas gérés par @command{convert-ly}
606 sont énumérés dans @rprogram{Updating files with convert-ly}.
608 Par exemple, dans les versions 2.4 et antérieures de LilyPond,
609 les accents et les lettres non anglaises étaient entrées en
610 utilisant LaTeX --- par exemple, @samp{No\"el}. À partir de la
611 version 2.6, le caratère @samp{ë} doit être entré directement
612 dans le fichier LilyPond comme caractère UTF-8.
613 @code{convert-ly} ne peut pas changer tous les caractères
614 LaTeX en caractères UTF-8 ; vous devez mettre à jour vos vieux
615 fichiers LilyPond manuellement.
619 @node Troubleshooting (taking it all apart)
620 @subsection Troubleshooting (taking it all apart)
622 Tôt ou tard, vous écrirez un fichier que LilyPond ne peut pas
623 compiler. Les messages que LilyPond affiche peuvent vous aider à
624 trouver l'erreur, mais dans beaucoup de cas vous aurez besoin de faire
625 quelques recherches pour déterminer la source du problème.
627 Pour ce faire, les outils les plus puissants sont le commentaire de
628 fin de ligne, indiqué par @code{%}, et le commentaire multilignes (ou
629 bloc de commentaire), indiqué par @code{%@{ ... %@}}. Si vous ne
630 pouvez localiser le problème, commencez par mettre en commentaire de
631 grandes parties de votre fichier d'entrée. Après avoir mis en
632 commentaire une section, essayez de compiler à nouveau. Si cela
633 fonctionne, c'est que le problème se situe dans cette partie du
634 fichier. Si cela ne fonctionne pas, continuez à mettre en commentaire
635 d'autres sections, jusqu'à ce que vous ayez quelque chose qui compile.
637 Dans un cas extrême, vous pourriez en arriver à
651 c'est-à-dire un fichier sans aucune musique.
653 Si cela arrive, ne vous découragez pas. Décommentez un peu, la partie
654 de basse par exemple, et voyez si ça fonctionne. Si ce n'est pas le
655 cas, placez en commentaire toute la partie de basse, mais laissez
656 @code{\basse} décommenté dans le bloc @code{\score}.
659 basse = \relative c' @{
667 Maintenant commencez à décommenter petit à petit le partie de
668 @code{basse} jusqu'à ce que vous localisiez la ligne qui pose
671 Une autre technique de déboguage très utile est la construction
673 de @ref{Minimal examples}.
676 d'@ref{Minimal examples}.
680 @node Minimal examples
681 @subsection Minimal examples
683 Un exemple minimal est un exemple de code aussi court que possible.
684 De tels exemples sont bien plus compréhensibles que des exemples
685 longs. Les exemples minimaux sont utilisés pour
688 @item les rapports de bogue,
689 @item les demandes d'aide sur les listes de diffusion,
691 @uref{http://lsr@/.dsi@/.unimi@/.it/,LilyPond Snippet Repository}.
694 Pour construire un exemple minimal, la règle est très simple : enlevez
695 tout ce qui n'est pas nécessaire. Il est préférable de commenter les
696 lignes non nécessaires plutôt que de les effacer : ainsi, si vous vous
697 apercevez que certaines étaient @emph{réellement} nécessaires, vous
698 pouvez les décommenter au lieu de les resaisir.
700 Il y a deux exceptions à cette règle du strict nécessaire :
703 @item incluez le numéro de @code{\version} en début de fichier
704 @item si possible, utilisez @code{\paper@{ ragged-right=##t @}} au
705 début de votre exemple.
708 Tout l'intérêt d'un exemple minimal réside dans sa facilité de lecture :
711 @item évitez d'utiliser des notes, armures ou métriques compliquées, à
712 moins que vous ne vouliez montrer quelque chose en rapport avec
714 @item n'utilisez pas de commandes @code{\override} sauf si elles font
715 l'intérêt de l'exemple.
718 @node Scores and parts
719 @section Scores and parts
721 Dans la musique d'orchestre, toutes les notes sont imprimées deux fois.
722 D'abord dans les parties séparées destinées aux musiciens, et ensuite
723 dans le conducteur destiné au chef. Les variables sont là pour vous éviter
724 un double travail. La musique n'est entrée qu'une seule fois, et stockée dans
725 une variable, dont le contenu servira à imprimer à la fois la partie
726 séparée et la partition d'orchestre.
728 Il est judicieux de définir les notes dans un fichier séparé. Par
729 exemple, supposons que le fichier @file{musique-Cor.ly} contienne la
730 partie suivante pour un duo cor/@/basson.
733 notesCor = \relative c @{
740 On établira alors une partie séparée en constituant un nouveau fichier :
743 \include "musique-Cor.ly"
745 instrument = "Cor en Fa"
749 \transpose f c' \notesCor
756 \include "musique-Cor.ly"
760 sera substitué le contenu du fichier @file{musique-Cor.ly}, et de ce
761 fait la variable @code{notesCor} se trouvera définie. La commande
762 @code{\transpose f@tie{}c'} indique que son argument @code{\notesCor}
763 sera transposé à la quinte supérieure : le son réel @samp{f} s'écrit
764 @code{c'}, ce qui est la caractéristique d'un Cor en fa. La
765 transposition est visible comme suit :
767 @lilypond[quote,ragged-right]
768 \transpose f c' \relative c {
774 Dans les pièces d'ensemble, il arrive souvent qu'une voix ne joue pas
775 pendant plusieurs mesures. Un silence spécial, appelé silence multi-mesures,
776 l'indique alors. On l'obtient par un @samp{R} majuscule, suivi d'une
777 durée : @code{1}@tie{}pour une pause, @code{2}@tie{}pour une demi-pause,
778 etc. Cette durée peut être multipliée pour établir de plus longs silences.
779 Par exemple, le silence suivant dure 3@tie{}mesures à 2/4.
785 Dans une partie séparée, les silences multi-mesures sont compressés.
786 Il faut pour cela définir la propriété @code{skipBars} à @q{vrai} :
789 \set Score.skipBars = ##t
793 Cette commande assigne la valeur @q{vrai} --- @emph{true} en anglais, et
794 @samp{#t} dans le langage Scheme --- à cette propriété dans le
795 contexte @code{Score}. Si l'on ajoute dans la musique ci-dessus le
796 silence multi-mesures et cette option, on obtient le résultat suivant :
798 @lilypond[quote,ragged-right]
799 \transpose f c' \relative c {
801 \set Score.skipBars = ##t
807 Le conducteur rassemble toute la musique. Si l'on suppose que l'autre
808 voix de notre duo se trouve dans le fichier @file{musique-Basson.ly} en
809 tant que variable @code{notesBasson}, on établira un conducteur avec
812 \include "musique-Basson.ly"
813 \include "musique-Cor.ly"
817 \new Staff \notesBasson
824 @lilypond[quote,ragged-right]
832 r4 d,8 f | gis4 c | b bes |
833 a8 e f4 | g d | gis f
838 Des informations plus détaillées sur la mise en place de conducteurs
839 et de parties séparées se trouvent dans le manuel : voir
840 @ruser{Writing parts}.
842 Les variables (@q{propriétés}) réglables sont abordées en détail dans
843 @ruser{The set command}.