]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/fr/user/working.itely
Merge master into nested-bookparts
[lilypond.git] / Documentation / fr / user / working.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
2 @c This file is part of lilypond.tely
3 @ignore
4    Translation of GIT committish: bfbaf6488d99ab4cdfcb4efdc67eaca63a636106
5
6    When revising a translation, copy the HEAD committish of the
7    version that you are working on.  See TRANSLATION for details.
8 @end ignore
9
10 @c \version "2.11.61"
11
12 @c Translators: Ludovic Sardain
13 @c Translation checkers: Jean-Yves Baudais, Valentin Villenave, John Mandereau, Jean-Charles Malahieude
14
15 @node Working on LilyPond projects
16 @chapter Working on LilyPond projects
17
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.
22
23 @menu
24 * Suggestions for writing LilyPond input files::
25 * When things don't work::      
26 * Scores and parts::            
27 @end menu
28
29 @node Suggestions for writing LilyPond input files
30 @section Suggestions for writing LilyPond input files
31
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 ?
35
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.
40
41 @itemize @bullet
42 @item Si vous faites une erreur, la structure même du fichier LilyPond
43 peut permettre de la localiser plus ou moins facilement.
44
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
49 pendant une heure.
50
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.
58 @end itemize
59
60 @menu
61 * General suggestions::         
62 * Typesetting existing music::  
63 * Large projects::              
64 * Saving typing with variables and functions::  
65 * Style sheets::                
66 @end menu
67
68 @node General suggestions
69 @subsection General suggestions
70
71 Voici quelques conseils qui peuvent vous éviter certains problèmes ou
72 en résoudre d'autres.
73
74 @itemize
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.
82
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.
90
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.
96
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.
106
107 @item @strong{Indentez les accolades}.  Beaucoup de problèmes
108 viennent d'un défaut de parité entre @code{@{} et @code{@}}.
109
110 @item @strong{Séparez les affinages de mise en forme} de la musique
111 elle-même. Voyez @ref{Saving typing with variables and functions} et
112 @ref{Style sheets}.
113
114 @end itemize
115
116
117 @node Typesetting existing music
118 @subsection Typesetting existing music
119
120 Si vous saisissez de la musique à partir d'une partition existante,
121 c'est-à-dire de la musique déjà écrite,
122
123 @itemize @bullet
124
125 @item n'entrez qu'un seul système de la partition originale
126 à la fois --- mais toujours une seule mesure par ligne de texte ---,
127 et vérifiez chaque système lorsqu'il est terminé.  Vous pouvez
128 utiliser la commande @code{showLastLength} pour accélérer la
129 compilation --- voir @ruser{Skipping corrected music} ;
130
131 @item définissez @code{mBreak = @{\break @}} et insérez
132 @code{\mBreak} dans le fichier d'entrée pour obtenir des sauts de
133 ligne identiques à la partition originale.  Cela facilite la
134 comparaison entre la partition originale et la partition de 
135 LilyPond.  Lorsque vous avez fini de relire votre musique, vous pouvez
136 définir @code{mBreak = @{ @}} pour enlever tous ces sauts de ligne, et
137 laisser LilyPond placer les sauts de ligne selon son propre algorithme.
138
139 @end itemize
140
141
142 @node Large projects
143 @subsection Large projects
144
145 Lorsque l'on travaille sur un gros projet, il devient vital
146 de structurer clairement ses fichiers LilyPond.
147
148 @itemize @bullet
149
150 @item @strong{Utilisez un identificateur pour chaque voix},
151 avec un minimum de structure dans la définition.  La structure de la
152 section @code{\score} est la plus susceptible de changer, notamment
153 dans une nouvelle version de LilyPond, alors que la définition du
154 @code{violon} l'est beaucoup moins.
155
156 @example
157 violin = \relative c'' @{
158 g4 c'8. e16
159 @}
160 ...
161 \score @{
162  \new GrandStaff @{
163    \new Staff @{
164      \violin
165    @}
166  @}
167 @}
168 @end example
169
170 @item @strong{Séparez les retouches} des définitions de
171 musique.  Ce conseil a été vu dans @ref{General suggestions},
172 mais pour les projets d'importance c'est absolument vital.  Nous
173 pouvons avoir besoin de changer la définition de
174 @code{fthenp}, mais dans ce cas nous n'aurons besoin de le faire
175 qu'une seule fois, et nous pourrons encore éviter de
176 modifier quoi que ce soit à l'intérieur de la définition
177 du @code{violon}.
178
179 @example
180 fthenp = _\markup@{
181  \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
182 violin = \relative c'' @{
183 g4\fthenp c'8. e16
184 @}
185 @end example
186
187 @end itemize
188
189
190 @node Saving typing with variables and functions
191 @subsection Saving typing with variables and functions
192
193 @cindex variables
194 @cindex identificateurs
195
196 Jusqu'à maintenant, vous avez vu ce type de code :
197
198 @lilypond[quote,verbatim,ragged-right]
199 hornNotes = \relative c'' { c4 b dis c }
200 \score {
201   {
202     \hornNotes
203   }
204 }
205 @end lilypond
206
207 Vous comprendrez combien cela peut être utile pour écrire de la
208 musique minimaliste :
209
210 @lilypond[quote,verbatim,ragged-right]
211 fragmentA = \relative c'' { a4 a8. b16 }
212 fragmentB = \relative c'' { a8. gis16 ees4 }
213 violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA }
214 \score {
215   {
216     \violin
217   }
218 }
219 @end lilypond
220
221 Cependant, vous pouvez aussi utiliser ces identificateurs
222 --- aussi connus sous le nom de variables, macros, ou commandes
223 (définies par l'utilisateur) --- pour des retouches :
224
225 @lilypond[quote,verbatim,ragged-right]
226 dolce = \markup{ \italic \bold dolce }
227 padText = { \once \override TextScript #'padding = #5.0 }
228 fthenp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
229 violin = \relative c'' {
230   \repeat volta 2 {
231     c4._\dolce b8 a8 g a b |
232     \padText
233     c4.^"hi there!" d8 e' f g d |
234     c,4.\fthenp b8 c4 c-. |
235   }
236 }
237 \score {
238   {
239     \violin
240   }
241 \layout{ragged-right=##t}
242 }
243 @end lilypond
244
245 Ces identificateurs sont évidemment utiles pour économiser de la
246 frappe.  Mais ils peuvent l'être même si vous ne les utilisez qu'une
247 seule fois : ils réduisent la complexité.  Regardons l'exemple
248 précédent sans aucun identificateur.  C'est beaucoup plus laborieux à
249 lire, et particulièrement la dernière ligne.
250
251 @example
252 violin = \relative c'' @{
253   \repeat volta 2 @{
254     c4._\markup@{ \italic \bold dolce @} b8 a8 g a b |
255     \once \override TextScript #'padding = #5.0
256     c4.^"hi there!" d8 e' f g d |
257     c,4.\markup@{ \dynamic f \italic \small @{ 2nd @}
258       \hspace #0.1 \dynamic p @} b8 c4 c-. |
259   @}
260 @}
261 @end example
262
263 Jusqu'ici nous avons vu des substitutions statiques : quand LilyPond
264 rencontre @code{\padText}, il le remplace par le contenu que nous lui
265 avons défini --- c'est-à-dire le contenu à droite de @code{padText=}.
266
267 LilyPond gère également des substitutions non-statiques --- vous
268 pouvez les voir comme des fonctions.
269
270 @lilypond[quote,verbatim,ragged-right]
271 padText =
272 #(define-music-function (parser location padding) (number?)
273   #{
274     \once \override TextScript #'padding = #$padding
275   #})
276
277 \relative c''' {
278   c4^"piu mosso" b a b
279   \padText #1.8
280   c4^"piu mosso" d e f
281   \padText #2.6
282   c4^"piu mosso" fis a g
283 }
284 @end lilypond
285
286 Utiliser les identificateurs est aussi un bon moyen pour vous épargner
287 du travail si la syntaxe de LilyPond change un jour --- voir
288 @ref{Updating old files}.  Si vous avez une seule définition, par
289 exemple @code{\dolce}, pour tous vos fichiers (voir @ref{Style
290 sheets}), et que la syntaxe change, alors vous n'aurez qu'à mettre à
291 jour votre seule définition @code{\dolce}, au lieu de devoir modifier
292 chaque fichier @code{.ly}.
293
294
295 @node Style sheets
296 @subsection Style sheets
297
298 La sortie que produit LilyPond peut être largement modifiée --- voir
299 @ref{Tweaking output} pour plus de détails.  Mais que faire si vous
300 avez beaucoup de fichiers auxquels vous souhaitez appliquer vos
301 retouches ? Ou si vous souhaitez simplement séparer les retouches de
302 la musique elle-même ?  Rien de plus facile.
303
304 Prenons un exemple.  Ne vous inquiétez pas si vous ne comprenez pas
305 les parties avec tous les @code{#()}.  Celles-ci sont expliquées dans
306 @ref{Advanced tweaks with Scheme}.
307
308 @lilypond[quote,verbatim,ragged-right]
309 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
310   #:line(#:dynamic "mp" #:text #:italic "dolce" )))
311 tempoMark = #(define-music-function (parser location markp) (string?)
312 #{
313   \once \override Score . RehearsalMark #'self-alignment-X = #left
314   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
315   \mark \markup { \bold $markp }
316 #})
317
318 \relative c'' {
319   \tempo 4=50
320   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
321   \tempoMark "Poco piu mosso"
322   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
323 }
324 @end lilypond
325
326 Il y a quelques problèmes de chevauchement ; nous allons arranger
327 cela en utilisant les techniques de @ref{Moving objects}.  On peut
328 aussi faire quelque chose pour les définitions de @code{mpdolce}
329 et @code{tempoMark}.  Elles produisent le résultat que nous désirons,
330 mais nous pourrions aussi vouloir les utiliser dans une autre pièce.
331 Il suffirait de les copier et les coller au début de chaque
332 fichier, mais c'est fastidieux.  De plus, cela laisse les définitions
333 dans nos fichiers de musique, et je trouve personnellement tous ces
334 @code{#()} assez laids.  Stockons-les dans un autre fichier :
335
336 @example
337 %%% enregistrez ceci dans un fichier nommé "definitions.ly"
338 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
339   #:line(#:dynamic "mp" #:text #:italic "dolce" )))
340 tempoMark = #(define-music-function (parser location markp) (string?)
341 #@{
342   \once \override Score . RehearsalMark #'self-alignment-X = #left
343   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
344   \mark \markup @{ \bold $markp @}
345 #@})
346 @end example
347
348 Maintenant, modifions notre musique (enregistrez ce fichier
349 sous @file{"musique.ly"}).
350
351 @c  We have to do this awkward example/lilypond-non-verbatim
352 @c  because we can't do the \include stuff in the manual.
353
354 @example
355 \include "definitions.ly"
356
357 \relative c'' @{
358   \tempo 4=50
359   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
360   \once \override Score.RehearsalMark #'padding = #2.0
361   \tempoMark "Poco piu mosso"
362   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
363 @}
364 @end example
365
366 @lilypond[quote,ragged-right]
367 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
368   #:line(#:dynamic "mp" #:text #:italic "dolce" )))
369 tempoMark = #(define-music-function (parser location markp) (string?)
370 #{
371   \once \override Score . RehearsalMark #'self-alignment-X = #left
372   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
373   \mark \markup { \bold $markp }
374 #})
375
376 \relative c'' {
377   \tempo 4=50
378   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
379   \once \override Score.RehearsalMark #'padding = #2.0
380   \tempoMark "Poco piu mosso"
381   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
382 }
383 @end lilypond
384
385 C'est mieux, mais effectuons encore quelques retouches.  Le glissando
386 est peu visible, c'est pourquoi nous allons l'épaissir et le
387 rapprocher des têtes de notes.  Déplaçons l'indication métronomique
388 au-dessus de la clef, au lieu de la laisser au-dessus de la première
389 note.  Et pour finir, mon professeur de composition déteste les
390 chiffrages de mesure en @qq{C}, nous allons donc le transformer en @qq{4/4}.
391
392 Cependant, ne changez pas le fichier @file{musique.ly}.  Remplacez le
393 fichier @file{definitions.ly} par ceci :
394
395 @example
396 %%%  definitions.ly
397 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
398   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
399 tempoMark = #(define-music-function (parser location markp) (string?)
400 #@{
401   \once \override Score . RehearsalMark #'self-alignment-X = #left
402   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
403   \mark \markup @{ \bold $markp @}
404 #@})
405
406 \layout@{
407   \context @{ \Score
408     \override MetronomeMark #'extra-offset = #'(-9 . 0)
409     \override MetronomeMark #'padding = #'3
410   @}
411   \context @{ \Staff
412     \override TimeSignature #'style = #'numbered
413   @}
414   \context @{ \Voice
415     \override Glissando #'thickness = #3
416     \override Glissando #'gap = #0.1
417   @}
418 @}
419 @end example
420
421 @lilypond[quote,ragged-right]
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?)
425 #{
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 }
429 #})
430
431 \layout{
432   \context { \Score
433     \override MetronomeMark #'extra-offset = #'(-9 . 0)
434     \override MetronomeMark #'padding = #'3
435   }
436   \context { \Staff
437     \override TimeSignature #'style = #'numbered
438   }
439   \context { \Voice
440     \override Glissando #'thickness = #3
441     \override Glissando #'gap = #0.1
442   }
443 }
444
445 \relative c'' {
446   \tempo 4=50
447   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
448   \once \override Score.RehearsalMark #'padding = #2.0
449   \tempoMark "Poco piu mosso"
450   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
451 }
452 @end lilypond
453
454 C'est encore mieux !  Mais supposons maintenant que je veuille publier
455 cette pièce.  Mon professeur de composition n'aime pas les chiffrages
456 de mesure en @qq{C}, mais moi je les aime bien.  Copions l'actuel
457 @file{definitions.ly} dans le fichier @file{publication-web.ly}, et
458 modifions ce dernier.  Puisque la musique est destinée à produire un
459 fichier PDF affiché sur écran, nous allons aussi augmenter la taille
460 globale de police.
461
462 @example
463 %%%  definitions.ly
464 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
465   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
466 tempoMark = #(define-music-function (parser location markp) (string?)
467 #@{
468   \once \override Score . RehearsalMark #'self-alignment-X = #left
469   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
470   \mark \markup @{ \bold $markp @}
471 #@})
472
473 #(set-global-staff-size 23)
474 \layout@{
475   \context @{ \Score
476     \override MetronomeMark #'extra-offset = #'(-9 .  0)
477     \override MetronomeMark #'padding = #'3
478   @}
479   \context @{ \Staff
480   @}
481   \context @{ \Voice
482     \override Glissando #'thickness = #3
483     \override Glissando #'gap = #0.1
484   @}
485 @}
486 @end example
487
488 @lilypond[quote,ragged-right]
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?)
492 #{
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 }
496 #})
497
498 #(set-global-staff-size 23)
499 \layout{
500   \context { \Score
501     \override MetronomeMark #'extra-offset = #'(-9 . 0)
502     \override MetronomeMark #'padding = #'3
503   }
504   \context { \Voice
505     \override Glissando #'thickness = #3
506     \override Glissando #'gap = #0.1
507   }
508 }
509
510 \relative c'' {
511   \tempo 4=50
512   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
513   \once \override Score.RehearsalMark #'padding = #2.0
514   \tempoMark "Poco piu mosso"
515   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
516 }
517 @end lilypond
518
519 Il ne nous reste plus qu'à remplacer @code{\include "definitions.ly"}
520 par @code{\include "publication-web.ly"} dans notre fichier de musique.
521
522 Il est possible, bien sûr, de rendre cela encore plus pratique.  Nous
523 pourrions créer un fichier @file{definitions.ly} qui ne contiendrait
524 que les définitions de @code{mpdolce} et de @code{tempoMark}, un
525 fichier @file{publication-web.ly} qui ne contiendrait que la section
526 @code{layout} décrite ci-dessus et un fichier @file{universite.ly} qui
527 ne contiendrait que les retouches pour produire le résultat que mon
528 professeur préfère.  Le début du fichier @file{musique.ly} ressemblerait
529 alors à
530
531 @example
532 \include "definitions.ly"
533
534 %%%  Décommentez seulement une de ces deux lignes !
535 \include "publication-web.ly"
536 %\include "universite.ly"
537 @end example
538
539 Cette approche peut être utile même si vous ne produisez qu'un seul
540 jeu de partitions.  J'utilise personnellement une demi-douzaine de
541 fichiers de @qq{feuille de style} pour mes projets.  Je commence
542 chaque fichier de musique par @code{\include "../global.ly"} qui contient :
543
544 @example
545 %%%   global.ly
546 \version @w{"@version{}"}
547 #(ly:set-option 'point-and-click #f)
548 \include "../init/init-defs.ly"
549 \include "../init/init-mise-en-page.ly"
550 \include "../init/init-en-tetes.ly"
551 \include "../init/init-papier.ly"
552 @end example
553
554 @node When things don't work
555 @section When things don't work
556
557 @menu
558 * Updating old files::          
559 * Troubleshooting (taking it all apart)::  
560 * Minimal examples::            
561 @end menu
562
563 @node Updating old files
564 @subsection Updating old files
565
566 La syntaxe de LilyPond change de temps en temps.  Ces changements de
567 syntaxe du langage d'entrée accompagnent les améliorations du
568 logiciel.  Ces changements sont parfois destinés à rendre les fichiers
569 plus faciles à lire et à écrire, ou permettent d'intégrer de nouvelles
570 fonctionnalités.
571
572 LilyPond est fourni avec un utilitaire qui facilite cette mise à
573 jour : @command{convert-ly}.  Pour savoir comment utiliser ce programme,
574 voir @rprogram{Updating files with convert-ly}.
575
576 Malheureusement, @command{convert-ly} ne peut pas réaliser toutes les
577 modifications.  Il s'occupe des changements qui ne requièrent qu'une
578 simple substitution de texte --- comme @code{raggedright} devenant
579 @code{ragged-right} ---, les autres étant trop compliqués à effectuer.
580 Les changements de syntaxe qui ne sont pas gérés par @command{convert-ly}
581 sont énumérés dans @rprogram{Updating files with convert-ly}.
582
583 Par exemple, dans les versions 2.4 et antérieures de LilyPond,
584 les accents et les lettres non anglaises étaient entrées en
585 utilisant LaTeX --- par exemple, @samp{No\"el}.  À partir de la
586 version 2.6, le caratère @samp{ë} doit être entré directement
587 dans le fichier LilyPond comme caractère UTF-8.
588 @code{convert-ly} ne peut pas changer tous les caractères
589 LaTeX en caractères UTF-8 ; vous devez mettre à jour vos vieux
590 fichiers LilyPond manuellement.
591
592
593
594 @node Troubleshooting (taking it all apart)
595 @subsection Troubleshooting (taking it all apart)
596
597 Tôt ou tard, vous écrirez un fichier que LilyPond ne peut pas
598 compiler.  Les messages que LilyPond affiche peuvent vous aider à
599 trouver l'erreur, mais dans beaucoup de cas vous aurez besoin de faire
600 quelques recherches pour déterminer la source du problème.
601
602 Pour ce faire, les outils les plus puissants sont le commentaire de
603 fin de ligne, indiqué par @code{%}, et le commentaire multilignes (ou
604 bloc de commentaire), indiqué par @code{%@{ ... %@}}.  Si vous ne
605 pouvez localiser le problème, commencez par mettre en commentaire de
606 grandes parties de votre fichier d'entrée.  Après avoir mis en
607 commentaire une section, essayez de compiler à nouveau.  Si cela
608 fonctionne, c'est que le problème se situe dans cette partie du
609 fichier.  Si cela ne fonctionne pas, continuez à mettre en commentaire
610 d'autres sections, jusqu'à ce que vous ayez quelque chose qui compile.
611
612 Dans un cas extrême, vous pourriez en arriver à
613
614 @example
615 \score @{
616   <<
617     % \melodie
618     % \harmonie
619     % \basse
620   >>
621   \layout@{@}
622 @}
623 @end example
624
625 @noindent
626 c'est-à-dire un fichier sans aucune musique.
627
628 Si cela arrive, ne vous découragez pas.  Décommentez un peu, la partie
629 de basse par exemple, et voyez si ça fonctionne.  Si ce n'est pas le
630 cas, placez en commentaire toute la partie de basse, mais laissez
631 @code{\basse} décommenté dans le bloc @code{\score}.
632
633 @example
634 basse = \relative c' @{
635 %@{
636   c4 c c c
637   d d d d
638 %@}
639 @}
640 @end example
641
642 Maintenant commencez à décommenter petit à petit le partie de
643 @code{basse} jusqu'à ce que vous localisiez la ligne qui pose
644 problème.
645
646 Une autre technique de déboguage très utile est la construction
647 @iftex
648 de @ref{Minimal examples}.
649 @end iftex
650 @ifnottex
651 d'@ref{Minimal examples}.
652 @end ifnottex
653
654
655 @node Minimal examples
656 @subsection Minimal examples
657
658 Un exemple minimal est un exemple de code aussi court que possible.
659 De tels exemples sont bien plus compréhensibles que des exemples
660 longs.  Les exemples minimaux sont utilisés pour
661
662 @itemize
663 @item les rapports de bogue,
664 @item les demandes d'aide sur les listes de diffusion,
665 @item un ajout à
666 @uref{http://lsr@/.dsi@/.unimi@/.it/,LilyPond Snippet Repository}.
667 @end itemize
668
669 Pour construire un exemple minimal, la règle est très simple : enlevez
670 tout ce qui n'est pas nécessaire.  Il est préférable de commenter les
671 lignes non nécessaires plutôt que de les effacer : ainsi, si vous vous
672 apercevez que certaines étaient @emph{réellement} nécessaires, vous
673 pouvez les décommenter au lieu de les resaisir.
674
675 Il y a deux exceptions à cette règle du strict nécessaire :
676
677 @itemize
678 @item incluez le numéro de @code{\version} en début de fichier
679 @item si possible, utilisez @code{\paper@{ ragged-right=##t @}} au
680 début de votre exemple.
681 @end itemize
682
683 Tout l'intérêt d'un exemple minimal réside dans sa facilité de lecture :
684 @itemize
685 @item évitez d'utiliser des notes, armures ou métriques compliquées, à
686 moins que vous ne vouliez montrer quelque chose en rapport avec
687 celles-ci,
688 @item n'utilisez pas de commandes @code{\override} sauf si elles font
689 l'intérêt de l'exemple.
690 @end itemize
691
692 @node Scores and parts
693 @section Scores and parts
694
695 Dans la musique d'orchestre, toutes les notes sont imprimées deux fois.
696 D'abord dans les parties séparées destinées aux musiciens, et ensuite
697 dans le conducteur destiné au chef.  Les variables sont là pour vous éviter
698 un double travail.  La musique n'est entrée qu'une seule fois, et stockée dans
699 une variable, dont le contenu servira à imprimer à la fois la partie
700 séparée et la partition d'orchestre.
701
702 Il est judicieux de définir les notes dans un fichier séparé. Par
703 exemple, supposons que le fichier @file{musique-Cor.ly} contienne la
704 partie suivante pour un duo cor/@/basson.
705
706 @example
707 notesCor = \relative c @{
708   \time 2/4
709   r4 f8 a cis4 f e d
710 @}
711 @end example
712
713 @noindent
714 On établira alors une partie séparée en constituant un nouveau fichier :
715
716 @example
717 \include "musique-Cor.ly"
718 \header @{
719   instrument = "Cor en Fa"
720 @}
721
722 @{
723  \transpose f c' \notesCor
724 @}
725 @end example
726
727 À la ligne
728
729 @example
730 \include "musique-Cor.ly"
731 @end example
732
733 @noindent
734 sera substitué le contenu du fichier @file{musique-Cor.ly}, et de ce
735 fait la variable @code{notesCor} se trouvera définie.  La commande
736 @code{\transpose f@tie{}c'} indique que son argument @code{\notesCor}
737 sera transposé à la quinte supérieure : le son réel @samp{f} s'écrit
738 @code{c'}, ce qui est la caractéristique d'un Cor en Fa. La transposition
739 est visible comme suit :
740
741 @lilypond[quote,ragged-right]
742 \transpose f c' \relative c {
743   \time 2/4
744   r4 f8 a cis4 f e d
745 }
746 @end lilypond
747
748 Dans les pièces d'ensemble, il arrive souvent qu'une voix ne joue pas
749 pendant plusieurs mesures.  Un silence spécial, appelé silence multi-mesures,
750 l'indique alors. On l'obtient par un @samp{R} majuscule, suivi d'une
751 durée : @code{1}@tie{}pour une pause, @code{2}@tie{}pour une demi-pause,
752 etc.  Cette durée peut être multipliée pour établir de plus longs silences.
753 Par exemple, le silence suivant dure 3@tie{}mesures à 2/4.
754
755 @example
756 R2*3
757 @end example
758
759 Dans une partie séparée, les silences multi-mesures sont compressés.
760 Il faut pour cela définir la propriété @code{skipBars} à @q{vrai} :
761
762 @example
763 \set Score.skipBars = ##t
764 @end example
765
766 @noindent
767 Cette commande assigne la valeur @q{vrai} --- @q{true} en anglais, et
768 @samp{#t} dans le langage Scheme --- à cette propriété dans le
769 contexte @code{Score}.  Si l'on ajoute dans la musique ci-dessus le
770 silence multi-mesures et cette option, on obtient le résultat suivant :
771
772 @lilypond[quote,ragged-right]
773 \transpose f c' \relative c {
774   \time 2/4
775   \set Score.skipBars = ##t
776   R2*3
777   r4 f8 a cis4 f e d
778 }
779 @end lilypond
780
781 Le conducteur rassemble toute la musique. Si l'on suppose que l'autre
782 voix de notre duo se trouve dans le fichier @file{musique-Basson.ly} en
783 tant que variable @code{notesBasson}, on établira un conducteur avec
784
785 @example
786 \include "musique-Basson.ly"
787 \include "musique-Cor.ly"
788
789 <<
790   \new Staff \notesCor
791   \new Staff \notesBasson
792 >>
793 @end example
794
795 @noindent
796 ce qui équivaut à
797
798 @lilypond[quote,ragged-right]
799 \relative c <<
800   \new Staff {
801     \time 2/4 R2*3
802     r4 f8 a cis4 f e d
803   }
804   \new Staff {
805     \clef bass
806     r4 d,8 f | gis4 c | b bes |
807     a8 e f4 | g d | gis f
808   }
809 >>
810 @end lilypond
811
812 Des informations plus détaillées sur la mise en place de conducteurs
813 et de parties séparées se trouvent dans le manuel : voir
814 @ruser{Writing parts}.
815
816 Les variables (@q{propriétés}) réglables sont abordées en détail dans
817 @ruser{The set command}.