1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
3 Translation of GIT committish: 7eee2a7382029cc29cc069f93a431758ae8a13b7
5 When revising a translation, copy the HEAD committish of the
6 version that you are working on. See TRANSLATION for details.
11 @c Translators: Ludovic Sardain, Jean-Charles Malahieude
12 @c Translation checkers: Jean-Yves Baudais, Valentin Villenave, John Mandereau, Jean-Charles Malahieude
14 @node Working on LilyPond projects
15 @chapter Working on LilyPond projects
17 Cette section explique comment résoudre ou éviter certains problèmes
18 courants. Si vous avez de l'expérience en programmation, beaucoup de
19 ces astuces peuvent vous paraître évidentes, mais vous ne perdrez tout
20 de même pas votre temps à lire ce chapitre.
23 * Suggestions for writing LilyPond input files::
24 * When things don't work::
26 * Make and Makefiles::
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 @w{@code{\version
77 "@version{}"}}. 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 tonalité-naturelle @{...@}
149 (où @code{tonalité-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 0 #:translate '(5 . 0)
335 #:line(#:dynamic "mp" #:text #:italic "dolce" )))
337 inst = #(define-music-function (parser location string) (string?)
341 'text (markup #:bold (#:box string))))
345 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
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{inst}. 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.ily"
363 mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
364 #:line(#:dynamic "mp" #:text #:italic "dolce" )))
366 inst = #(define-music-function (parser location string) (string?)
370 'text (markup #:bold (#:box string))))
373 Nous rappellerons ce fichier par une simple commande @code{\include} au
374 début de notre fichier de musique. Lui attribuer l'extension
375 @code{.ily} nous permet de distinguer aisément qu'il s'agit d'un fichier
376 voué à être inclus dans un fichier maître ; il n'est pas destiné à être
378 Maintenant, modifions notre musique (enregistrez ce fichier
379 sous @file{musique.ly}).
381 @c We have to do this awkward example/lilypond-non-verbatim
382 @c because we can't do the \include stuff in the manual.
385 \include "definitions.ily"
389 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
391 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
395 @lilypond[quote,ragged-right]
396 mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
397 #:line(#:dynamic "mp" #:text #:italic "dolce" )))
399 inst = #(define-music-function (parser location string) (string?)
403 'text (markup #:bold (#:box string))))
407 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
409 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
413 C'est mieux, mais effectuons encore quelques retouches. Le glissando
414 est peu visible, c'est pourquoi nous allons l'épaissir et le
415 rapprocher des têtes de note. Déplaçons l'indication métronomique
416 au-dessus de la clef, au lieu de la laisser au-dessus de la première
417 note. Et pour finir, mon professeur de composition déteste les
418 chiffrages de mesure en @qq{C}, nous allons donc le transformer en @qq{4/4}.
420 Cependant, ne changez pas le fichier @file{musique.ly}. Remplacez le
421 fichier @file{definitions.ily} par ceci :
425 mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
426 #:line( #:dynamic "mp" #:text #:italic "dolce" )))
428 inst = #(define-music-function (parser location string) (string?)
432 'text (markup #:bold (#:box string))))
436 \override MetronomeMark #'extra-offset = #'(-9 . 0)
437 \override MetronomeMark #'padding = #'3
440 \override TimeSignature #'style = #'numbered
443 \override Glissando #'thickness = #3
444 \override Glissando #'gap = #0.1
449 @lilypond[quote,ragged-right]
450 mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
451 #:line( #:dynamic "mp" #:text #:italic "dolce" )))
453 inst = #(define-music-function (parser location string) (string?)
457 'text (markup #:bold (#:box string))))
461 \override MetronomeMark #'extra-offset = #'(-9 . 0)
462 \override MetronomeMark #'padding = #'3
465 \override TimeSignature #'style = #'numbered
468 \override Glissando #'thickness = #3
469 \override Glissando #'gap = #0.1
475 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
477 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
481 C'est encore mieux ! Mais supposons maintenant que je veuille publier
482 cette pièce. Mon professeur de composition n'aime pas les chiffrages
483 de mesure en @qq{C}, mais moi je les aime bien. Copions l'actuel
484 @file{definitions.ily} dans le fichier @file{publication-web.ily}, et
485 modifions ce dernier. Puisque la musique est destinée à produire un
486 fichier PDF affiché sur écran, nous allons aussi augmenter la taille
491 mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
492 #:line( #:dynamic "mp" #:text #:italic "dolce" )))
494 inst = #(define-music-function (parser location string) (string?)
498 'text (markup #:bold (#:box string))))
500 #(set-global-staff-size 23)
503 \override MetronomeMark #'extra-offset = #'(-9 . 0)
504 \override MetronomeMark #'padding = #'3
509 \override Glissando #'thickness = #3
510 \override Glissando #'gap = #0.1
515 @lilypond[quote,ragged-right]
516 mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
517 #:line( #:dynamic "mp" #:text #:italic "dolce" )))
519 inst = #(define-music-function (parser location string) (string?)
523 'text (markup #:bold (#:box string))))
525 #(set-global-staff-size 23)
528 \override MetronomeMark #'extra-offset = #'(-9 . 0)
529 \override MetronomeMark #'padding = #'3
532 \override Glissando #'thickness = #3
533 \override Glissando #'gap = #0.1
539 a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
541 cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
545 Il ne nous reste plus qu'à remplacer @code{\include "definitions.ily"}
546 par @code{\include "publication-web.ily"} dans notre fichier de musique.
548 Il est possible, bien sûr, de rendre cela encore plus pratique. Nous
549 pourrions créer un fichier @file{definitions.ily} qui ne contiendrait
550 que les définitions de @code{mpdolce} et de @code{inst}, un
551 fichier @file{publication-web.ily} qui ne contiendrait que la section
552 @code{layout} décrite ci-dessus et un fichier @file{universite.ily} qui
553 ne contiendrait que les retouches pour produire le résultat que mon
554 professeur préfère. Le début du fichier @file{musique.ly} ressemblerait
558 \include "definitions.ily"
560 %%% Décommentez seulement une de ces deux lignes !
561 \include "publication-web.ily"
562 %\include "universite.ily"
565 Cette approche peut être utile même si vous ne produisez qu'un seul
566 jeu de partitions. J'utilise personnellement une demi-douzaine de
567 fichiers de @qq{feuille de style} pour mes projets. Je commence
568 chaque fichier de musique par @code{\include "../global.ily"} qui contient :
572 \version @w{"@version{}"}
573 #(ly:set-option 'point-and-click #f)
574 \include "../init/init-defs.ly"
575 \include "../init/init-mise-en-page.ly"
576 \include "../init/init-en-tetes.ly"
577 \include "../init/init-papier.ly"
580 @node When things don't work
581 @section When things don't work
584 * Updating old files::
585 * Troubleshooting (taking it all apart)::
589 @node Updating old input files
590 @subsection Updating old input files
593 @cindex mise à jour d'anciens fichiers
595 La syntaxe de LilyPond change de temps en temps. Ces changements de
596 syntaxe du langage d'entrée accompagnent les améliorations du
597 logiciel. Ces changements sont parfois destinés à rendre les fichiers
598 plus faciles à lire et à écrire, ou permettent d'intégrer de nouvelles
601 LilyPond est fourni avec un utilitaire qui facilite cette mise à
602 jour : @command{convert-ly}. Pour savoir comment utiliser ce programme,
603 voir @rprogram{Updating files with convert-ly}.
605 Malheureusement, @command{convert-ly} ne peut pas réaliser toutes les
606 modifications. Il s'occupe des changements qui ne requièrent qu'une
607 simple substitution de texte --- comme @code{raggedright} devenant
608 @code{ragged-right} ---, les autres étant trop compliqués à effectuer.
609 Les changements de syntaxe qui ne sont pas gérés par @command{convert-ly}
610 sont énumérés dans @rprogram{Updating files with convert-ly}.
612 Par exemple, dans les versions 2.4 et antérieures de LilyPond,
613 les accents et les lettres non anglaises étaient entrées en
614 utilisant LaTeX --- par exemple, @code{No\"el}. À partir de la
615 version 2.6, le caratère @code{ë} doit être entré directement
616 dans le fichier LilyPond comme caractère UTF-8.
617 @code{convert-ly} ne peut pas changer tous les caractères
618 LaTeX en caractères UTF-8 ; vous devez mettre à jour vos vieux
619 fichiers LilyPond manuellement.
624 @subsection Common errors
626 The error conditions described below occur often, yet the cause
627 is not obvious or easily found. Once seen and understood, they
632 * Music runs off the page::
633 * Apparent error in ../ly/init.ly::
634 * Error message Unbound variable %::
637 @node Music runs off the page
638 @unnumberedsubsubsec Music runs off the page
640 Lorsque la musique s'épanche au delà de la marge droite ou bien semble
641 anormalement comprimée, la raison en est le plus souvent une note à la
642 durée erronée ; cela finit par provoquer le débordement de la dernière
643 note d'une mesure. Rien ne s'oppose à ce que la dernière note d'une
644 mesure ne s'arrête avant la barre de mesure ; on considère simplement
645 qu'elle se prolonge sur la mesure suivante. Des débordements à
646 répétition finissent par générer une musique comprimée ou qui sort de la
647 page, pour la simple et bonne raison que les sauts de ligne automatiques
648 ne peuvent intervenir qu'à la fin d'une mesure complète, autrement dit
649 lorsque toutes les notes sont terminées avant la fin de la mesure.
651 @warning{Une durée erronée peut empêcher les sauts de ligne, ce qui
652 conduit à une musique compressée, voire à un débordement de la page.}
654 Une erreur de durée sera bien plus facilement localisable si vous
655 positionnez régulièrement des contrôles de barre de mesure --- voir
656 @ruser{Bar and bar number checks}.
658 Si vous tenez absolument à enchainer de tels débordements, vous devrez
659 insérer des barres de mesure invisibles là où vous souhaitez positionner
660 un saut de ligne. Consultez le chapitre @ruser{Bar lines} pour plus de
663 @node Apparent error in ../ly/init.ly
664 @unnumberedsubsubsec Apparent error in @code{../ly/init.ly}
666 Certains messages d'erreur relatifs à une erreur de syntaxe dans le
667 fichier @code{../ly/init.ly} peuvent survenir lorsque le fichier est mal
668 formaté. Cela se produit notamment lors d'un défaut de parité de
669 bornage ou de guillemets.
671 L'erreur la plus courante est la simple omission d'une accolade
672 fermante (@code{@}} à la fin du bloc @code{Score}. La solution est
673 évidente en pareil cas : i lsuffit de vérifier que le bloc @code{Score}
674 est bien clôturé. La structure des fichiers LilyPond est abordée plus
675 en détails au chapitre @ref{How LilyPond input files work}. C'est la
676 raison pour laquelle nous vous invitons à utiliser un éditeur de texte
677 qui prenne en charge le contrôle de parité des parnthèses, crochets et
678 accolades afin de vous éviter de telles erreurs.
680 Lorsqu'il s'agit d'un guillemet fermant (@code{"}) omis, le message
681 d'erreur devrait vous indiquer un numéro de ligne avoisinant. L'erreur
682 se situe la plupart du temps une ou deux lignes au-dessus de celle
686 @node Error message Unbound variable %
687 @unnumberedsubsubsec Error message Unbound variable %
689 Ce message d'erreur, qu'il apparaisse sur le terminal ou en fin de
690 fichier journal, est associé à un message du type @qq{GUILE a signalé
691 une erreur @dots{}} survient à chaque fois qu'un commentaire
692 @emph{LilyPond} est indûment placé dans une routine @emph{Scheme}.
694 Un commentaire LilyPond est introduit par le signe pourcent (@code{%})
695 et de doit en aucun cas se trouver dans une routine Scheme. En Scheme,
696 les commentaire s'introduisent par un point-virgule (@code{;}).
699 @node Troubleshooting (taking it all apart)
700 @subsection Troubleshooting (taking it all apart)
702 Tôt ou tard, vous écrirez un fichier que LilyPond ne peut pas
703 compiler. Les messages que LilyPond affiche peuvent vous aider à
704 trouver l'erreur, mais dans beaucoup de cas vous aurez besoin de faire
705 quelques recherches pour déterminer la source du problème.
707 Pour ce faire, les outils les plus puissants sont le commentaire de
708 fin de ligne, indiqué par @code{%}, et le commentaire multilignes (ou
709 bloc de commentaire), indiqué par @code{%@{ ... %@}}. Si vous ne
710 pouvez localiser le problème, commencez par mettre en commentaire de
711 grandes parties de votre fichier d'entrée. Après avoir mis en
712 commentaire une section, essayez de compiler à nouveau. Si cela
713 fonctionne, c'est que le problème se situe dans cette partie du
714 fichier. Si cela ne fonctionne pas, continuez à mettre en commentaire
715 d'autres sections, jusqu'à ce que vous ayez quelque chose qui compile.
717 Dans un cas extrême, vous pourriez en arriver à
731 c'est-à-dire un fichier sans aucune musique.
733 Si cela arrive, ne vous découragez pas. Décommentez un peu, la partie
734 de basse par exemple, et voyez si ça fonctionne. Si ce n'est pas le
735 cas, placez en commentaire toute la partie de basse, mais laissez
736 @code{\basse} décommenté dans le bloc @code{\score}.
739 basse = \relative c' @{
747 Maintenant commencez à décommenter petit à petit le partie de
748 @code{basse} jusqu'à ce que vous localisiez la ligne qui pose
751 Une autre technique de déboguage très utile est la construction
752 de @ref{Minimal examples}.
755 @node Minimal examples
756 @subsection Minimal examples
758 Un exemple minimal est un exemple de code aussi court que possible.
759 De tels exemples sont bien plus compréhensibles que des exemples
760 longs. Les exemples minimaux sont utilisés pour
763 @item les rapports de bogue,
764 @item les demandes d'aide sur les listes de diffusion,
766 @uref{http://lsr.dsi.unimi.it/,LilyPond Snippet Repository}.
769 Pour construire un exemple minimal, la règle est très simple : enlevez
770 tout ce qui n'est pas nécessaire. Il est préférable de commenter les
771 lignes non nécessaires plutôt que de les effacer : ainsi, si vous vous
772 apercevez que certaines étaient @emph{réellement} nécessaires, vous
773 pouvez les décommenter au lieu de les resaisir.
775 Il y a deux exceptions à cette règle du strict nécessaire :
778 @item incluez le numéro de @code{\version} en début de fichier
779 @item si possible, utilisez @code{\paper@{ ragged-right=##t @}} au
780 début de votre exemple.
783 Tout l'intérêt d'un exemple minimal réside dans sa facilité de lecture :
786 @item évitez d'utiliser des notes, armures ou métriques compliquées, à
787 moins que vous ne vouliez montrer quelque chose en rapport avec
789 @item n'utilisez pas de commandes @code{\override} sauf si elles font
790 l'intérêt de l'exemple.
794 @node Scores and parts
795 @section Scores and parts
797 Dans la musique d'orchestre, toutes les notes sont imprimées deux fois.
798 D'abord dans les parties séparées destinées aux musiciens, et ensuite
799 dans le conducteur destiné au chef. Les variables sont là pour vous éviter
800 un double travail. La musique n'est entrée qu'une seule fois, et stockée dans
801 une variable, dont le contenu servira à imprimer à la fois la partie
802 séparée et la partition d'orchestre.
804 Il est judicieux de définir les notes dans un fichier séparé. Par
805 exemple, supposons que le fichier @file{musique-Cor.ly} contienne la
806 partie suivante pour un duo cor/@/basson.
809 notesCor = \relative c @{
816 On établira alors une partie séparée en constituant un nouveau fichier :
819 \include "musique-Cor.ly"
821 instrument = "Cor en Fa"
825 \transpose f c' \notesCor
832 \include "musique-Cor.ly"
836 sera substitué le contenu du fichier @code{musique-Cor.ly}, et de ce
837 fait la variable @code{notesCor} se trouvera définie. La commande
838 @code{\transpose f@tie{}c'} indique que son argument @code{\notesCor}
839 sera transposé à la quinte supérieure : le son réel @code{f} s'écrit
840 @code{c'}, ce qui est la caractéristique d'un Cor en fa. La
841 transposition est visible comme suit :
843 @lilypond[quote,ragged-right]
844 \transpose f c' \relative c {
850 Dans les pièces d'ensemble, il arrive souvent qu'une voix ne joue pas
851 pendant plusieurs mesures. Un silence spécial, appelé silence multi-mesures,
852 l'indique alors. On l'obtient par un @samp{R} majuscule, suivi d'une
853 durée : @code{1}@tie{}pour une pause, @code{2}@tie{}pour une demi-pause,
854 etc. Cette durée peut être multipliée pour établir de plus longs silences.
855 Par exemple, le silence suivant dure 3@tie{}mesures à 2/4.
861 Dans une partie séparée, les silences multimesure sont compressés.
862 Il faut pour cela définir la propriété @code{skipBars} à @qq{vrai} :
865 \set Score.skipBars = ##t
869 Cette commande assigne la valeur @qq{vrai} --- @emph{true} en anglais, et
870 @code{#t} dans le langage Scheme --- à cette propriété dans le
871 contexte @code{Score}. Si l'on ajoute dans la musique ci-dessus le
872 silence multimesure et cette option, on obtient le résultat suivant :
874 @lilypond[quote,ragged-right]
875 \transpose f c' \relative c {
877 \set Score.skipBars = ##t
883 Le conducteur rassemble toute la musique. Si l'on suppose que l'autre
884 voix de notre duo se trouve dans le fichier @code{musique-Basson.ly} en
885 tant que variable @code{notesBasson}, on établira un conducteur avec
888 \include "musique-Basson.ly"
889 \include "musique-Cor.ly"
893 \new Staff \notesBasson
900 @lilypond[quote,ragged-right]
908 r4 d,8 f | gis4 c | b bes |
909 a8 e f4 | g d | gis f
914 Des informations plus détaillées sur la mise en place de conducteurs
915 et de parties séparées se trouvent dans le manuel de notation : voir
916 @ruser{Writing parts}.
918 Les variables (@qq{propriétés}) réglables sont abordées en détail dans
919 @ruser{The set command}.
923 @node Make and Makefiles
924 @section Make and Makefiles
929 La plupart des plates-formes sur lesquelles tourne LilyPond disposent
930 d'un logiciel appelé @code{make}. Ce logiciel va lire un fichier
931 spécial, nommé de @code{Makefile}, qui contient tout ce qu'il
932 faut --- les dépendances entre certains fichiers, les instructions
933 successives à traiter par le système --- pour aboutir au fichier que
934 vous désirez obtenir. Il pourrait par exemple contenir tout ce qu'il
935 faut pour produire @code{ballade.pdf} et @code{ballade.midi} à partir de
936 @code{ballade.ly} en lançant LilyPond.
938 La création d'un @code{Makefile} peut se révéler pertinente pour
939 certains projets, que ce soit par simple goût personnel ou bien par
940 respect de ceux qui pourront accéder à vos sources. Cette manière de
941 procéder est particulièrement indiquée lorsque vous travaillez sur un
942 projet de grande envergure impliquant de nombreuses inclusions de
943 fichiers et différentes éditions --- par exemple un conducteur et un
944 matériel d'orchestre complet avec la partition pour le chef et une
945 partition séparée pour chacun des pupitres --- ou bien si votre projet
946 requiert certaines commandes particulières comme @code{lilypond-book}.
947 Les @emph{Makefiles} varient tant en complexité qu'en flexibilité selon
948 les besoin et les aptitudes de celui qui les crée. Le programme GNU Make
949 est installé par défaut sur les distributions Linux et sur MacOS@tie{}X,
950 et il en existe une version pour les environnements Windows.
952 Consultez le @strong{GNU Make Manual} pour plus de détails sur ce dont
953 @code{make} est capable --- vous pourrez même en trouver des versions
954 françaises à l'aide des moteurs de recherche ---, dans la mesure où ce
955 qui suit ne donne qu'un bref apperçu de ses possibilités.
957 Les commandes permettant de définir les règles diffèrent selon la
958 plate-forme : si les différents Linux et MacOS@tie{}X utilisent
959 @code{bash}, Windows utilise @code{cmd}. Dans le cas de MacOS@tie{}X,
960 vous devrez toutefois configurer votre système de telle sorte qu'il
961 utilise l'interpréteur en ligne de commande. Voici quelques exemples de
962 fichier @emph{Makefile}, avec une version pour Linux ou MacOS et une
965 Pour commencer, une pièce à quatre mouvements pour orchestre et dont les
966 fichiers sont répartis selon l'arborescence suivante :
985 | |-- symphonieIII.ly
989 | |-- symphon-alto.ly
990 | |-- symphonie-cello.ly
991 | |-- symphonie-cor.ly
992 | |-- symphonie-hautbois.ly
993 | |-- symphonie-violonUn.ly
994 | `-- symphonie-violonDeux.ly
995 `-- symphonieDefs.ily
998 Les fichiers @code{.ly} des répertoires @code{Partitions} et
999 @code{Pupitres} récupèreront la notation des fichiers @code{.ily}
1000 contenus dans le répertoire @code{Notes} :
1003 %%% début du fichier "symphone-cello.ly"
1004 \include ../definitions.ily
1005 \include ../Notes/cello.ily
1008 Le @emph{Makefile} répertorie des cibles correspondant à @code{score}
1009 (l'intégrale au format conducteur), @code{mouvements} (chacun des
1010 mouvements au format conducteur) et @code{pupitres} (une partition par
1011 pupitre). Il contient aussi une cible @code{archive} chargée de générer
1012 une archive des fichiers sources qui pourra être diffusée sur la toile ou
1013 transmise par courriel. Voici ce que contiendrait ce @emph{Makefile}
1014 pour Linux ou MacOS@tie{}X. Ce fichier doit être enregistré sous le nom
1015 de @code{Makefile} à la racine du projet --- ici @code{Symphonie}.
1017 @warning{Lorsque vous définissez une cible ou une règle sur plusieurs
1018 lignes, les lignes à partir de la deuxième @strong{doivent} débuter par
1019 une tabulation, non pas par des espaces.}
1022 # Le préfixe au nom des fichiers résultants
1024 # Détermination du nombre de processeurs
1025 CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
1026 # La commande d'appel à lilypond
1027 LILY_CMD = lilypond -ddelete-intermediate-files \
1028 -dno-point-and-click -djob-count=$(CPU_CORES)
1030 # Les suffixes utilisés dans ce Makefile
1031 .SUFFIXES: .ly .ily .pdf .midi
1033 # Les fichiers sources et résultants sont recherchés dans les répertoires
1034 # listés dans la variable VPATH. Ceux-ci sont tous des sous-répertoires
1035 # du répertoire courant (fourni par la variable de GNU make `CURDIR').
1037 $(CURDIR)/Partitions \
1039 $(CURDIR)/Pupitres \
1042 # La règle type pour créer un PDF et un MIDI à partir d'un fichier
1044 # Les .pdf résultants iront dans le sous-répertoire "PDF" et les fichiers
1045 # .midi dans le sous-répertoire "MIDI".
1047 $(LILY_CMD) $<; \ # cette ligne commence par une tabulation
1048 if test -f "$*.pdf"; then \
1051 if test -f "$*.midi"; then \
1052 mv "$*.midi" MIDI/; \
1063 # Les dépendances selon le mouvement.
1064 $(piece)I.pdf: $(piece)I.ly $(notes)
1065 $(piece)II.pdf: $(piece)II.ly $(notes)
1066 $(piece)III.pdf: $(piece)III.ly $(notes)
1067 $(piece)IV.pdf: $(piece)IV.ly $(notes)
1069 # Les dépendances pour la partition intégrale.
1070 $(piece).pdf: $(piece).ly $(notes)
1072 # Les dépendances pour les pupitres.
1073 $(piece)-alto.pdf: $(piece)-alto.ly alto.ily
1074 $(piece)-cello.pdf: $(piece)-cello.ly cello.ily
1075 $(piece)-cor.pdf: $(piece)-cor.ly cor.ily
1076 $(piece)-hautbois.pdf: $(piece)-hautbois.ly hautbois.ily
1077 $(piece)-violonUn.pdf: $(piece)-violonUn.ly violonUn.ily
1078 $(piece)-violonDeux.pdf: $(piece)-violonDeux.ly violonDeux.ily
1080 # Lancer `make score' pour générer l'intégrale des quatre mouvements en
1085 # Lancer `make parties' pour obtenir tous les pupitres.
1086 # Lancer `make toto.pdf' pour obtenir la partie instrumentale de toto.
1087 # Par exemple : `make symphonie-cello.pdf'.
1089 parties: $(piece)-cello.pdf \
1090 $(piece)-violonUn.pdf \
1091 $(piece)-violonDeux.pdf \
1093 $(piece)-hautbois.pdf \
1096 # Lancer `make mouvements' pour générer un fichier séparé pour chacun
1099 mouvements: $(piece)I.pdf \
1104 all: score parties mouvements
1107 tar -cvvf symphonie.tar \ # cette ligne commence par une tabulation
1108 --exclude=*pdf --exclude=*~ \
1109 --exclude=*midi --exclude=*.tar \
1114 Les choses se compliquent sous Windows. Une fois GNU Make pour Windows
1115 téléchargé et installé, il vous faudra correctement définir le chemin
1116 d'accès au programme @emph{Make} --- dans les variables d'environnement
1117 du système --- afin que l'interpréteur de commandes DOS puisse le
1118 localiser. Pour cela, faites un clic droite sur @qq{Poste de travail},
1119 choisissez @code{Propriétés} puis @code{Avancées}. Cliquez sur
1120 @code{Variables d'environnement} puis, dans l'onglet @w{@code{Variables
1121 système}}, mettez @code{path} en surbrillance et cliquez sur
1122 @code{Modifier}. Ajoutez alors le chemin d'accès complet à l'exécutable
1123 de GNU Make, qui devrait ressembler à :
1126 C:\Program Files\GnuWin32\bin
1129 Il va également falloir adapter le @emph{makefile} aux particularités de
1130 l'interpréteur de commandes et à la présence d'espaces dans le nom de
1131 certains répertoire de ce système.
1132 La cible @code{archive} est tout bonnement supprimée, puisque Windows ne
1133 dispose pas de la commande @code{tar}. Enfin, les fichiers MIDI ont une
1134 extension par défaut propre à Windows.
1138 ## VERSION POUR WINDOWS
1141 LILY_CMD = lilypond -ddelete-intermediate-files \
1142 -dno-point-and-click \
1143 -djob-count=$(NUMBER_OF_PROCESSORS)
1145 #get the 8.3 name of CURDIR (workaround for spaces in PATH)
1146 workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
1149 .SUFFIXES: .ly .ily .pdf .mid
1152 $(workdir)/Partitions \
1154 $(workdir)/Pupitress \
1158 $(LILY_CMD) $< # cette ligne commence par une tabulation
1159 if exist "$*.pdf" move /Y "$*.pdf" PDF/ # tabulation au début
1160 if exist "$*.mid" move /Y "$*.mid" MIDI/ # tabulation au début
1172 $(piece)I.pdf: $(piece)I.ly $(notes)
1173 $(piece)II.pdf: $(piece)II.ly $(notes)
1174 $(piece)III.pdf: $(piece)III.ly $(notes)
1175 $(piece)IV.pdf: $(piece)IV.ly $(notes)
1177 $(piece).pdf: $(piece).ly $(notes)
1179 $(piece)-cello.pdf: $(piece)-cello.ly cello.ily
1180 $(piece)-cor.pdf: $(piece)-cor.ly cor.ily
1181 $(piece)-hautbois.pdf: $(piece)-hautbois.ly hautbois.ily
1182 $(piece)-alto.pdf: $(piece)-alto.ly alto.ily
1183 $(piece)-violonUn.pdf: $(piece)-violonUn.ly violonUn.ily
1184 $(piece)-violonDeux.pdf: $(piece)-violonDeux.ly violonDeux.ily
1190 parties: $(piece)-cello.pdf \
1191 $(piece)-violonUn.pdf \
1192 $(piece)-violonDeux.pdf \
1194 $(piece)-hautbois.pdf \
1198 mouvements: $(piece)I.pdf \
1203 all: score parties mouvements
1207 Le @emph{Makefile} suivant convient pour un document
1208 @command{lilypond-book} réalisé avec @LaTeX{}. Ce projet contiendra un
1209 index, ce qui nécessitera de lancer une deuxième fois @command{latex}
1210 pour mettre à jour les liens. Les fichiers résultants iront dans le
1211 répertoire @code{out} pour ce qui est des .pdf et dans le répertoire
1212 @code{htmlout} pour ce qui est du html.
1221 LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex
1222 LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex
1223 PDF=cd $(OUTDIR) && pdflatex $(FILE)
1224 HTML=cd $(WEBDIR) && latex2html $(FILE)
1225 INDEX=cd $(OUTDIR) && makeindex $(FILE)
1226 PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf &
1231 $(LILYBOOK_PDF) # tabulation en début de ligne
1232 $(PDF) # tabulation en début de ligne
1233 $(INDEX) # tabulation en début de ligne
1234 $(PDF) # tabulation en début de ligne
1235 $(PREVIEW) # tabulation en début de ligne
1238 $(LILYBOOK_HTML) # tabulation en début de ligne
1239 $(HTML) # tabulation en début de ligne
1240 cp -R $(WEBDIR)/$(FILE)/ ./ # tabulation en début de ligne
1241 $(BROWSER) $(FILE)/$(FILE).html & # tabulation en début de ligne
1244 cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf # tabulation en début de ligne
1247 rm -rf $(OUTDIR) # tabulation en début de ligne
1250 rm -rf $(WEBDIR) # tabulation en début de ligne
1253 tar -cvvf monprojet.tar \ # tabulation en début de ligne
1255 --exclude=htmlout/* \
1256 --exclude=monprojet/* \
1263 AVENIR: faire que ça marche sous Windows
1265 Ce @emph{makefile} n'est malheureusement pas opérationnel sous Windows.
1266 La seule alternative qui s'offre aux utilisateurs de Windows consiste à
1267 créer un fichier de traitement par lot (@code{.bat}) qui contienne les
1268 différentes commandes successives. Bien que cette manière de procéder
1269 ne tienne aucun compte des dépendances entre fichiers, elle permet de
1270 réduire le nombre de processus à lancer dans une seule commande. Vous
1271 devrez enregistrer les lignes suivantes dans un fichier
1272 @code{construire.bat} ou @code{construire.cmd}. Ce fichier pourra être
1273 exécuté soit en ligne de commande, soit par un double clic sur son
1277 lilypond-book --output=out --pdf monprojet.lytex
1283 copy out\monprojet.pdf MonProjet.pdf
1288 Manuel d'utilisation :
1289 @rprogram{Setup for MacOS X},
1290 @rprogram{Command-line usage},
1291 @rprogram{LilyPond-book}