]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/fr/essay/engraving.itely
Doc-fr: typo chasing
[lilypond.git] / Documentation / fr / essay / engraving.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
2
3 @ignore
4     Translation of GIT committish: ec35c10a93b45b1f0dd721c54197a79d4207a92c
5
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..
9 @end ignore
10
11 @c \version "2.13.39"
12
13 @c Translators: Jean-Charles Malahieude, John Mandereau, Gauvain Pocentek
14
15 @node La gravure musicale
16 @chapter La gravure musicale
17 @translationof Music engraving
18
19 Ce chapitre traite des objectifs et de l'architecture de LilyPond.
20
21 @c TODO:
22 @c remove 3mm eps bounding box left padding for Sarabande (This will
23 @c     require adding a new snippet option to lilypond-book.py
24 @c check formatting of HTML output
25 @c
26
27 @menu
28 * L'histoire de LilyPond::      ce qui ne va pas avec les logiciels
29 * La gravure en détails::       de l'homme à la machine
30 * La gravure automatisée::      de la machine à l'homme
31 * De la théorie à la pratique:: qui fait quoi
32 * Démonstration par l'exemple:: LilyPond à l'œuvre
33 * Comparatif (BWV 861)::
34 @end menu
35
36 @node L'histoire de LilyPond
37 @section L'histoire de LilyPond
38 @translationof The LilyPond story
39
40 Bien avant que LilyPond soit à l'origine de tout un matériel d'orchestre
41 d'excellente facture ou qu'il participe à la création d'ouvrages
42 universitaires, avant même qu'il serve à imprimer la plus simple des
43 mélodies, avant que la communauté des utilisateurs de LilyPond
44 s'étende sur toute la planète, LilyPond est parti du constat
45 suivant@tie{}:
46
47 @quotation
48 Pourquoi la plupart des partitions qui sortent d'un ordinateur ne
49 parvient-elle pas à égaler la beauté et l'élégance des partitions
50 gravées à la main@tie{}?
51 @end quotation
52
53 @noindent
54 Certaines réponses sont évidentes si l'on considère les deux partitions
55 @ifnottex
56 ci-dessous.
57 @end ifnottex
58 @iftex
59 des pages qui suivent.
60 @end iftex
61 La première, qui date des années 1950, a été gravée à la main@tie{}; la
62 seconde est une édition informatisée contemporaine.
63
64 @ifnottex
65 @quotation
66 @noindent
67 Bärenreiter BA 320, @copyright{}1950@tie{}:
68
69 @sourceimage{baer-suite1-fullpage,,,png}
70 @end quotation
71
72 @quotation
73 @noindent
74 Henle n° 666, @copyright{}2000@tie{}:
75
76 @sourceimage{henle-suite1-fullpage,,,png}
77 @end quotation
78 @end ifnottex
79
80 Il s'agit de la même musique, tirée de la première suite pour
81 violoncelle solo de Bach, mais ce n'est pas si évident, surtout
82 lorsqu'on imprime ces deux pages et les considère à distance.
83 @ifnottex
84 (Les images contenues dans la version PDF de ce manuel sont en haute
85 résolution, en vue de leur impression.)
86 @end ifnottex
87 Si vous posez ces pages sur un pupitre et les lisez ou prenez votre
88 archet, vous constaterez que la gravure manuelle est nettement plus
89 agréable à la vue.  Ses lignes sont fluides et il y a du mouvement,
90 c'est de la musique et c'est vivant.  Quant à l'édition moderne, elle a
91 l'air terne et mécanique.
92
93 Ce qui rend cette nouvelle édition différente n'est pas évident au
94 premier coup d'œil@tie{}: c'est propre et condensé, presque @qq{mieux}
95 que l'autre dans la mesure où tout y est @qq{calculé} pour atteindre
96 l'uniformité.  À vrai dire, il nous a fallu un moment pour nous en
97 rendre compte.  Notre but étant d'améliorer la notation informatisée, il
98 nous fallait mettre le doigt sur ce qui ne va pas.
99
100 Le problème se situe au niveau même de la précision toute mathématique
101 qui amène à l'uniformité de cette nouvelle édition.  Considérons les
102 barres de mesure en milieu de ligne@tie{}: dans la partition
103 traditionnelle, leur emplacement varie quelque peu, à l'inverse de la
104 nouvelle, où toutes les barres sont rigoureusement alignées.  Pour que
105 ce soit bien clair, le schéma ci-dessous montre en parallèle ce
106 positionnement, tant pour la version traditionnelle -- à gauche -- que
107 pour la version moderne -- à droite.
108
109 @quotation
110 @iftex
111 @sourceimage{pdf/page-layout-comparison,,,}
112 @end iftex
113 @ifnottex
114 @sourceimage{page-layout-comparison,,,png}
115 @end ifnottex
116 @end quotation
117 @noindent
118
119 Sur la partition générée par l'ordinateur, même les notes sont alignées
120 et la mélodie finit par disparaître derrière un quadrillage à base de
121 signes musicaux.
122
123 Il y a bien sûr d'autres divergences.  En ce qui concerne l'édition
124 traditionnelle, les traits verticaux sont plus épais, les liaisons plus
125 rapprochées des têtes de note, et la pente des ligatures -- liens
126 groupant les croches -- pas toujours la même.  D'aucuns diront que tout
127 ceci n'est que pinaillerie, il n'en demeure pas moins que cette
128 partition a plus de lisibilité.  Dans la partition informatisée, il n'y
129 a pratiquement aucune différence d'une ligne à l'autre, et si
130 l'interprète la quitte des yeux un instant, il risque de ne plus savoir
131 où il en était sur la page.
132
133 LilyPond a été conçu dans le but de résoudre les problèmes que nous
134 avons décelés dans divers logiciels existant et aussi dans l'optique
135 d'atteindre une qualité comparable aux meilleures partitions gravées à
136 la main.
137
138 @iftex
139 @page
140 @noindent
141 Bärenreiter BA 320, @copyright{}1950@tie{}:
142
143 @sourceimage{baer-suite1-fullpage,16cm,,}
144 @page
145 @noindent
146 Henle no 666, @copyright{}2000@tie{}:
147 @sp 3
148 @sourceimage{henle-suite1-fullpage,16cm,,}
149 @page
150 @end iftex
151
152 @node La gravure en détails
153 @section La gravure en détails
154 @translationof Engraving details
155
156 @cindex gravure
157 @cindex typographie musicale
158 @cindex musique et typographie
159 @cindex plate engraving
160 @cindex music engraving
161
162 L'art de la typographie musicale est celui de la @emph{gravure
163 musicale}.  Ce terme vient du procédé traditionnel de l'impression
164 musicale@footnote{Dès le début, les imprimeurs européens ont essayé
165 plusieurs techniques, allant de la matrice en bois sculpté à la fine
166 plaque de métal ciselée, en passant par des typons mobiles.  L'avantage
167 de ces derniers résidait dans la possibilité d'effectuer aisément des
168 corrections et de facilement ajouter à la musique texte et paroles.
169 Néanmoins seule la gravure offrait l'avantage d'appréhender le rendu
170 global.  C'est la raison pour laquelle la gravure est devenue le
171 standard en matière de musique imprimée, à l'exception près de certains
172 livres de cantiques, y compris au XXe siècle, essentiellement pour des
173 raisons de simplicité et de coût.}.  Il y a encore quelques décennies,
174 les partitions étaient réalisées en taillant et ciselant la musique dans
175 des plaques de zinc ou d'étain, en inverse, comme dans un miroir.  Ces
176 plaques étaient encrées et les reliefs créés par les poinçons et les
177 découpes retenaient l'encre.  La partition était alors réalisée en
178 pressant le papier contre la plaque.  Découpes et poinçons étaient
179 entièrement faits à la main.  Dans la mesure où les corrections étaient
180 presque irréalisables, la gravure devait être correcte dès le premier
181 essai.  Cela demande évidemment une très grande habileté.  La gravure
182 musicale est un métier d'artisan, appris sur le tas.  Un graveur ne
183 devenait un maître accompli qu'après une dizaine d'années de pratique.
184
185 @quotation
186 @iftex
187 @sourceimage{hader-slaan,,7cm,}
188 @end iftex
189 @ifnottex
190 @sourceimage{hader-slaan,,,jpg}
191 @end ifnottex
192 @end quotation
193
194 LilyPond s'inspire du travail réalisé par les maîtres graveurs qui
195 officiaient chez les éditeurs européens jusque dans les années 1950.
196 Ceux-ci sont bien  souvent considérés comme ayant atteint le sommet de
197 leur art, et comptent dans leurs rangs des maisons telles que
198 Bärenreiter, Duhem, Durand, Hofmeister, Peters ou Schott.  Au fil de
199 notre analyse de ces éditions, nous en avons appris encore plus sur ce
200 qu'il faut pour obtenir une partition d'excellente facture, et ce sur
201 quoi LilyPond devait porter ses efforts.
202
203 @c Now all newly printed music is produced with computers.  This has
204 @c obvious advantages: prints are cheaper to make, editorial work can be
205 @c delivered by email, and the original data can be easily stored.
206 @c Unfortunately, computer-generated scores rarely match the quality of
207 @c hand-engraved scores.  Instead, computer printouts have a bland,
208 @c mechanical look, which makes them unpleasant to play from.
209
210 @menu
211 * Fontes et polices::             De la création des polices musicales
212 * Espacement::                    Considérations sur les espacements
213 * Lignes supplémentaires::        Cas particulier en matière de notation
214 * Tailles::                       Considérations sur la taille des portées
215 * La raison de tous ces efforts:: Pourquoi s'attacher aux détails
216 @end menu
217
218 @node Fontes et polices
219 @unnumberedsubsec Fontes et polices
220 @translationof Music fonts
221
222 Les images ci-dessous mettent en évidence certaines différences entre
223 l'art du graveur traditionnel et le résultat habituel sorti d'un
224 ordinateur.  L'image de gauche est un fac-similé d'un bémol tiré
225 d'une édition Bärenreiter traditionnelle@tie{}; celle de droite est
226 issue de la même partition, éditée en 2000.  Bien que toutes deux soient
227 imprimées avec le même encrage, la version @qq{ancienne} paraît plus
228 noire@tie{}: les lignes de la portée y sont plus épaisses et le galbe du
229 bémol de Bärenreiter est à la limite de la volupté.  Sur l'autre image,
230 les lignes sont plus fines et le bémol semble raide, coincé.
231
232 @multitable @columnfractions .25 .25 .25 .25
233 @item @tab
234 @ifnotinfo
235 @iftex
236 @sourceimage{baer-flat-gray,,4cm,}
237 @end iftex
238 @ifnottex
239 @sourceimage{baer-flat-gray,,,png}
240 @end ifnottex
241
242 @tab
243 @iftex
244 @sourceimage{henle-flat-gray,,4cm,}
245 @end iftex
246 @ifnottex
247 @sourceimage{henle-flat-gray,,,png}
248 @end ifnottex
249
250 @end ifnotinfo
251 @ifinfo
252 @sourceimage{henle-flat-bw,,,png}
253 @sourceimage{baer-flat-bw,,,png}
254 @sourceimage{lily-flat-bw,,,png}
255 @end ifinfo
256
257
258 @item @tab
259 Bärenreiter (1950)
260 @tab
261 Henle (2000)
262
263 @end multitable
264
265 @cindex symboles musicaux
266 @cindex police
267 @cindex densité
268 @cindex contraste
269
270 Lorsque nous nous sommes décidés à écrire un programme permettant de
271 typographier la musique, aucune police librement accessible ne
272 correspondait à l'esthétique de nos partitions préférées.  Sans
273 toutefois nous décourager, nous avons créé notre propre jeu de symboles
274 musicaux à partir des éditions traditionnelles dont nous disposions.
275 L'expérience aidant, notre goût typographique s'est développé et nous
276 avons pu appréhender certaines subtilités stylistiques qui nous font
277 trouver maintenant de piètre qualité des polices que nous avions tout
278 d'abord appréciées.
279
280 À titre d'exemple, voici deux fontes musicales@tie{}: la première ligne
281 comporte des caractères de la police par défaut du logiciel Sibelius --
282 la police @emph{Opus} -- et la deuxième, ces mêmes caractères dans notre
283 propre police pour LilyPond.
284
285 @quotation
286 @iftex
287 @sourceimage{pdf/OpusAndFeta,,,}
288 @end iftex
289 @ifnottex
290 @sourceimage{OpusAndFeta,,,png}
291 @end ifnottex
292 @end quotation
293
294 Les symboles de LilyPond sont plus forts et leur épaisseur plus
295 équilibrée, ce qui d'ailleurs les rend plus lisibles.  Les extrémités en
296 pointe, comme pour le soupir, devraient avoir une terminaison légèrement
297 arrondie plutôt qu'un angle tranchant.  Ceci s'explique par la fragilité
298 des poinçons qui s'émoussent rapidement lors du martellement et de la
299 ciselure.  Par ailleurs, la densité de la police doit tenir compte de
300 l'épaisseur des lignes, ligatures et liaisons afin d'obtenir un rendu
301 plein d'intensité et d'équilibre.
302
303 Vous noterez aussi que notre ronde n'est pas ovoïde, mais plutôt en
304 forme de losange.  La barre de notre bémol est comme brossée, le haut
305 étant de fait un peu plus large.  Notre dièse et notre bécarre sont plus
306 évidents à reconnaître à distance du fait que leurs barres transversales
307 n'ont pas la même pente et que les verticales sont plus épaisses.
308
309 @node Espacement
310 @unnumberedsubsec Espacement
311 @translationof Optical spacing
312
313 Si l'on considère l'espacement, sa répartition devrait refléter la durée
314 des notes.  Néanmoins, et comme nous l'avons vu plus haut avec la suite
315 de Bach, la plupart des éditions modernes se basent sur des durées à la
316 précision mathématique, ce qui entraine un effet des plus monotones.
317 Dans l'exemple qui suit, le même motif est imprimé deux fois@tie{}: la
318 première en appliquant un espacement chronométrique, la seconde avec
319 quelques corrections.  Quelle version remporte vos suffrages@tie{}?
320
321 @cindex optique et espacement
322 @cindex espacement et effet d'optique
323
324
325 @lilypond
326 \paper {
327   ragged-right = ##t
328   indent = #0.0
329 }
330
331 music = {
332    c'4 e''4 e'4 b'4 |
333    \stemDown
334    b'8[ e'' a' e'']
335    \stemNeutral
336    e'8[ e'8 e'8 e'8]
337 }
338 \score
339 {
340   \music
341   \layout {
342     \context {
343       \Staff
344       \override NoteSpacing #'stem-spacing-correction = #0.0
345       \override NoteSpacing #'same-direction-correction = #0.0
346       \override StaffSpacing #'stem-spacing-correction = #0.0
347     }
348   }
349 }
350 @end lilypond
351
352 @lilypond
353 \paper {
354   ragged-right = ##t
355   indent = #0.0
356 }
357
358 music = {
359    c'4 e''4 e'4 b'4 |
360    \stemDown
361    b'8[ e'' a' e'']
362    \stemNeutral
363    e'8[ e'8 e'8 e'8]
364 }
365
366 \score
367 {
368   \music
369   \layout {
370     \context {
371       \Staff
372       \override NoteSpacing #'stem-spacing-correction = #0.6
373     }
374   }
375 }
376 @end lilypond
377
378 @cindex rythmes réguliers
379 @cindex espacement régulier
380 @cindex régulier, espacement
381
382 Chaque mesure de ce fragment comporte des notes d'égale valeur, ce qui
383 devrait se constater au niveau de l'espacement.  Malheureusement, notre
384 œil nous trompe@tie{}: non seulement il considère la distance séparant
385 deux têtes de notes mais, de surcroît, il prend en compte l'espace
386 entre deux hampes.  Par voie de conséquence, une succession de notes
387 hampe en haut puis hampe en bas devrait comporter un espace accru et,
388 dans une situation inverse, être plus resserrée, sans oublier de
389 considérer la hauteur de chacune de ces notes.  La deuxième ligne
390 comporte de tels aménagements alors que, dans la première ligne, la
391 succession hampe descendante puis montante laisse apparaître des notes
392 resserrées.  Un maître graveur ajusterait les espaces pour obtenir un
393 rendu qui flatte l'œil.
394
395 Autre effet d'optique -- que d'ailleurs LilyPond prend en considération
396 -- l'espace entre la hampe et la barre de mesure.  Lorsqu'une barre est
397 précédée d'une hampe montante, il est judicieux d'accroître l'espace
398 qui les sépare pour éviter cette sensation de tassement.  Une note dont
399 la hampe va vers le bas ne nécessite pas un tel ajustement.
400
401
402 @node Lignes supplémentaires
403 @unnumberedsubsec Lignes supplémentaires
404 @translationof Ledger lines
405
406 @cindex lignes supplémentaires
407 @cindex collisions
408
409 Les lignes supplémentaires sont une gageure pour le typographe@tie{}:
410 les différents symboles musicaux doivent être suffisamment rapprochés
411 pour que le lecteur identifie la hauteur au premier coup d'œil.  Vous
412 noterez, dans l'exemple qui suit, que les lignes supplémentaires sont un
413 peu plus épaisses que celles de la portée.  Par ailleurs, un maître
414 graveur écourtera la ligne supplémentaire en présence d'une altération.
415 LilyPond, dans sa recherche d'efficacité, adopte ces pratiques.
416
417 @multitable @columnfractions .25 .25 .25 .25
418 @item @tab
419
420 @iftex
421 @sourceimage{baer-ledger,3cm,,}
422 @end iftex
423 @ifnottex
424 @sourceimage{baer-ledger,,,png}
425 @end ifnottex
426
427 @tab
428
429 @iftex
430 @sourceimage{lily-ledger,3cm,,}
431 @end iftex
432 @ifnottex
433 @sourceimage{lily-ledger,,,png}
434 @end ifnottex
435
436 @end multitable
437
438
439 @node Tailles
440 @unnumberedsubsec Tailles
441 @translationof Optical sizing
442
443 Une même œuvre peut être imprimée dans différents formats -- d'une
444 partie instrumentale au conducteur format de poche.  Les graveurs
445 traditionnels utilisaient alors des poinçons différents pour obtenir le
446 meilleur rendu selon la taille de la partition.  L'avènement des fontes
447 digitalisées permet d'obtenir n'importe quelle taille à partir d'un
448 simple tracé.  Bien que ceci constitue un progrès en soi, il nous faut
449 cependant nuancer@tie{}: les glyphes sont moins forts lorsqu'ils sont de
450 taille réduite.
451
452 Pour les besoins de LilyPond, nous avons créé des polices de graisse
453 différente selon la taille.  Voici ce que produit LilyPond dans une
454 taille de portée de 26@tie{}points@tie{}:
455
456 @quotation
457 @iftex
458 @sourceimage{pdf/size26,,23mm,}
459 @end iftex
460 @ifnottex
461 @sourceimage{size26,,,png}
462 @end ifnottex
463 @end quotation
464
465 @noindent
466 et la même musique en 11@tie{}points, grossie de 236@tie{}% pour obtenir
467 une taille identique à l'image précédente@tie{}:
468
469 @quotation
470 @iftex
471 @sourceimage{pdf/size11,,23mm,}
472 @end iftex
473 @ifnottex
474 @sourceimage{size11,,,png}
475 @end ifnottex
476 @end quotation
477
478 @noindent
479 Comme vous le constatez, LilyPond imprime des lignes un peu plus
480 épaisses pour garantir une meilleure lecture à taille réduite.
481
482 @ignore
483 This also allows staves of different sizes to coexist peacefully when
484 used together on the same page:
485
486 @c TODO: are the stems in this example the right thickness? How should
487 @c line weights be scaled for small staves?
488
489 @c Grieg's Violin Sonata Op. 45
490 @lilypond[indent=1.5cm]
491 global = {
492   \time 6/8
493   \key c \minor
494 }
495
496 \score {
497   <<
498     \new Staff \with {
499       fontSize = #-4
500       \override StaffSymbol #'staff-space = #(magstep -4)
501       \override StaffSymbol #'thickness = #(magstep -3)
502     }
503     \relative c' {
504       \global
505       \set Staff.instrumentName = #"Violin"
506       c8.(\f^> b16 c d) ees8.(^> d16 c b)
507       g8.(^> b16 c ees) g8-.^> r r
508       R2.
509     }
510     \new PianoStaff <<
511       \set PianoStaff.instrumentName = #"Piano"
512       \new Staff \relative c' {
513         \global
514         s2.
515         s4. s8 r8 r16 <c f aes c>
516         <c f aes c>4.^> <c ees g>8 r r
517       }
518       \new Staff \relative c {
519         \global
520         \clef "bass"
521         <<
522         {
523           \once \override DynamicText #'X-offset = #-3
524           <ees g c>2.~->^\f
525           <ees g c>4.~ <ees g c>8
526         } \\ {
527           <c g c,>2.~
528           <c g c,>4.~ <c g c,>8
529         }
530         >>
531         r8 r16 <f, c' aes'>16
532         <f c' aes'>4.-> <c' g'>8 r r
533       }
534     >>
535   >>
536 }
537 @end lilypond
538 @end ignore
539
540 @node La raison de tous ces efforts
541 @unnumberedsubsec La raison de tous ces efforts
542 @translationof Why work so hard?
543
544 Les musiciens sont normalement plus concentrés sur la manière dont ils
545 jouent la musique que sur son apparence, aussi ces pinailleries sur des
546 détails de typographie peuvent paraître académiques.  Il n'en est rien.
547 La partition contribue, au même titre que bien d'autres éléments, à
548 l'existence même d'une représentation@tie{}: tout doit être fait pour
549 que l'interprète donne le meilleur de lui-même, et ce qui est peu clair
550 ou pas agréable à lire constitue un frein.
551
552 La musique gravée de manière traditionnelle présente des symboles denses
553 et des lignes épaisses. Ceci produit un résultat équilibré, à plus
554 forte raison si la partition est éloignée du lecteur, comme lorsqu'elle
555 est posée sur un pupitre.  Une répartition attentive des blancs permet
556 de resserrer la musique sans pour autant tasser les symboles et, au
557 final, diminue le nombre de tournes -- avantage indéniable.
558
559 C'est une caractéristique commune de la typographie.  La présentation
560 devrait être soignée, non seulement pour l'amour de l'art, mais plus
561 spécialement parce qu'elle vient en aide au lecteur dans sa tâche.
562 Pour du matériel d'interprétation tel que les partitions de musique,
563 ceci est doublement important@tie{}: les musiciens sont limités dans
564 leur attention.  Au moins leur attention se porte sur la lecture, au
565 plus ils peuvent se concentrer sur l'exécution.  En d'autres termes, une
566 meilleure typographie se traduit par une meilleure interprétation.
567
568 Ces considérations montrent bien que la typographie musicale est un art
569 à la fois complexe et plein de subtilités, et qu'elle requiert des
570 compétences particulières que la majorité des musiciens ne possède pas.
571 LilyPond s'efforce de transposer le degré d'excellence de la gravure
572 traditionnelle à l'ère de l'ordinateur et donc de le mettre à
573 disposition de tous les musiciens.  Nous avons affiné nos algorithmes,
574 le @emph{design} de nos fontes et les réglages du programme de manière à
575 produire des partitions d'une qualité comparable aux bonnes vieilles
576 éditions que nous avons toujours autant de plaisir à voir et à
577 interpréter.
578
579
580 @node La gravure automatisée
581 @section La gravure automatisée
582 @translationof Automated engraving
583
584 @cindex gravure automatisée
585 @cindex automatisée, gravure
586
587 Nous allons maintenant examiner les éléments nécessaires à la création
588 d'un logiciel capable d'imiter le rendu des partitions gravées à
589 l'ancienne.  Nous commencerons par voir comment inculquer à l'ordinateur
590 les @qq{bonnes manières} de la présentation.  Nous nous attarderons
591 ensuite sur l'analyse comparative par rapport aux éditions
592 traditionnelles, avant de considérer le degré de flexibilité à y inclure
593 pour être en mesure de gérer les différents cas de figure particuliers à
594 la notation.
595
596 @menu
597 * Concours de beauté::           l'option du moindre mal
598 * Modélisation et banc d'essai:: l'évaluation des performances
599 * Règles de formatage::          l'architecture flexible
600 @end menu
601
602
603 @node Concours de beauté
604 @unnumberedsubsec Concours de beauté
605 @translationof Beauty contests
606
607 Quels sont en réalité nos critères de formatage@tie{}?  Considérant
608 l'image suivante, laquelle de ces trois configurations devrions-nous
609 choisir pour formater la liaison@tie{}?
610
611 @lilypond
612 \relative c {
613     \clef bass
614     \once \override Slur #'positions = #'(1.5 . 1)
615     e8[( f] g[ a b d,)] r4
616     \once \override Slur #'positions = #'(2 . 3)
617     e8[( f] g[ a b d,)] r4
618     e8[( f] g[ a b d,)] r4
619 }
620 @end lilypond
621
622 Seuls quelques ouvrages traitent de l'art de graver la musique.  Ils ne
623 contiennent malheureusement que des généralités et quelques exemples.
624 La lecture de telles règles est certes instructive, mais est très loin
625 de nous conduire à un algorithme prêt à être implémenté dans un
626 programme.  Dans la pratique, suivre les instructions de ces traités
627 aboutirait à des algorithmes qui figent bon nombre d'exceptions.
628 Répertorier tous ces cas de figure demanderait un travail considérable,
629 qui finalement ne les couvrirait pas tous.
630
631 @quotation
632 @iftex
633 @sourceimage{ross-beam-scan,7cm,,}
634 @end iftex
635 @ifnottex
636 @sourceimage{ross-beam-scan,,,.jpg}
637 @end ifnottex
638 @end quotation
639
640 @emph{Règles de formatages définies par l'exemple. Image tirée de
641 l'ouvrage de Ted Ross @qq{The Art of Music Engraving}}
642
643 Plutôt que d'écrire une foultitude de règles qui embrasserait tous les
644 cas de figure possibles et imaginables en matière de mise en forme, nous
645 avons préféré inculquer à LilyPond un certain nombre d'objectifs qui lui
646 permette de choisir entre différentes alternatives selon leur
647 esthétique.  Pour ce faire, chacune des configurations est analysée en
648 terme de moins bonne qualité, et nous opterons pour celle étant la moins
649 mauvaise.
650
651 Voici, à titre d'exemple, trois configurations possibles pour le tracé
652 d'une liaison@tie{}; Lilypond leur attribue individuellement une @qq{note
653 de laideur}.  Le premier essai se voit attribuer 15,39@tie{}points
654 notamment pour l'effleurement de la tête de note.
655
656 @lilypond
657 \relative c {
658     \clef bass
659     \once \override Slur #'positions = #'(1.5 . 1)
660     e8[(_"15.39" f] g[ a b d,)] r4
661 }
662 @end lilypond
663
664 La liaison ci-dessous reste à une distance uniforme des notes, mais il
665 faut tenir compte du fait qu'elle n'est pas rattachée aux première et
666 dernière notes. Ceci nous fait 1,71@tie{}points pour le début de la
667 liaison et 9,37 pour la terminaison -- qui est beaucoup plus éloignée de
668 la dernière note.  Par ailleurs, la liaison monte alors que la mélodie
669 redescend, ce qui entraîne une pénalité de 2@tie{}points.  Ceci nous
670 fait un total de 13,08@tie{}points de laideur.
671
672 @lilypond
673 \relative c {
674     \clef bass
675     \once \override Slur #'positions = #'(2 . 3)
676     e8[(_"13.08" f] g[ a b d,)] r4
677 }
678 @end lilypond
679
680 Quant à la liaison qui suit, seule la terminaison reste éloignée de la
681 dernière note, ce qui donne 10,04@tie{}points de laideur auxquels nous
682 ajoutons 2 autres points pour la pente ascendante.  Cette configuration
683 étant la moins laide, ou plutôt la version la plus satisfaisante, nous
684 la sélectionnons.
685
686 @lilypond
687 \relative c {
688     \clef bass
689     e8[(_"12.04" f] g[ a b d,)] r4
690 }
691 @end lilypond
692
693 Cette manière de procéder est générique, et nous y avons recours dans
694 bon nombre de situations, comme pour déterminer la pente d'un lien de
695 croches, formater des accords liés, formater des accords avec des
696 valeurs pointées, positionner les sauts de ligne ou de page.  Cette
697 technique est consommatrice de temps de calcul, dans la mesure où elle
698 examine de nombreuses possibilités@tie{}; néanmoins, le jeu en vaut la
699 chandelle, puisque le résultat final est bien meilleur et nous rapproche
700 des éditions traditionnelles.
701
702
703 @node Modélisation et banc d'essai
704 @unnumberedsubsec Modélisation et banc d'essai
705 @translationof Improvement by benchmarking
706
707 Au fil du temps, le rendu de LilyPond a évolué, et continue de
708 s'améliorer lorsqu'on le compare aux partitions gravées à la main.
709
710 Voici un extrait de l'une de nos éditions de référence (Bärenreiter
711 BA@tie{}320)@tie{}:
712
713 @iftex
714 @sourceimage{baer-sarabande-hires,16cm,,}
715 @end iftex
716 @ifnottex
717 @sourceimage{baer-sarabande,,,png}
718 @end ifnottex
719
720 @noindent
721 et ce que génère l'une des anciennes versions de LilyPond -- la 1.4,
722 publiée en mai@tie{}2001@tie{}:
723
724 @iftex
725 @sourceimage{pdf/lily14-sarabande,16cm,,}
726 @end iftex
727 @ifnottex
728 @sourceimage{lily14-sarabande,,,png}
729 @end ifnottex
730
731 @noindent La sortie LilyPond est certes lisible, et acceptable pour
732 beaucoup de gens.  Cependant, une comparaison minutieuse avec une
733 édition gravée à la main révèle de nombreuses erreurs de
734 formatage@tie{}:
735
736 @iftex
737 @sourceimage{lily14-sarabande-annotated-hires,16cm,,}
738 @end iftex
739 @ifnottex
740 @sourceimage{lily14-sarabande-annotated,,,png}
741 @end ifnottex
742
743 @itemize @bullet
744 @item trop d'espace avant la métrique
745 @item la hampe des notes ligaturées est trop longue
746 @item les deuxième et quatrième mesures sont trop tassées
747 @item la liaison est affreuse
748 @item les indications de trille sont trop grosses
749 @item les hampes sont trop fines
750 @end itemize
751
752 @noindent
753 Passons sous silence les notes et indications absentes, tout comme
754 la faute de hauteur@tie{}!
755
756 En ajustant les algorithmes, paramètres et polices concernés, nous avons
757 pu améliorer le résultat.  La deuxième ligne ci-dessous a été générée
758 par la version la plus récente de LilyPond (@version{}).
759
760 @iftex
761 @sourceimage{baer-sarabande-hires,16cm,,}
762 @end iftex
763 @ifnottex
764 @sourceimage{baer-sarabande,,,png}
765 @end ifnottex
766
767 @lilypond[staffsize=17.5,line-width=15.9\cm]
768 \relative c {
769   \clef "bass"
770   \key d \minor
771   \time 3/4
772   \mergeDifferentlyDottedOn
773   <<
774     {\slurDashed d8.-\flageolet( e16) e4.-\trill( d16 e)}
775      \\
776     {d4_2 a2}
777   >>
778   \slurDashed
779   <f' a, d,>4. e8( d c)
780   \slurSolid
781   bes g' f e16( f g_1 a_2 bes_3 d,_2)
782   \slurDashed
783   cis4.-\trill b8_3( a g)
784   <<
785     {\slurDashed d'8.( e16) e4.-\trill( d16 e)}
786      \\
787     {<f, a>4 a2}
788   >>
789 }
790 @end lilypond
791
792 @noindent
793 Sans être un clone de l'édition de référence, cette sortie est plus
794 proche d'une qualité de publication que les précédentes.
795
796 @node Règles de formatage
797 @unnumberedsubsec Règles de formatage
798 @translationof Getting things right
799
800 Nous pouvons aussi évaluer les capacités de LilyPond dans ses choix, en
801 comparant ses résultats avec ce que génèrent d'autres d'autres logiciels
802 du marché.  Notre choix s'est porté sur Finale@tie{}2008, l'un des
803 logiciels les plus populaires notamment en Amérique du Nord.  Son plus
804 proche concurrent est Sibelius, très répandu sur le marché européen.
805
806 Pour cette analyse comparative, nous avons choisi la fugue en sol mineur
807 du premier livre du Clavier bien tempéré de Bach (BWV@tie{}861). En
808 voici le thème@tie{}:
809
810 @lilypond
811 \relative c' {
812   \key g \minor
813   \clef "treble_8"
814   r8 d ees g, fis4 g
815   r8 a16 bes c8 bes16 a bes8
816 }
817 @end lilypond
818
819 @noindent
820
821 Nous nous sommes intéressés aux sept dernières mesures (27 à 34) de
822 l'œuvre, que nous avons saisies à la fois avec Finale et avec LilyPond.
823 C'est à cet endroit que le sujet est rappelé, dans une strette à trois
824 voix, avant de mener à la conclusion.  Pour ce qui est de Finale, nous
825 nous sommes abstenus d'effectuer quelque ajustement que ce soit dans le
826 but d'obtenir un résultat par défaut.  Ceci permet de vraiment apprécier
827 conjointement ce que génère chacun des deux logiciels sans retouche
828 aucune.  Nous avons toutefois redimensionné la page pour les besoins de
829 cet essai et forcé la musique à tenir sur deux systèmes pour que la
830 comparaison soit plus évidente.  En effet, Finale crée par défaut deux
831 systèmes de trois mesure, et un troisième -- s'étalant sur toute la
832 ligne -- pour la dernière mesure.
833
834 La plupart des différences entre ces deux éditions -- Finale pour la
835 première image -- se situent dans les mesures 28 et 29@tie{}:
836
837 @iftex
838 @sourceimage{pdf/bwv861mm28-29,14cm,,}
839 @end iftex
840 @ifnottex
841 @sourceimage{bwv861mm28-29,,,png}
842 @end ifnottex
843
844 @lilypond[staffsize=19.5,line-width=14\cm]
845 global = { \key g \minor }
846
847 partI = \relative c' {
848   \voiceOne
849   fis8 d' ees g, fis4 g
850   r8 a16 bes c8 bes16 a d8 r r4
851 }
852
853 partII = \relative c' {
854   \voiceTwo
855   d4 r4 r8 d'16 c bes8 c16 d
856   ees8 d c ees a, r r4
857 }
858
859 partIII = \relative c' {
860   \voiceOne
861   r2 r8 d ees g, fis4 g r8 a16 bes c8 bes16 a
862 }
863
864 partIV = \relative c {
865   \voiceTwo
866   d4 r r2
867   r8 d ees g, fis4 a
868 }
869
870 \score {
871   <<
872     % \set Score.barNumberVisibility = #all-bar-numbers-visible
873     % required in 2.13
874     \set Score.currentBarNumber = #28
875     \bar ""
876     \new PianoStaff <<
877       \new Staff = "RH" <<
878         \global
879         \new Voice = "voiceI" { \partI }
880         \new Voice = "voiceII" { \partII }
881       >>
882       \new Staff = "LH"
883       <<
884         \clef "bass"
885         \global
886         \new Voice = "voiceIII" { \partIII }
887         \new Voice = "voiceIV" { \partIV }
888       >>
889     >>
890   >>
891   \layout {
892     \context {
893       \Staff
894       \remove "Time_signature_engraver"
895     }
896     \context {
897       \PianoStaff
898       \override StaffGrouper #'staff-staff-spacing #'padding = #1
899     }
900   }
901 }
902 @end lilypond
903
904 Entre autres défauts du résultat brut de Finale, nous notons@tie{}:
905
906 @itemize @bullet
907 @item La majorité des ligatures est trop éloignée de la portée.
908 Lorsqu'une ligature se retrouve vers le milieu de la portée, la hauteur
909 des hampes qui la portent est d'environ une octave.  Néanmoins, un
910 maître graveur les raccourcira dès lors que cette ligature est en dehors
911 de la portée d'une section à plusieurs voix.  Les règles de ligatures de
912 Finale peuvent être améliorées à l'aide du greffon @emph{Patterson
913 Beams}, que nous avons décidé de laisser de côté pour cet exemple.
914
915 @item Finale n'ajuste pas la position des notes qui s'entrecroisent.  Il
916 en résulte une lecture peu évidente lorsque les voix supérieure et
917 inférieure de croisent temporairement@tie{}:
918
919 @c KEEPLY
920 @lilypond
921 collide = \once \override NoteColumn #'force-hshift = #0
922
923 \score {
924   <<
925     \new Voice = "sample" \relative c''{
926       \key g \minor
927       <<
928         { \voiceOne g4 \collide g4 }
929         \new Voice { \voiceTwo bes \collide bes }
930       >>
931     }
932     \new Lyrics \lyricsto "sample" \lyricmode { "bien " " mauvais" }
933   >>
934 }
935 @end lilypond
936
937 @item Finale positionne tous les silences d'une même voix à une hauteur
938 fixe de la portée.  Si l'utilisateur peut les déplacer à loisir, le
939 logiciel ne se soucie en rien de ce qui se passe dans les autres voix.
940 Par chance, il n'y a aucune collision entre un silence et une note dans
941 cet exemple@tie{}; cela tient plutôt à la position des notes qu'à celle
942 des silences.  Tout compte fait, le mérite en revient à Bach plutôt qu'à
943 Finale d'éviter les collisions.
944
945 @end itemize
946
947 Cet exemple ne vise en aucun cas à démontrer que Finale est incapable de
948 fournir un résultat admirable.  Au contraire, un utilisateur chevronné
949 pourra obtenir quelque chose d'excellent, mais au prix d'une bonne dose
950 tant de dextérité que de temps.  La différence fondamentale entre
951 LilyPond et les générateurs de partition commerciaux réside dans le fait
952 suivant@tie{}: LilyPond tend à réduire l'intervention de l'utilisateur à
953 sa plus simple expression, alors que les autres programmes font tout
954 pour avoir une interface attractive pour effectuer toutes les retouches.
955
956 Par ailleurs, Finale commet une erreur particulièrement flagrante@tie{}:
957 il manque un bémol à la mesure 33
958
959 @quotation
960 @iftex
961 @sourceimage{pdf/bwv861mm33-34-annotate,7.93cm,,}
962 @end iftex
963 @ifnottex
964 @sourceimage{bwv861mm33-34-annotate,,,png}
965 @end ifnottex
966 @end quotation
967
968 @noindent
969 Il faut un bémol pour annuler le bécarre qui se trouve dans la même
970 mesure, mais Finale ne s'en rend pas compte parce qu'il se trouve dans
971 une autre voix.  Ainsi, l'utilisateur doit non seulement recourir à un
972 greffon pour gérer les ligatures, repositionner têtes de note et
973 silences, il lui faut de surcroît vérifier qu'à chaque mesure les
974 altérations sont en conformité indépendamment des voix s'il veut être à
975 l'abri de toute interruption d'une répétition pour une erreur dans la
976 partition.
977
978 S'il vous plaît d'examiner ces sept mesures de plus près, elles sont
979 reproduites en intégralité à la fin de cet essai, ainsi que quatre
980 autres versions.  Vous noterez certaines variations entre les éditions
981 traditionnelles, et LilyPond tient un rang acceptable.  Il reste tout de
982 même quelques petits défauts à régler, comme le raccourcissement peut
983 être exagéré des hampes@tie{}; il y a donc encore de quoi faire pour les
984 développeurs.
985
986 La typographie relevant d'un jugement humain, les personnes ne peuvent
987 être remplacées.  Beaucoup de tâches rébarbatives peuvent cependant être
988 automatisées@tie{}: si LilyPond parvenait à gérer la plupart des
989 situations usuelles correctement, ce serait un grand pas en avant pour
990 l'édition informatisée.  Au fil du temps, le logiciel pourra être révisé
991 afin d'automatiser de plus en plus d'actions, de sorte que les
992 ajustements manuels seront de moins en moins nécessaires.  Les cas
993 particuliers peuvent être traités manuellement, notamment grâce à
994 l'architecture flexible de LilyPond.
995
996
997 @node De la théorie à la pratique
998 @section De la théorie à la pratique
999 @translationof Building software
1000
1001 Nous allons nous intéresser, dans les paragraphes qui suivent, aux
1002 arbitrages en terme de programmation qui ont participé à l'élaboration
1003 de LilyPond.
1004
1005 @menu
1006 * Représentation de la musique::   le format de saisie
1007 * Les constituants de la gravure:: quels symboles graver
1008 * Flexibilité architecturale::
1009 @end menu
1010
1011
1012 @node Représentation de la musique
1013 @unnumberedsubsec Représentation de la musique
1014 @translationof Music representation
1015
1016 @cindex syntaxe
1017 @cindex structures récursives
1018 @cindex récursivité des structures
1019
1020 Le format de saisie idéal pour un système évolué de formatage consiste
1021 en la description abstraite du contenu.  Dans le cas qui nous occupe, il
1022 s'agit tout bonnement de la musique.  Cela n'est pas sans poser un
1023 énorme problème@tie{}: comment définir @emph{ce qu'est} la
1024 musique@tie{}?  Pour résoudre ce problème, nous l'avons inversé.  Au
1025 lieu de définir ce qu'est la musique, notre programme sert de
1026 définition@tie{}: nous avons écrit un programme capable de produire des
1027 partitions, et avons ajusté son format de saisie pour être aussi léger
1028 que possible.  Lorsque le format ne peut plus être simplifié, nous
1029 avons par définition atteint le contenu même.  Autrement dit, notre
1030 programme utilise la définition formelle d'un document musical.
1031
1032 La syntaxe est également celle de l'interface utilisateur de LilyPond,
1033 puisqu'elle peut être facilement tapée au clavier@tie{}:
1034
1035 @example
1036 @{
1037   c'4 d'8
1038 @}
1039 @end example
1040
1041 @noindent
1042 sont un do médium noire et un ré croche juste au-dessus.
1043
1044 @lilypond[quote]
1045 {
1046   c'4 d'8
1047 }
1048 @end lilypond
1049
1050 À petite échelle, une telle syntaxe est pratique.  À plus grande
1051 échelle, une structuration est nécessaire.  Sans cela, comment saisir
1052 des pièces aussi complexes qu'un opéra ou une symphonie@tie{}?  La
1053 structure est construite selon le même concept que les expressions
1054 musicales@tie{}: c'est en combinant de petits fragments qu'une musique
1055 plus complexe peut être représentée.  Par exemple@tie{}:
1056
1057 @lilypond[quote,verbatim,fragment,relative=1]
1058 f4
1059 @end lilypond
1060
1061 @noindent
1062 Quand des notes sont combinées simultanément, il suffit de les insérer
1063 entre @code{<<} et @code{>>}@tie{}:
1064
1065 @example
1066 <<c4 d4 e4>>
1067 @end example
1068
1069 @lilypond[quote,fragment,relative=1]
1070 \new Voice { <<c4 d4 e>> }
1071 @end lilypond
1072
1073 @noindent
1074 Insérées dans une paire d'accolades @code{@{@tie{}@dots{}@tie{}@}}, ces
1075 expressions sont intégrées dans une séquence@tie{}:
1076
1077 @example
1078 @{ f4 <<c4 d4 e4>> @}
1079 @end example
1080
1081 @lilypond[quote,relative=1,fragment]
1082 { f4 <<c d e4>> }
1083 @end lilypond
1084
1085 @noindent
1086 Ceci constitue une nouvelle expression, qui peut être à son tour
1087 combinée avec une autre expression simultanée (en l'occurence une
1088 blanche) à l'aide de @code{<<}, @code{\\} et @code{>>}@tie{}:
1089
1090 @example
1091 << g2 \\ @{ f4 <<c4 d4 e4>> @} >>
1092 @end example
1093
1094 @lilypond[quote,fragment,relative=2]
1095 \new Voice { << g2 \\ { f4 <<c d e>> } >> }
1096 @end lilypond
1097
1098 De telles structures récursives peuvent être définies formellement et
1099 de manière ordonnée avec une @emph{grammaire libre de tout contexte}.
1100 Le code d'analyse de la saisie est également généré depuis cette
1101 grammaire.  Autrement dit, la définition de la syntaxe de LilyPond est
1102 claire et sans ambiguïté.
1103
1104 Ce sont la syntaxe et l'interface qui concernent les utilisateurs.
1105 Elles sont sujettes à discussion, puisque relatives aux goûts de chacun.
1106 Bien que ces discussions soient intéressantes, elles ne sont pas
1107 productives.  À l'échelle de LilyPond, l'importance du format de saisie
1108 est minime@tie{}: inventer une syntaxe claire est bien plus aisé
1109 qu'écrire un code de mise en page décent.  Ceci est d'ailleurs
1110 illustré par le nombre de lignes de code de ces composants
1111 respectifs@tie{}: l'analyse du texte de saisie et sa représentation
1112 pèsent moins de 10@tie{}% du code.
1113
1114 Dans la conception des structures utilisées par LilyPond, nous avons
1115 pris certaines options divergentes des autres logiciels.  Considérons la
1116 nature par essence hiérarchique de la notation musicale@tie{}:
1117
1118 @lilypond[quote,fragment]
1119 <<
1120 \new Staff \relative c'' {
1121   \key g \major
1122   \time 3/4
1123   d4 g,8 a b c d4 g, g
1124 }
1125 \new Staff \relative c' {
1126   \clef "bass"
1127   \key g \major
1128   <g b d>2 a4 b2.
1129 }
1130 >>
1131 @end lilypond
1132
1133 Nous y voyons des hauteurs regroupées en accords appartenant à des
1134 mesures elles-mêmes rattachées à des portées.  On pourrait représenter
1135 cela par un système de boîtes imbriquées@tie{}:
1136
1137 @quotation
1138 @iftex
1139 @sourceimage{pdf/nestedboxes,,4cm,}
1140 @end iftex
1141 @ifnottex
1142 @sourceimage{nestedboxes,,,png}
1143 @end ifnottex
1144 @end quotation
1145
1146 Cette structure est cependant réductrice car reposant sur des postulats
1147 extrêmement restrictifs.  Cela devient plus évident dès lors que la
1148 musique se complique@tie{}:
1149
1150 @lilypond[quote]
1151 \layout {
1152   \context {
1153     \Score
1154     \remove "Timing_translator"
1155     \remove "Default_bar_line_engraver"
1156   }
1157   \context {
1158     \Staff
1159     \consists "Timing_translator"
1160     \consists "Default_bar_line_engraver"
1161   }
1162 }
1163
1164 \new PianoStaff <<
1165   \new Staff = "RH" <<
1166     \new Voice = "I" \relative c''' {
1167       \time 3/4
1168       \voiceOne
1169       \times 6/7 {g8 g g g g g g}
1170       \oneVoice
1171       r4 <b,, fis' g bes> r4\fermata
1172     }
1173     \new Voice = "II" \relative c' {
1174       \voiceTwo
1175       c4
1176       \times 4/5 {
1177         <c ees>8 f g
1178         \change Staff = "LH" \oneVoice
1179         \stemUp g,( c}
1180       r4
1181       \override Stem #'cross-staff = ##t
1182       \override Stem #'length = #12
1183       <fis, b>) r\fermata
1184     }
1185   >>
1186   \new Staff = "LH" <<
1187     \new Voice = "III" \relative c' {
1188       \time 2/4
1189       \clef "bass"
1190       g4 \stopStaff s
1191       \startStaff s2*2
1192     }
1193   >>
1194 >>
1195 @end lilypond
1196
1197 Ici, les portées débutent et s'arrêtent n'importe où, les voix passent
1198 d'une portée à l'autre, et parfois même occupent deux portées.  Nombre
1199 de logiciels auront d'énormes difficultés à reproduire cet exemple, pour
1200 la bonne et simple raison qu'ils se basent sur le modèle hiérarchique de
1201 boîtes imbriquées.  LilyPond, quant à lui, tend à préserver la
1202 dichotomie entre le format de saisie et une structure aussi flexible que
1203 possible.
1204
1205
1206 @node Les constituants de la gravure
1207 @unnumberedsubsec Les constituants de la gravure
1208 @translationof What symbols to engrave?
1209
1210 @cindex gravure
1211 @cindex typographie
1212 @cindex graveur
1213 @cindex greffon
1214 @cindex module
1215
1216 Si le processus de formatage se charge de décider où positionner les
1217 symboles, encore faudrait-il savoir @emph{quels} symboles doivent
1218 apparaître -- ou bien, quelle notation utiliser.
1219
1220 La notation musicale constitue une forme d'enregistrement de la musique
1221 qui a d'ailleurs évolué sur un millier d'années.  La forme que nous
1222 utilisons de nos jours remonte au début de la Renaissance.  Bien que ses
1223 fondements n'aient pas changé -- des têtes de note réparties sur une
1224 portée à cinq lignes --, certains détails sont apparus qui permettent de
1225 rendre compte des apports de la notation contemporaine.  La notation
1226 musicale couvre cinq siècles de musique, allant de la simple monodie à
1227 de gigantesques contrepoints orchestraux.
1228
1229 Comment intégrer un tel monstre aux si nombreux visages ? Notre solution
1230 est de clairement distinguer la notation -- @emph{quels} symboles
1231 utiliser -- de la gravure -- @emph{où} les placer.  Pour appréhender la
1232 notation, nous l'avons disséquée en éléments simples (et
1233 programmables)@tie{}: chaque type de symbole est géré par un module --
1234 ou greffon -- différent.  Tous ces modules sont entièrement
1235 configurables et indépendants, chacun pouvant être développé et amélioré
1236 séparément.  Nous appelons ces modules des graveurs (@emph{engravers} en
1237 anglais), par analogie avec ces professionnels qui mettent en forme
1238 graphiquement les idées musicales.
1239
1240
1241 Le module le plus basique, qu'on appelle @code{Note_heads_engraver},
1242 crée les têtes de notes@tie{}:
1243
1244 @lilypond[quote,ragged-right]
1245 \include "engraver-example.ily"
1246
1247 \score {
1248   \topVoice
1249   \layout {
1250     \context {
1251       \Voice
1252       \remove "Stem_engraver"
1253       \remove "Phrasing_slur_engraver"
1254       \remove "Slur_engraver"
1255       \remove "Script_engraver"
1256       \remove "Beam_engraver"
1257       \remove "Auto_beam_engraver"
1258     }
1259     \context {
1260       \Staff
1261       \remove "Accidental_engraver"
1262       \remove "Key_engraver"
1263       \remove "Clef_engraver"
1264       \remove "Bar_engraver"
1265       \remove "Time_signature_engraver"
1266       \remove "Staff_symbol_engraver"
1267       \consists "Pitch_squash_engraver"
1268     }
1269   }
1270 }
1271 @end lilypond
1272
1273 @noindent
1274 Puis le module @code{Staff_symbol_engraver} génère les objets
1275 représentant les lignes de portée@tie{}:
1276
1277 @lilypond[quote,ragged-right]
1278 \include "engraver-example.ily"
1279
1280 \score {
1281   \topVoice
1282   \layout {
1283     \context {
1284       \Voice
1285       \remove "Stem_engraver"
1286       \remove "Phrasing_slur_engraver"
1287       \remove "Slur_engraver"
1288       \remove "Script_engraver"
1289       \remove "Beam_engraver"
1290       \remove "Auto_beam_engraver"
1291     }
1292     \context {
1293       \Staff
1294       \remove "Accidental_engraver"
1295       \remove "Key_engraver"
1296       \remove "Clef_engraver"
1297       \remove "Bar_engraver"
1298       \consists "Pitch_squash_engraver"
1299       \remove "Time_signature_engraver"
1300     }
1301   }
1302 }
1303 @end lilypond
1304
1305 @noindent
1306 le module @code{Clef_engraver} fournit au @code{Note_heads_engraver}
1307 la hauteur à laquelle doit être placée chaque tête de note@tie{}:
1308
1309 @lilypond[quote,ragged-right]
1310 \include "engraver-example.ily"
1311
1312 \score {
1313   \topVoice
1314   \layout {
1315     \context {
1316       \Voice
1317       \remove "Stem_engraver"
1318       \remove "Phrasing_slur_engraver"
1319       \remove "Slur_engraver"
1320       \remove "Script_engraver"
1321       \remove "Beam_engraver"
1322       \remove "Auto_beam_engraver"
1323     }
1324     \context {
1325       \Staff
1326       \remove "Accidental_engraver"
1327       \remove "Key_engraver"
1328       \remove "Bar_engraver"
1329       \remove "Time_signature_engraver"
1330     }
1331   }
1332 }
1333 @end lilypond
1334
1335 @noindent
1336 et, enfin, les hampes et leurs crochets sont gérés par le
1337 @code{Stem_engraver}@tie{}:
1338
1339 @lilypond[quote,ragged-right]
1340 \include "engraver-example.ily"
1341
1342 \score {
1343   \topVoice
1344   \layout {
1345     \context {
1346       \Voice
1347       \remove "Phrasing_slur_engraver"
1348       \remove "Slur_engraver"
1349       \remove "Script_engraver"
1350       \remove "Beam_engraver"
1351       \remove "Auto_beam_engraver"
1352     }
1353     \context {
1354       \Staff
1355       \remove "Accidental_engraver"
1356       \remove "Key_engraver"
1357       \remove "Bar_engraver"
1358       \remove "Time_signature_engraver"
1359     }
1360   }
1361 }
1362 @end lilypond
1363
1364 @noindent
1365 Le module @code{Stem_engraver} est appelé dès qu'une tête de note
1366 apparaît.  Pour chaque note rencontrée -- ou groupe de notes s'il s'agit
1367 d'un accord --, un objet hampe est créé et attaché à la tête de note.
1368 Si l'on ajoute les modules en charge des ligatures, des liaisons, des
1369 accents, des barres de mesure, de la métrique et de l'armure, nous avons
1370 tout ce qui est nécessaire à une partition.
1371
1372 @lilypond[quote,ragged-right]
1373 \include "engraver-example.ily"
1374 \score { \topVoice }
1375 @end lilypond
1376
1377 @cindex polyphony
1378 @cindex engraving multiple voices
1379 @cindex contexts
1380
1381 Le principe décrit plus haut fonctionne très bien pour de la musique
1382 monophonique, mais qu'en est-il de la polyphonie@tie{}?  Dans ce cas,
1383 plusieurs voix peuvent partager la même portée@tie{}:
1384
1385 @lilypond[quote,ragged-right]
1386 \include "engraver-example.ily"
1387 \new Staff << \topVoice \\ \botVoice >>
1388 @end lilypond
1389
1390 Ici, la portée et les altérations sont partagées mais les hampes,
1391 liaisons, liens, etc. dépendent de chaque voix.  De plus, les graveurs
1392 doivent être regroupés.  Les graveurs de têtes de note, hampes,
1393 liaisons, etc. sont donc inclus dans un groupe appelé @emph{Voice
1394 context} (contexte de voix),  alors que l'armure, les altérations, les
1395 barres de mesures, etc. sont placées dans un groupe @emph{Staff context}
1396 (contexte de portée).  Dans le cas d'une polyphonie, un contexte de
1397 portée contient plusieurs contextes de voix.  De même, plusieurs
1398 contextes de portée peuvent être assemblés dans un contexte de partition
1399 (@emph{Score context})@tie{}:
1400
1401 @lilypond[quote,ragged-right]
1402 \include "engraver-example.ily"
1403 \score {
1404    <<
1405       \new Staff << \topVoice \\ \botVoice >>
1406       \new Staff << \pah \\ \hoom >>
1407    >>
1408 }
1409 @end lilypond
1410
1411 @seealso
1412 Référence des propriétés internes :
1413 @rinternals{Contexts}.
1414
1415
1416 @node Flexibilité architecturale
1417 @unnumberedsubsec Flexibilité architecturale
1418 @translationof Flexible architecture
1419
1420 Pour ses premiers pas, LilyPond était totalement écrit en langage
1421 C++@tie{}; les programmeurs gravaient les fonctionnalités du programme
1422 dans le marbre.  Cela s'est avéré peu satisfaisant pour plusieurs
1423 raisons@tie{}:
1424
1425 @itemize
1426
1427 @item Il peut arriver que LilyPond commette une erreur, auquel cas
1428 l'utilisateur doit pouvoir déroger aux décisions arbitraires, et donc
1429 se servir du moteur de formatage.  Par conséquent,  les règles et
1430 paramètres ne peuvent être fixés lors de la compilation, mais doivent
1431 être accessibles lors de l'exécution.
1432
1433 @item Graver est une affaire de jugement visuel, donc une affaire de goût.
1434 Nous savons que les utilisateurs peuvent ne pas être d'accord avec nous.
1435 Il faut donc qu'il aient accès aux définitions des styles
1436 typographiques.
1437
1438 @item Enfin, nous redéfinissons continuellement les règles de formatage,
1439 et avons donc besoin d'une approche souple des règles.  Le C++ implique
1440 une méthode de groupement des règles qui ne correspond pas au
1441 fonctionnement de la notation musicale.
1442
1443 @end itemize
1444
1445 @cindex Scheme, langage de programmation
1446 @cindex langage de programmation Scheme
1447
1448 Nous avons résolu ces problème par l'adjonction d'un interpréteur pour
1449 le Scheme et la réécriture de parties entières de LilyPond dans ce
1450 langage.  L'architecture du programme repose sur la notion d'objets
1451 graphiques que l'on peut décrire par des variables ou des fonctions
1452 Scheme.  Elle doit prendre en compte les règles de formatage, le style
1453 typographique et les décisions de formatage individuelles.
1454 L'utilisateur de LilyPond peut accéder directement à la majorité de ces
1455 contrôles.
1456
1457 La mise en page dépend des variables Scheme.  Par exemple, la variable
1458 @var{direction} définie pour de nombreux objets, encode le choix entre
1459 haut et bas (ou gauche et droite).  L'image qui suit présente deux
1460 accords, accentués et arpégés.  Pour le premier accord, la direction de
1461 chaque objet est vers le bas (ou la gauche).  Les objets sont dirigés
1462 vers le haut (ou la droite) pour le second.
1463
1464 @lilypond[quote,ragged-right]
1465 \score {
1466   \relative c' {
1467     \stemDown <e g b>4_>-\arpeggio
1468     \override Arpeggio #'direction = #RIGHT
1469     \stemUp <e g b>4^>-\arpeggio
1470   }
1471   \layout {
1472     \context {
1473       \Score
1474       \override SpacingSpanner #'spacing-increment = #3
1475       \override TimeSignature #'transparent = ##t
1476     }
1477   }
1478 }
1479 @end lilypond
1480
1481 @cindex score formatting
1482 @cindex formatting a score
1483 @cindex formatting rules
1484
1485 @noindent
1486 Le processus de mise en forme d'une partition consiste à lire et
1487 écrire des variables d'objets.  Certaines variables ont une valeur
1488 prédéfinie.  Par exemple, l'épaisseur de nombreuses lignes --
1489 caractéristiques d'un style typographique -- est préétablie.  La changer
1490 entraîne un changement du style typographique.
1491
1492 @lilypond[quote,ragged-right]
1493 fragment = {
1494    \clef bass f8 as8
1495    c'4-~ c'16 as g f e16 g bes c' des'4
1496 }
1497 <<
1498    \new Staff \fragment
1499    \new Staff \with {
1500       \override Beam #'beam-thickness = #0.3
1501       \override Stem #'thickness = #0.5
1502       \override Bar #'thickness = #3.6
1503       \override Tie #'thickness = #2.2
1504       \override StaffSymbol #'thickness = #3.0
1505       \override Tie #'extra-offset = #'(0 .  0.3)
1506       }
1507       \fragment
1508 >>
1509 @end lilypond
1510
1511 Les valeurs prédéfinies de certaines variables font aussi partie des
1512 règles de formatage.  Chaque objet possède des variables contenant des
1513 procédures.  Ces procédures réalisent le formatage prédéfini, dont
1514 l'apparence peut être changée en remplaçant ces procédures par d'autres.
1515 Dans l'exemple suivant, la règle permettant à l'objet @qq{tête de note}
1516 de dessiner son symbole est modifiée au cours de l'extrait
1517 musical@tie{}:
1518
1519 @lilypond[quote,ragged-right]
1520 #(set-global-staff-size 30)
1521
1522 #(define (mc-squared grob orig current)
1523   (let* ((interfaces (ly:grob-interfaces grob))
1524          (pos (ly:grob-property grob 'staff-position)))
1525     (if (memq 'note-head-interface interfaces)
1526         (begin
1527           (ly:grob-set-property! grob 'stencil
1528             (grob-interpret-markup grob
1529               (make-lower-markup 0.5
1530                 (case pos
1531                   ((-5) "m")
1532                   ((-3) "c ")
1533                   ((-2) (make-smaller-markup (make-bold-markup "2")))
1534                   (else "bla")))))))))
1535
1536 \new Voice \relative c' {
1537   \stemUp
1538   \set autoBeaming = ##f
1539   \time 2/4
1540   <d f g>4
1541   \once \override NoteHead #'stencil = #note-head::brew-ez-stencil
1542   \once \override NoteHead #'font-size = #-7
1543   \once \override NoteHead #'font-family = #'sans
1544   \once \override NoteHead #'font-series = #'bold
1545   <d f g>4
1546   \once \override NoteHead #'style = #'cross
1547   <d f g>4
1548   \applyOutput #'Voice #mc-squared
1549   <d f g>4
1550   <<
1551     { d8[ es-( fis^^ g] fis2-) }
1552     \repeat unfold 5 { \applyOutput #'Voice #mc-squared s8 }
1553   >>
1554 }
1555 @end lilypond
1556
1557
1558 @node Démonstration par l'exemple
1559 @section Démonstration par l'exemple
1560 @translationof Putting LilyPond to work
1561
1562 @cindex simples exemples
1563 @cindex exemples simples
1564
1565 Nous vous avons montré ce que devrait être la gravure musicale, et
1566 comment nous avons construit notre logiciel pour imiter cette apparence.
1567 Nous nous sommes énormément investis dans cette construction. En guise
1568 de  récompense pour ce long travail, vous pouvez à votre tour
1569 utiliser le programme pour imprimer votre musique.
1570 Commençons par quelques notes@dots{}
1571
1572 @lilypond[quote,relative=1]
1573 {
1574   \time 2/4
1575   c4 c g'4 g a4 a g2
1576 }
1577 @end lilypond
1578
1579 @noindent
1580 Lorsqu'on leur ajoute des accords et des paroles, on obtient une chanson
1581 populaire@dots{}
1582
1583 @lilypond[quote,ragged-right]
1584 <<
1585    \chords { c2 c f2 c }
1586    \new Staff
1587    \relative c' {
1588      \time 2/4
1589      c4 c g' g a a g2
1590    }
1591    \addlyrics { twin -- kle twin -- kle lit -- tle star }
1592 >>
1593 @end lilypond
1594
1595 On peut aussi éditer de la polyphonie ou une partition pour piano.
1596 Quant à ce qui suit, admirez l'exotisme de certaines
1597 constructions@dots{}
1598
1599 @lilypond[quote]
1600 \header {
1601   title = "Screech and boink"
1602   subtitle = "Random complex notation"
1603   composer = "Han-Wen Nienhuys"
1604 }
1605
1606 \score {
1607   \context PianoStaff <<
1608     \new Staff = "up" {
1609       \time 4/8
1610       \key c \minor
1611       << {
1612         \revert Stem #'direction
1613         \change Staff = down
1614         \set subdivideBeams = ##t
1615         g16.[
1616           \change Staff = up
1617           c'''32
1618           \change Staff = down
1619           g32
1620           \change Staff = up
1621           c'''32
1622           \change Staff = down
1623           g16]
1624         \change Staff = up
1625         \stemUp
1626         \set followVoice = ##t
1627         c'''32([ b''16 a''16 gis''16 g''32)]
1628       } \\ {
1629         s4 \times 2/3 { d'16[ f' g'] } as'32[ b''32 e'' d'']
1630       } \\ {
1631         s4 \autoBeamOff d''8.. f''32
1632       } \\ {
1633         s4 es''4
1634       } >>
1635     }
1636
1637     \new Staff = "down" {
1638       \clef bass
1639       \key c \minor
1640       \set subdivideBeams = ##f
1641       \override Stem  #'french-beaming = ##t
1642       \override Beam  #'beam-thickness = #0.3
1643       \override Stem  #'thickness = #4.0
1644       g'16[ b16 fis16 g16]
1645       << \makeClusters {
1646         as16 <as b>
1647         <g b>
1648         <g cis>
1649       } \\ {
1650         \override Staff.Arpeggio  #'arpeggio-direction =#down
1651         <cis, e, gis, b, cis>4\arpeggio
1652       }
1653     >> }
1654   >>
1655   \midi {
1656     \context {
1657       \Score
1658       tempoWholesPerMinute = #(ly:make-moment 60 8)
1659     }
1660   }
1661   \layout {
1662     \context {
1663       \Staff
1664       \consists Horizontal_bracket_engraver
1665     }
1666   }
1667 }
1668 @end lilypond
1669
1670 Ces fragments ont tous été écrits à la main, mais ce n'est pas une
1671 obligation.  Dans la mesure où le moteur de formatage est presque
1672 complètement automatisé, il peut servir à générer du matériel imprimable
1673 pour d'autres programmes en charge de manipuler de la musique.  LilyPond
1674 est parfaitement en mesure de convertir des bases de données musicales
1675 aux fins de les utiliser dans des sites internet ou des présentations
1676 multimédia.
1677
1678 Vous avez constaté, au fil de notre propos, que le format source est
1679 purement textuel et peut donc être réutilisé dans d'autres formats
1680 basés sur une description textuelle comme @LaTeX{}, HTML ou -- ce qui
1681 est le cas pour la documentation de LilyPond -- Texinfo.  À l'aide du
1682 script @command{lilypond-book} fournit avec LilyPond, les fragments
1683 de code insérés feront place à une image dans le fichier résultant,
1684 qu'il soit au format PDF ou HTML.  Il existe aussi une extension pour
1685 OpenOffice.org -- OOoLilyPond -- qui permet d'insérer des extraits dans
1686 un document.
1687
1688 Pour mieux voir LilyPond en action, consulter la documentation ou
1689 accéder directement au logiciel, rendez-vous sur www.lilypond.org.
1690
1691 @page
1692 @node Comparatif (BWV 861)
1693 @section Comparatif (BWV 861)
1694 @translationof Engraved examples (BWV 861)
1695
1696 Cette annexe présente quatre éditions de référence et deux éditions
1697 informatisées des sept dernières mesures de la fugue en sol mineur
1698 extraite du Premier livre du clavier bien tempéré de Bach
1699 (BWV@tie{}861).
1700
1701 @noindent
1702 Bärenreiter BA5070 (Neue Ausgabe Sämtlicher Werke, Serie V, Band 6.1,
1703 1989)@tie{}:
1704
1705 @iftex
1706 @sourceimage{bwv861-baer,16cm,,}
1707 @end iftex
1708 @ifnottex
1709 @sourceimage{bwv861-baer-small,,,png}
1710 @end ifnottex
1711
1712 @noindent
1713 Bärenreiter BA5070 (Neue Ausgabe Sämtlicher Werke, Serie V, Band 6.1,
1714 1989), à partir d'une autre source.  En plus de différences au niveau
1715 des éléments textuels, ce travail montre que, au sein d'une même maison
1716 d'édition, les appréciations peuvent être différentes selon le
1717 graveur@tie{}:
1718
1719 @iftex
1720 @sourceimage{bwv861-baer-alt,16cm,,}
1721 @end iftex
1722 @ifnottex
1723 @sourceimage{bwv861-baer-alt-small,,,png}
1724 @end ifnottex
1725
1726 @noindent
1727 Breitkopf & Härtel, édité par Ferruccio Busoni (Wiesbaden, 1894),
1728 disponible à la Petrucci Music Library (IMSLP@tie{}#22081).  Les
1729 éléments éditoriaux tels que doigtés et articulations en ont été gommés
1730 aux fins de comparaison avec les autres éditions@tie{}:
1731
1732 @iftex
1733 @sourceimage{bwv861-breitkopf,16cm,,}
1734 @end iftex
1735 @ifnottex
1736 @sourceimage{bwv861-breitkopf-small,,,png}
1737 @end ifnottex
1738
1739 @noindent
1740 Bach-Gesellschaft edition (Leipzig, 1866), disponible à la Petrucci
1741 Music Library (IMSPL@tie{}#02221)@tie{}:
1742
1743 @iftex
1744 @sourceimage{bwv861-gessellschaft,16cm,,}
1745 @end iftex
1746 @ifnottex
1747 @sourceimage{bwv861-gessellschaft-small,,,png}
1748 @end ifnottex
1749
1750 @noindent
1751 Finale 2008@tie{}:
1752
1753 @iftex
1754 @sourceimage{pdf/bwv861-finale2008a,,,}
1755 @end iftex
1756 @ifnottex
1757 @sourceimage{bwv861-finale2008a,,,png}
1758 @end ifnottex
1759
1760 @sp 4
1761 @noindent
1762 LilyPond, version @version{}@tie{}:
1763
1764 @lilypond[staffsize=14.3,line-width=15.9\cm]
1765 global = {\key g \minor}
1766
1767 partI = \relative c' {
1768   \voiceOne
1769   fis8 d' ees g, fis4 g
1770   r8 a16 bes c8 bes16 a d8 r r4
1771   r2 r8 d16 ees f8 ees16 d
1772   ees4 ~ ees16 d c bes a4 r8 ees'16 d
1773   c8 d16 ees d8 e16 fis g8 fis16 g a4 ~
1774   a8 d, g f ees d c bes
1775   a2 g\fermata \bar "|."
1776 }
1777
1778 partII = \relative c' {
1779   \voiceTwo
1780   d4 r4 r8 d'16 c bes8 c16 d
1781   ees8 d c ees a, r r4
1782   r8 fis16 g a8 g16 fis g2 ~
1783   g2 r8 d' ees g,
1784   fis4 g r8 a16 bes c8 bes16 a
1785   bes4. <g b>8 <a c> r <d, g> r
1786   <ees g>4 <d fis> d2
1787 }
1788 partIII = \relative c' {
1789   \voiceOne
1790   r2 r8 d ees g, fis4 g r8 a16 bes c8 bes16 a
1791   bes2 ~ bes8 b16 a g8 a16 b
1792   c4 r r2
1793   R1
1794   r8 d ees g, fis4 g
1795   r8 a16 bes c8 bes16 a b2
1796 }
1797 partIV = \relative c {
1798   \voiceTwo
1799   d4 r r2
1800   r8 d ees g, fis4 a
1801   d,8 d'16 c bes8 c16 d ees2 ~
1802   ees8 ees16 d c8 d16 ees fis,8 a16 g fis8 g16 a
1803   d,8 d'16 c bes8 c16 d ees8 c a fis'
1804   g f ees d c bes a g
1805   c a d d, g2\fermata
1806 }
1807
1808 \score {
1809   <<
1810     % \set Score.barNumberVisibility = #all-bar-numbers-visible
1811     % required in 2.13
1812     \set Score.currentBarNumber = #28
1813     \bar ""
1814     \new PianoStaff <<
1815       \new Staff = "RH" <<
1816         \global
1817         \new Voice = "voiceI" { \partI }
1818         \new Voice = "voiceII" { \partII }
1819       >>
1820
1821       \new Staff = "LH" <<
1822         \clef "bass"
1823         \global
1824         \new Voice = "voiceIII" { \partIII }
1825         \new Voice = "voiceIV" { \partIV }
1826       >>
1827     >>
1828   >>
1829   \layout {
1830     \context {
1831       \Staff
1832       \remove "Time_signature_engraver"
1833     }
1834     \context {
1835       \PianoStaff
1836       \override StaffGrouper #'staff-staff-spacing #'padding = #1
1837     }
1838   }
1839 }
1840 @end lilypond