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