1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
4 Translation of GIT committish: b5bcf58b17f2e5d8a76740050fe9b7212748bd7b
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. For details, see the Contributors'
8 Guide, node Updating translation committishes..
13 @c Translators: Ludovic Sardain, Jean-Charles Malahieude
14 @c Translation checkers: Jean-Yves Baudais, Valentin Villenave, John Mandereau
16 @node Suggestions pour la saisie de fichiers LilyPond
17 @chapter Suggestions pour la saisie de fichiers LilyPond
18 @translationof Suggestions for writing files
20 Maintenant vous êtes prêt à travailler sur de plus gros fichiers
21 LilyPond -- des pièces entières, et plus seulement les petits
22 exemples du tutoriel. Mais comment devriez-vous vous y prendre ?
24 Tant que LilyPond parvient à comprendre vos fichiers et produit le
25 résultat que vous souhaitez, peu importe la manière dont le code est
26 organisé. Néanmoins, quelques critères doivent être pris en compte
27 lorsque l'on écrit un fichier LilyPond.
31 Si vous faites une erreur, la structure même du fichier LilyPond
32 peut permettre de la localiser plus ou moins facilement.
35 Et si vous souhaitez partager vos fichiers avec quelqu'un d'autre, ou si
36 vous souhaitez modifier vos propres fichiers dans quelques années ?
37 Si certains fichiers LilyPond sont compréhensibles au premier coup
38 d'œil, d'autres vous feront vous arracher les cheveux pendant une heure.
41 Et si vous souhaitez mettre à jour votre fichier pour l'utiliser avec
42 une version plus récente de LilyPond ? La syntaxe du langage d'entrée
43 change parfois lorsque LilyPond s'améliore. La plupart des changements
44 peuvent être appliqués automatiquement avec @code{convert-ly}, mais
45 quelques-uns peuvent requérir une intervention manuelle. Vos fichiers
46 LilyPond peuvent être structurés de manière à faciliter leur mise à
51 * Suggestions générales::
52 * Gravure de musique existante::
53 * Projets d'envergure::
54 * Résolution de problèmes::
55 * De la commande make et des fichiers Makefile::
59 @node Suggestions générales
60 @section Suggestions générales
61 @translationof General suggestions
63 Voici quelques conseils qui vous permettront d'éviter, voire même
64 résoudre, la plupart des problèmes de saisie.
67 @item @strong{Ajoutez toujours le numéro de version dans chaque
68 fichier}, quelle que soit sa taille. Par expérience, il est très
69 difficile de se rappeler quelle version de LilyPond a servi au moment de
70 la création d'un fichier. Ceci s'avèrera d'autant plus utile lors d'une
71 @rprogramnamed{Mise à jour avec convert-ly, mise à jour}
72 (@command{convert-ly} requiert la présence d'une ligne @code{\version})
73 ou si vous transmettez votre fichier à d'autres utilisateurs -- y
74 compris pour demander de l'aide sur les listes de diffusion. Vous
75 noterez par ailleurs que tous les fichiers modèles de LilyPond ont une
76 mention @code{\version}.
78 @item @strong{Une mesure par ligne de texte}.
79 Si la musique en elle-même ou le résultat que vous désirez contient
80 quelque chose de compliqué, il est souvent bon de n'écrire qu'une seule
81 mesure par ligne. Économiser de la place en tassant huit mesures par
82 ligne, ça ne vaut pas vraiment le coup si l'on doit corriger vos
85 @item @strong{Ajoutez des contrôles}
86 @rusernamed{Vérifications d'octave,d'octaviation} et
87 @rusernamed{Vérification des limites et numéros de mesure,de limite ou
88 numéro de mesure}. Si vous avez ajouté des contrôles de loin en loin,
89 et que vous faites une erreur, vous pourrez la retrouver plus
90 rapidement. « De loin en loin », qu'est-ce à dire ? Cela dépend
91 de la complexité de la musique. Pour de la musique très simple, à
92 certains endroits stratégiques. Pour de la musique très complexe ou
93 avec une multiplicité de voix, peut-être à chaque mesure.
95 @item @strong{Ajoutez des commentaires}.
96 Utilisez soit des numéros de mesure (assez souvent), soit des références
97 au contenu musical -- « second thème des violons », « quatrième
98 variation », etc. Vous pouvez ne pas avoir besoin des commentaires
99 lorsque vous écrivez une pièce pour la première fois, mais si vous
100 souhaitez y revenir deux ou trois ans plus tard pour changer quelque
101 chose, ou si vous donnez le fichier source à un ami, ce sera beaucoup
102 plus difficile de déterminer vos intentions ou la manière dont votre
103 fichier est structuré si vous n'y avez pas adjoint de commentaires.
105 @item @strong{Mentionnez les durées}
106 au début de chaque section ou variable. Si vous saisissez @code{c4 d e}
107 au début d'une phrase, vous vous épargnerez des problèmes si, plus tard,
108 vous modifiez votre musique.
110 @item @strong{Indentez les accolades et indications de musique en parallèle}.
111 Beaucoup de problèmes viennent d'un défaut de parité entre @code{@{} et
112 @code{@}} ou @code{<<} et @code{>>}. Par exemple,
132 est bien plus facile à appréhender que
135 \new Staff @{ \relative g' @{ r4 g8 g c4 c8 d | e4 r8
137 << @{ f8 c c @} \new Staff @{ f8 f c @} >> r4 | @} @}
141 @item @strong{Séparez les affinages de mise en forme}
142 de la musique elle-même, ne serait-ce qu'en positionnant les dérogations
143 au sein du bloc @code{\layout} :
147 @var{@dots{}musique@dots{}}
149 \override TabStaff.Stemstencil = ##f
154 Ceci n'aura par pour effet de générer un contexte supplémentaire, mais
155 s'appliquera dès sa création. Voyez
156 @rlearning{Économie de saisie grâce aux identificateurs et fonctions} et
157 @rlearning{Feuilles de style}.
162 @node Gravure de musique existante
163 @section Gravure de musique existante
164 @translationof Typesetting existing music
166 Si vous saisissez de la musique à partir d'une partition existante,
167 c'est-à-dire de la musique déjà écrite,
172 n'entrez qu'un seul système de la partition originale
173 à la fois -- avec toujours une seule mesure par ligne de texte --,
174 et vérifiez chaque système lorsqu'il est terminé. Vous pouvez
175 utiliser les commandes @code{showLastLength} et @code{showFirstLength}
176 pour accélérer la compilation -- voir
177 @ruser{Ignorer des passages de la partition} ;
180 définissez @code{mBreak = @{ \break @}} et insérez @code{\mBreak} dans
181 le fichier d'entrée pour obtenir des sauts de ligne identiques à la
182 partition originale. Cela facilite la comparaison entre la partition
183 originale et la partition de LilyPond. Lorsque vous avez fini de relire
184 votre musique, vous pouvez définir @code{mBreak = @{ @}}
185 pour enlever tous ces sauts de ligne, et laisser LilyPond placer les
186 sauts de ligne selon son propre algorithme ;
189 encadrez les notes d'une partie pour instrument transpositeur dans un
192 \transpose c @var{tonalité-naturelle} @{@dots{}@}
194 (où @var{tonalité-naturelle} correspond à celle de l'instrument en
195 question) de telle sorte que la musique comprise dans cette variable se
196 retrouve en ut. Vous pourrez toujours transposer à l'inverse si besoin
197 lorsque vous ferez appel à cette variable. Des erreurs de transposition
198 seront moins susceptibles de se produire si la musique de toutes les
199 variables est dans la même et unique tonalité.
201 De la même manière, prenez toujours le do comme note de départ ou
202 d'arrivée. Ceci aura pour simple conséquence que les autres tonalités
203 que vous utiliserez seront celles propres à chacun des instruments --
204 sib pour une trompette en si bémol, ou lab pour une clarinette en la bémol.
209 @node Projets d'envergure
210 @section Projets d'envergure
211 @translationof Large projects
213 Lorsque l'on travaille sur un gros projet, il devient vital
214 de structurer clairement ses fichiers LilyPond.
218 @item @strong{Utilisez un identificateur pour chaque voix},
219 avec un minimum de structure dans la définition. La structure de la
220 section @code{\score} est la plus susceptible de changer, notamment
221 dans une nouvelle version de LilyPond, alors que la définition du
222 @code{violon} l'est beaucoup moins.
225 violon = \relative c'' @{
238 @item @strong{Séparez les retouches} des définitions de musique.
239 Nous vous avons déjà invité à adopter une telle pratique, qui
240 par ailleurs devient vitale pour des projets d'importance. Nous
241 pouvons avoir besoin de changer la définition de @code{fpuisp}, mais
242 dans ce cas nous n'aurons besoin de le faire qu'une seule fois, et nous
243 pourrons encore éviter de modifier quoi que ce soit à l'intérieur de la
244 définition du @code{violon}.
248 \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
249 violon = \relative c'' @{
257 @node Résolution de problèmes
258 @section Résolution de problèmes
259 @translationof Troubleshooting
261 Tôt ou tard, vous écrirez un fichier que LilyPond ne peut pas
262 compiler. Les messages que LilyPond affiche peuvent vous aider à
263 trouver l'erreur, mais dans beaucoup de cas vous aurez besoin de faire
264 quelques recherches pour déterminer la source du problème.
266 Pour ce faire, les outils les plus puissants sont le commentaire de
267 fin de ligne, indiqué par @code{%}, et le commentaire multilignes (ou
268 bloc de commentaire), indiqué par @code{%@{ @dots{} %@}}. Si vous ne
269 pouvez localiser le problème, commencez par mettre en commentaire de
270 grandes parties de votre fichier source. Après avoir mis en
271 commentaire une section, essayez de compiler à nouveau. Si cela
272 fonctionne, c'est que le problème se situe dans cette partie du
273 fichier. Si cela ne fonctionne pas, continuez à mettre en commentaire
274 d'autres sections, jusqu'à ce que vous ayez quelque chose qui compile.
276 Dans un cas extrême, vous pourriez en arriver à
290 c'est-à-dire un fichier sans aucune musique.
292 Si cela se produit, ne vous découragez pas. Décommentez un peu, la
293 partie de basse par exemple, et voyez si ça fonctionne. Si ce n'est pas
294 le cas, placez en commentaire toute la partie de basse, mais laissez
295 @code{\basse} décommenté dans le bloc @code{\score}.
298 basse = \relative c' @{
306 Maintenant commencez à décommenter petit à petit le partie de
307 @code{basse} jusqu'à ce que vous localisiez la ligne qui pose
310 Une autre technique de débogage très utile est la construction
311 d'un @rwebnamed{Exemples minimaux,exemple minimaliste}.
314 @node De la commande make et des fichiers Makefile
315 @section De la commande make et des fichiers Makefile
316 @translationof Make and Makefiles
321 La plupart des plates-formes sur lesquelles tourne LilyPond disposent
322 d'un logiciel appelé @code{make}. Ce logiciel va lire un fichier
323 spécial, nommé @code{Makefile}, qui contient tout ce qu'il
324 faut -- les dépendances entre certains fichiers, les instructions
325 successives à traiter par le système -- pour aboutir au fichier que
326 vous désirez obtenir. Il pourrait par exemple contenir tout ce qu'il
327 faut pour produire @file{ballade.pdf} et @file{ballade.midi} à partir de
328 @file{ballade.ly} en lançant LilyPond.
330 La création d'un @code{Makefile} peut se révéler pertinente pour
331 certains projets, que ce soit par simple goût personnel ou bien par
332 respect de ceux qui pourront accéder à vos sources. Cette manière de
333 procéder est particulièrement indiquée lorsque vous travaillez sur un
334 projet de grande envergure impliquant de nombreuses inclusions de
335 fichiers et différentes éditions -- par exemple un conducteur et un
336 matériel d'orchestre complet avec la partition pour le chef et une
337 partition séparée pour chacun des pupitres -- ou bien si votre projet
338 requiert certaines commandes particulières comme @code{lilypond-book}.
339 Les @emph{Makefiles} varient tant en complexité qu'en flexibilité selon
340 les besoin et les aptitudes de celui qui les crée. Le programme GNU
341 Make est installé par défaut sur les distributions GNU/Linux et sur
342 MacOS X, et il en existe une version pour les environnements Windows.
344 Consultez le @strong{GNU Make Manual} pour plus de détails sur ce dont
345 @code{make} est capable -- vous pourrez même en trouver des versions
346 françaises à l'aide des moteurs de recherche --, dans la mesure où ce
347 qui suit ne donne qu'un bref aperçu de ses possibilités.
349 Les commandes permettant de définir les règles diffèrent selon la
350 plate-forme : si les différents GNU/Linux et MacOS X utilisent
351 @code{bash}, Windows utilise @code{cmd}. Dans le cas de MacOS X,
352 vous devrez toutefois configurer votre système de telle sorte qu'il
353 utilise l'interpréteur en ligne de commande. Voici quelques exemples de
354 fichier @emph{Makefile}, avec une version pour GNU/Linux ou MacOS et une
357 Pour commencer, une pièce à quatre mouvements pour orchestre et dont les
358 fichiers sont répartis selon l'arborescence suivante :
377 | |-- symphonieIII.ly
381 | |-- symphonie-alto.ly
382 | |-- symphonie-cello.ly
383 | |-- symphonie-cor.ly
384 | |-- symphonie-hautbois.ly
385 | |-- symphonie-violonUn.ly
386 | `-- symphonie-violonDeux.ly
387 `-- symphonieDefs.ily
390 Les fichiers @file{.ly} des répertoires @code{Partitions} et
391 @code{Pupitres} récupéreront la notation des fichiers @file{.ily}
392 contenus dans le répertoire @code{Notes} :
395 %%% début du fichier "symphonie-cello.ly"
396 \include ../symphonieDefs.ily
397 \include ../Notes/cello.ily
400 Le @emph{Makefile} répertorie des cibles correspondant à @code{score}
401 (l'intégrale au format conducteur), @code{mouvements} (chacun des
402 mouvements au format conducteur) et @code{pupitres} (une partition par
403 pupitre). Il contient aussi une cible @code{archive} chargée de générer
404 une archive des fichiers source qui pourra être diffusée sur la toile ou
405 transmise par courriel. Voici ce que contiendrait ce @emph{Makefile}
406 pour GNU/Linux ou MacOS X. Ce fichier doit être enregistré sous le nom
407 de @code{Makefile} à la racine du projet -- ici @code{Symphonie}.
409 @warning{Lorsque vous définissez une cible ou une règle sur plusieurs
410 lignes, les lignes à partir de la deuxième @strong{doivent} débuter par
411 une tabulation, non pas par des espaces.}
414 # Le préfixe au nom des fichiers résultants
416 # Détermination du nombre de processeurs
417 CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
418 # La commande d'appel à lilypond
419 LILY_CMD = lilypond -ddelete-intermediate-files \
420 -dno-point-and-click -djob-count=$(CPU_CORES)
422 # Les suffixes utilisés dans ce Makefile
423 .SUFFIXES: .ly .ily .pdf .midi
425 # Les fichiers sources et résultants sont recherchés dans les répertoires
426 # listés dans la variable VPATH. Ceux-ci sont tous des sous-répertoires
427 # du répertoire courant (fourni par la variable de GNU make `CURDIR').
429 $(CURDIR)/Partitions \
434 # La règle type pour créer un PDF et un MIDI à partir d'un fichier
436 # Les .pdf résultants iront dans le sous-répertoire "PDF" et les fichiers
437 # .midi dans le sous-répertoire "MIDI".
439 $(LILY_CMD) $<; \ # cette ligne commence par une tabulation
440 if test -f "$*.pdf"; then \
443 if test -f "$*.midi"; then \
444 mv "$*.midi" MIDI/; \
455 # Les dépendances selon le mouvement.
456 $(piece)I.pdf: $(piece)I.ly $(notes)
457 $(piece)II.pdf: $(piece)II.ly $(notes)
458 $(piece)III.pdf: $(piece)III.ly $(notes)
459 $(piece)IV.pdf: $(piece)IV.ly $(notes)
461 # Les dépendances pour la partition intégrale.
462 $(piece).pdf: $(piece).ly $(notes)
464 # Les dépendances pour les pupitres.
465 $(piece)-alto.pdf: $(piece)-alto.ly alto.ily
466 $(piece)-cello.pdf: $(piece)-cello.ly cello.ily
467 $(piece)-cor.pdf: $(piece)-cor.ly cor.ily
468 $(piece)-hautbois.pdf: $(piece)-hautbois.ly hautbois.ily
469 $(piece)-violonUn.pdf: $(piece)-violonUn.ly violonUn.ily
470 $(piece)-violonDeux.pdf: $(piece)-violonDeux.ly violonDeux.ily
472 # Lancer `make score' pour générer l'intégrale des quatre mouvements
473 # en un seul fichier.
477 # Lancer `make parties' pour obtenir tous les pupitres.
478 # Lancer `make toto.pdf' pour obtenir la partie instrumentale de toto.
479 # Par exemple : `make symphonie-cello.pdf'.
481 parties: $(piece)-cello.pdf \
482 $(piece)-violonUn.pdf \
483 $(piece)-violonDeux.pdf \
485 $(piece)-hautbois.pdf \
488 # Lancer `make mouvements' pour générer un fichier séparé pour chacun
491 mouvements: $(piece)I.pdf \
496 all: score parties mouvements
499 tar -cvvf symphonie.tar \ # cette ligne commence par une tabulation
500 --exclude=*pdf --exclude=*~ \
501 --exclude=*midi --exclude=*.tar \
506 Les choses se compliquent sous Windows. Une fois GNU Make pour Windows
507 téléchargé et installé, il vous faudra correctement définir le chemin
508 d'accès au programme @emph{Make} -- dans les variables d'environnement
509 du système -- afin que l'interpréteur de commandes DOS puisse le
510 localiser. Pour cela, faites un clic droite sur @qq{Poste de travail},
511 choisissez @code{Propriétés} puis @code{Avancées}. Cliquez sur
512 @code{Variables d'environnement} puis, dans l'onglet
513 @code{Variables système}, mettez @code{path} en surbrillance et
514 cliquez sur @code{Modifier}. Ajoutez alors le chemin d'accès complet à
515 l'exécutable de GNU Make, qui devrait ressembler à :
518 C:\Program Files\GnuWin32\bin
521 Il va également falloir adapter le @emph{makefile} aux particularités de
522 l'interpréteur de commandes et à la présence d'espaces dans le nom de
523 certains répertoire de ce système.
524 La cible @code{archive} est tout bonnement supprimée, puisque Windows ne
525 dispose pas de la commande @code{tar}. Enfin, les fichiers MIDI ont une
526 extension par défaut propre à Windows.
530 ## VERSION POUR WINDOWS
533 LILY_CMD = lilypond -ddelete-intermediate-files \
534 -dno-point-and-click \
535 -djob-count=$(NUMBER_OF_PROCESSORS)
537 #get the 8.3 name of CURDIR (workaround for spaces in PATH)
538 workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
541 .SUFFIXES: .ly .ily .pdf .mid
544 $(workdir)/Partitions \
546 $(workdir)/Pupitress \
550 $(LILY_CMD) $< # cette ligne commence par une tabulation
551 if exist "$*.pdf" move /Y "$*.pdf" PDF/ # tabulation au début
552 if exist "$*.mid" move /Y "$*.mid" MIDI/ # tabulation au début
564 $(piece)I.pdf: $(piece)I.ly $(notes)
565 $(piece)II.pdf: $(piece)II.ly $(notes)
566 $(piece)III.pdf: $(piece)III.ly $(notes)
567 $(piece)IV.pdf: $(piece)IV.ly $(notes)
569 $(piece).pdf: $(piece).ly $(notes)
571 $(piece)-cello.pdf: $(piece)-cello.ly cello.ily
572 $(piece)-cor.pdf: $(piece)-cor.ly cor.ily
573 $(piece)-hautbois.pdf: $(piece)-hautbois.ly hautbois.ily
574 $(piece)-alto.pdf: $(piece)-alto.ly alto.ily
575 $(piece)-violonUn.pdf: $(piece)-violonUn.ly violonUn.ily
576 $(piece)-violonDeux.pdf: $(piece)-violonDeux.ly violonDeux.ily
582 parties: $(piece)-cello.pdf \
583 $(piece)-violonUn.pdf \
584 $(piece)-violonDeux.pdf \
586 $(piece)-hautbois.pdf \
590 mouvements: $(piece)I.pdf \
595 all: score parties mouvements
599 Le @emph{Makefile} suivant convient pour un document
600 @command{lilypond-book} réalisé avec @LaTeX{}. Ce projet contiendra un
601 index, ce qui nécessitera de lancer une deuxième fois @command{latex}
602 pour mettre à jour les liens. Les fichiers résultants iront dans le
603 répertoire @code{out} pour ce qui est des pdf et dans le répertoire
604 @code{htmlout} pour ce qui est du html.
613 LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex
614 LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex
615 PDF=cd $(OUTDIR) && pdflatex $(FILE)
616 HTML=cd $(WEBDIR) && latex2html $(FILE)
617 INDEX=cd $(OUTDIR) && makeindex $(FILE)
618 PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf &
623 $(LILYBOOK_PDF) # tabulation en début de ligne
624 $(PDF) # tabulation en début de ligne
625 $(INDEX) # tabulation en début de ligne
626 $(PDF) # tabulation en début de ligne
627 $(PREVIEW) # tabulation en début de ligne
630 $(LILYBOOK_HTML) # tabulation en début de ligne
631 $(HTML) # tabulation en début de ligne
632 cp -R $(WEBDIR)/$(FILE)/ ./ # tabulation en début de ligne
633 $(BROWSER) $(FILE)/$(FILE).html & # tabulation en début de ligne
636 cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf # tabulation en début de ligne
639 rm -rf $(OUTDIR) # tabulation en début de ligne
642 rm -rf $(WEBDIR) # tabulation en début de ligne
645 tar -cvvf monprojet.tar \ # tabulation en début de ligne
647 --exclude=htmlout/* \
648 --exclude=monprojet/* \
655 AVENIR: faire que ça marche sous Windows
657 Ce @emph{makefile} n'est malheureusement pas opérationnel sous Windows.
658 La seule alternative qui s'offre aux utilisateurs de Windows consiste à
659 créer un fichier de traitement par lot (@code{.bat}) qui contienne les
660 différentes commandes successives. Bien que cette manière de procéder
661 ne tienne aucun compte des dépendances entre fichiers, elle permet de
662 réduire le nombre de processus à lancer dans une seule commande. Vous
663 devrez enregistrer les lignes suivantes dans un fichier
664 @code{construire.bat} ou @code{construire.cmd}. Ce fichier pourra être
665 exécuté soit en ligne de commande, soit par un double clic sur son
669 lilypond-book --output=out --pdf monprojet.lytex
675 copy out\monprojet.pdf MonProjet.pdf
679 Manuel d'utilisation :
680 @ref{Utilisation en ligne de commande},