@node Engraving
@unnumberedsubsec Engraving
+@cindex gravure
+@cindex typographie musicale
+@cindex musique et typographie
+
L'art de la typographie musicale se nomme la @emph{gravure}. Ce terme
est issu du processus traditionnel d'impression musicale. Il y a
seulement quelques dizaines d'années, on faisait les partitions en
@c introduce illustrating aspects of engraving, font...
Les images ci-dessous illustrent la différence entre la gravure
-traditionelle et l'impression typique par ordinateur, et la troisème
+traditionelle et l'impression typique par ordinateur, et la troisième
image montre comment LilyPond mime l'aspect traditionnel. L'image de
gauche est une numérisation d'un symbole bémol d'une édition publiée
en 2000. Celle du centre montre un bémol d'une gravure à la main de
@node Automated engraving
@unnumberedsubsec Automated engraving
+@cindex gravure automatisée
+@cindex automatisée, gravure
+
Comment pouvons-nous implémenter la typographie ? Si les artisans ont
besoin de plus de dix ans pour devenir de vrais maîtres, comment nous,
simples programmeurs, pourrions-nous jamais écrire un programme pour
insatisfaisant pour plusieurs raisons :
@itemize
+
@item Quand Lilypond fait des erreurs,
les utilisateurs ont besoin de contredire les décisions de formatage.
Les utilisateurs doivent donc avoir accès au moteur de formatage. Par
donc nous avons besoin d'une approche souple des règles. Le language
C++ oblige à une certaine méthode de groupage des règles qui ne
convient pas bien au fonctionnement de la notation musicale.
+
@end itemize
+@cindex langage de programmation Scheme
+
Ces problèmes ont été résolus en intégrant un interpréteur pour le
language de programmation Scheme, et en réécrivant des parties de
LilyPond en Scheme. L'architecture actuelle de formatage est
}
@end lilypond
+@cindex partition, formatage
+@cindex formatage d'une partition
+@cindex formatage, règles de
+
@noindent
Le processus de formatage d'une partition consiste à lire et écrire
les variables d'objets graphiques. Certaines variables ont une valeur
(pos (ly:grob-property grob 'staff-position)))
(if (memq 'note-head-interface interfaces)
(begin
- (ly:grob-set-property! grob 'stencil ly:text-interface::print)
- (ly:grob-set-property! grob 'font-family 'roman)
- (ly:grob-set-property! grob 'text
- (make-raise-markup -0.5
- (case pos
- ((-5) (make-simple-markup "m"))
- ((-3) (make-simple-markup "c "))
- ((-2) (make-smaller-markup (make-bold-markup "2")))
- (else (make-simple-markup "bla")))))))))
+ (ly:grob-set-property! grob 'stencil
+ (grob-interpret-markup grob
+ (make-lower-markup 0.5
+ (case pos
+ ((-5) "m")
+ ((-3) "c ")
+ ((-2) (make-smaller-markup (make-bold-markup "2")))
+ (else "bla")))))))))
\new Voice \relative c' {
- \stemUp
- \set autoBeaming = ##f
- \time 2/4
- <d f g>4
- \once \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
- \once \override NoteHead #'font-size = #-7
- \once \override NoteHead #'font-family = #'sans
- \once \override NoteHead #'font-series = #'bold
- <d f g>
- \once \override NoteHead #'style = #'cross
- <d f g>
- \applyOutput #'Voice #mc-squared
- <d f g>
- <<
- { d8[ es-( fis^^ g] fis2-) }
- \repeat unfold 5 { \applyOutput #'Voice #mc-squared s8 }
- >>
+ \stemUp
+ \set autoBeaming = ##f
+ \time 2/4
+ <d f g>4
+ \once \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
+ \once \override NoteHead #'font-size = #-7
+ \once \override NoteHead #'font-family = #'sans
+ \once \override NoteHead #'font-series = #'bold
+ <d f g>4
+ \once \override NoteHead #'style = #'cross
+ <d f g>4
+ \applyOutput #'Voice #mc-squared
+ <d f g>4
+ <<
+ { d8[ es-( fis^^ g] fis2-) }
+ \repeat unfold 5 { \applyOutput #'Voice #mc-squared s8 }
+ >>
}
@end lilypond
@cindex gravure
@cindex typographie
+@cindex graveur
+@cindex greffon
Le processus de formatage décide où placer les symboles. Cependant,
cela ne peut être fait qu'à partir du moment où il a été décidé
\score { \topVoice }
@end lilypond
+@cindex polyphonie
+@cindex graver plusieurs voix
+@cindex contextes
+
Ce système fonctionne bien pour de la musique monodique, mais qu'en
est-il de la polyphonie ? En notation polyphonique, plusieurs voix
peuvent partager une portée.
contexte de Partition. Le contexte de Partition est le contexte de
notation de plus haut niveau.
-@seealso
+@seealso
Référence du programme: @rinternals{Contexts}.
+
@lilypond[quote,ragged-right]
\include "engraver-example.ily"
\score {
@node Music representation
@unnumberedsubsec Music representation
+@cindex syntaxe
+@cindex structures recursives
+
Idéalement, le format d'entrée pour n'importe quel système de
formatage est une description abstraite du contenu. Dans ce cas-ci,
ce serait la musique elle-même. Cela pose un formidable problème :
Des accord peuvent être construits avec @code{<<} et @code{>>} autour
des notes.
-@c < > is not a music expression,
-@c so we use <<>> iso. <> to drive home the point of
-@c expressions. Don't change this back --hwn.
-
-@c FIXME: change this. I can explain it better. -gp
@example
<<c4 d4 e4>>
@end example
\new Voice { << g2 \\ { f4 <<c d e>> } >> }
@end lilypond
-De telles strucutres récursives peuvent être spécifiées formellement
+De telles structures récursives peuvent être spécifiées formellement
et de manière ordonnée dans une grammaire indépendante de tout
contexte. Le code d'analyse est aussi générée à partir de cette
grammaire. Autrement dit, la syntaxe de LilyPond est définie
@node Example applications
@unnumberedsubsec Example applications
+@cindex examples simples
+
Nous avons conçu LilyPond comme une expérimentation visant à
concentrer l'art de la gravure musicale dans un logiciel. Grâce à
tout ce dur labeur, le programme peut maintenant être utilisé pour
@lilypond[quote,ragged-right]
<<
\chords { c2 c f2 c }
- \new Staff \relative c' { \time 2/4 c4 c g'4 g a4 a g2 }
- \new Lyrics \lyricmode { twin4 kle twin kle lit tle star2 }
+ \new Staff
+ \relative c' {
+ \time 2/4
+ c4 c g' g a a g2
+ }
+ \addlyrics { twin -- kle twin -- kle lit -- tle star }
>>
@end lilypond
<< {
\revert Stem #'direction
\change Staff = down
- \set subdivideBeams = ##t
+ \set subdivideBeams = ##t
g16.[
\change Staff = up
c'''32
\override Beam #'thickness = #0.3
\override Stem #'thickness = #4.0
g'16[ b16 fis16 g16]
- << \makeClusters {
+ << \makeClusters {
as16 <as b>
<g b>
<g cis>
Cette partie présente les différents volumes de la documentation.
+@cindex Manuel d'initiation
+@cindex Glossaire musical
+@cindex Manuel de notation
+@cindex Utilisation des programmes
+@cindex Exemples de code
+@cindex Référence des propriétés internes
+
@c leave these lines wrapping around. It's some texinfo 4.12 thing. -gp
@c This is actually a limitation of texi2html. -jm
@menu
@node About the Music Glossary
@unnumberedsubsec About the Music Glossary
+@cindex Glossaire musical
@cindex jargon
@cindex terminologie
@cindex langues étrangères
@node About the Notation Reference
@unnumberedsubsec About the Notation Reference
+@cindex Manuel de notation
+@cindex annexes
+@cindex références, tables de
+@cindex tables de références
+
Ce manuel détaille toutes les commandes LilyPond produisant une notation
musicale. La lecture de cet ouvrage requiert une bonne compréhension des
concepts exposés dans le manuel d'initiation.
@c Normalement, il est impossible d'utiliser deux points en français,
@c car une référence externe doit se terminer par un signe de
-@c ponctuation dans la format Info. Cependant, Info
+@c ponctuation dans le format Info. Cependant, Info
@c n'internationalise pas encore des documents Info, donc nous n'en
@c avons rien à faire pour l'instant. -jm
@item
@node About the Application Usage
@unnumberedsubsec About the Application Usage
+@cindex Utilisation des programmes
+@cindex intégration de LilyPond avec d'autres programmes
+
Ce manuel explique l'exécution des programmes et l'intégration de
partitions LilyPond dans d'autres programmes.
@unnumberedsubsec About the Snippet List
@cindex snippets
+@cindex extraits de code
@cindex LSR
+@cindex LilyPond Snippet Repository
@rlsrnamed{Top,Exemples de code} :
il s'agit d'une sélection de petits exemples montrant des trucs,