background: #fad58c url(../pictures/color4-bg.png) repeat-x top left;
}
-#tocframe .toc .toc li.toc_current a,
-#tocframe .toc .toc li.toc_current a:hover {
- color: #000;
- text-decoration: underline;
+#tocframe .toc .toc li.colorDefault a {
+ background: #8cbc6c url(../pictures/nav-bg-2.png) repeat-x top left;
+ color: #fff;
}
-/* having this useless style makes the perl init file easier */
-#tocframe .toc .toc li.colorDefault a,
#tocframe .toc .toc li.colorDefault a:hover {
- background: #8cbc6c url(../pictures/nav-active-2.png) repeat-x top left;
+ background: #8cbc6c url(../pictures/nav-hover-2.png) repeat-x top left;
color: #fff;
- text-decoration: underline;
}
#tocframe .toc .toc li.color1 a:hover {
background: #fbe69d url(../pictures/color4-hover.png) repeat-x top left;
}
+#tocframe .toc .toc li.toc_current a,
+#tocframe .toc .toc li.toc_current a:hover {
+ color: #000;
+ text-decoration: underline;
+}
+
+#tocframe .toc .toc li.colorDefault.toc_current a,
+#tocframe .toc .toc li.colorDefault.toc_current a:hover {
+ background: #8cbc6c url(../pictures/nav-active-2.png) repeat-x top left;
+ color: #fff;
+ text-decoration: underline;
+}
+
#tocframe .toc .toc li.color1.toc_current a,
#tocframe .toc .toc li.color1.toc_current a:hover {
background: #beee9e url(../pictures/color1-active.png) repeat-x top left;
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 95e6825ee09ca7f8eea87580301c8819ff1d571b
+ Translation of GIT committish: 5a1312de54bc66dfe10a08670db976354e9ae5c3
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@funindex eses
@funindex isis
-Glossaire musical : @rglos{sharp}, @rglos{flat}, @rglos{double sharp},
+Glossaire musicologique :
+@rglos{sharp}, @rglos{flat}, @rglos{double sharp},
@rglos{double flat}, @rglos{accidental}.
Dans la notation par défaut, on obtient un @notation{dièse} en
@funindex \minor
@funindex minor
-Glossaire musical : @rglos{key signature}, @rglos{major},
+Glossaire musicologique :
+@rglos{key signature}, @rglos{major},
@rglos{minor}.
L'armure est déterminée par la commande @code{\key}, suivie d'une
@subheading Attention aux armures et aux hauteurs
-Glossaire musical : @rglos{accidental}, @rglos{key signature},
+Glossaire musicologique :
+@rglos{accidental}, @rglos{key signature},
@rglos{pitch}, @rglos{flat}, @rglos{natural}, @rglos{sharp},
@rglos{transposition}.
@ruser{Altérations}, @ruser{Altérations accidentelles automatiques},
@ruser{Armure}.
-Glossaire musical : @rglos{Pitch names}.
+Glossaire musicologique :
+@rglos{Pitch names}.
@node Liaisons
@subheading Liaisons de prolongation
-Glossaire musical : @rglos{tie}.
+Glossaire musicologique :
+@rglos{tie}.
Pour créer une liaison de prolongation@footnote{parfois aussi appelée
liaison de tenue}, on ajoute un tilde @code{~} à la première note
@c slur = "il zon" (articulation). jcm
@c phrasing slur = "ils ont des chapeaux ronds" (phrase). jcm
-Glossaire musical : @rglos{slur}, @rglos{phrasing}.
+Glossaire musicologique :
+@rglos{slur}, @rglos{phrasing}.
Une liaison d'articulation ou @emph{legato} peut englober
plusieurs notes. Les notes de départ et d'arrivée sont suivies
@cindex liaisons d'articulation et de prolongation, différences
@subheading Attention aux types de liaison
-Glossaire musical : @rglos{articulation}, @rglos{slur}, @rglos{tie}.
+Glossaire musicologique :
+@rglos{articulation}, @rglos{slur}, @rglos{tie}.
Une liaison d'articulation ou de phrasé ressemble à une liaison de
prolongation, mais n'a pas la même signification. Alors qu'une
@cindex accents
@cindex staccato
-Glossaire musical : @rglos{articulation}.
+Glossaire musicologique :
+@rglos{articulation}.
Des @notation{articulations} peuvent être ajoutées à une note, au moyen
d'un tiret @code{-} suivi d'un caractère :
@funindex ^
@funindex _
-Glossaire musical : @rglos{fingering}.
+Glossaire musicologique :
+@rglos{fingering}.
De même, des indications de doigté peuvent être ajoutées à une note en
utilisant un tiret (@samp{-}) et le chiffre à écrire :
@funindex \!
@funindex !
-Glossaire musical : @rglos{dynamics}, @rglos{crescendo},
+Glossaire musicologique :
+@rglos{dynamics}, @rglos{crescendo},
@rglos{decrescendo}.
On obtient un signe de @notation{nuance} en ajoutant à la note les
@funindex \autoBeamOn
@funindex autoBeamOn
-Glossaire musical : @rglos{beam}.
+Glossaire musicologique :
+@rglos{beam}.
Toutes les barres de ligature sont dessinées automatiquement :
@funindex \partial
@funindex partial
-Glossaire musical : @rglos{anacrusis}.
+Glossaire musicologique : @rglos{anacrusis}.
On crée une levée (ou anacrouse) avec la commande @code{\partial},
suivie d'une durée : @code{\partial 4} produit une levée d'une noire
@funindex \times
@funindex times
-Glossaire musical : @rglos{note value}, @rglos{triplet}.
+Glossaire musicologique : @rglos{note value}, @rglos{triplet}.
Les @notation{nolets} sont créés avec la commande @code{\times}, qui
prend deux arguments : une fraction et une expression musicale. La
@funindex \appoggiatura
@funindex acciaccatura
-Glossaire musical : @rglos{grace notes}, @rglos{acciaccatura},
+Glossaire musicologique : @rglos{grace notes}, @rglos{acciaccatura},
@rglos{appoggiatura}.
Des @notation{notes d'ornement} s'obtiennent en appliquant la commande
@funindex >>
@funindex << ... >>
-Glossaire musical : @rglos{polyphony}.
+Glossaire musicologique : @rglos{polyphony}.
Cette technique est utile pour de la musique @notation{polyphonique}.
Pour entrer une musique avec plusieurs voix ou plusieurs portées, nous
@funindex GrandStaff
@funindex ChoirStaff
-Glossaire musical : @rglos{brace}.
+Glossaire musicologique : @rglos{brace}.
La musique pour piano s'écrit sur deux portées reliées par une
@notation{accolade}. La gravure de ce type de portée est semblable à
@funindex >
@funindex < ... >
-Glossaire musical : @rglos{chord}.
+Glossaire musicologique : @rglos{chord}.
Nous avons vu précédemment comment combiner des notes simultanément,
en les encadrant par des chevrons doubles @code{<<} et @code{>>}. Pour
@funindex \addlyrics
@funindex addlyrics
-Glossaire musical : @rglos{lyrics}.
+Glossaire musicologique : @rglos{lyrics}.
Prenons une mélodie toute simple, la comptine @emph{Girls and boys
come out to play}.
@cindex alignement des paroles
@cindex paroles, mot de plusieurs syllabes
-Glossaire musical : @rglos{melisma}, @rglos{extender line}.
+Glossaire musicologique : @rglos{melisma}, @rglos{extender line}.
La deuxième ligne de la comptine précédente est @emph{The moon doth
shine as bright as day}. Ajoutons-la au code.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: c0ea3a158b80f5f6201e3ebebb82730827431000
+ Translation of GIT committish: 5a1312de54bc66dfe10a08670db976354e9ae5c3
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
exemple est un préambule à notre propos.
@funindex \book
+@funindex book
@funindex \score
+@funindex score
@cindex book, livre, ouvrage
@cindex livre
@cindex score, partition
LilyPond, ne font pas apparaître les commandes @code{\new Staff} ou
@code{\new Voice}, qui sont créées implicitement. Ce qui
n'est pas primordial pour des exemples simples le devient dès que la
-situation devient un peu plus complexe. Le fait de ne pas déclarer
+situation se complexifie un tant soit peu. Le fait de ne pas déclarer
explicitement un contexte peut alors amener à des résultats quelque peu
surprenants, comme la création d'une portée supplémentaire et
indésirable. La manière de créer explicitement des contextes est
@end example
@funindex \header
+@funindex header
@funindex \layout
+@funindex layout
@funindex \midi
@funindex midi
@cindex header
pour effet, lorsqu'elles interviennent, de produire une sortie
imprimable et un fichier MIDI. Nous nous y intéressons plus
particulièrement dans le manuel de notation, aux chapitres
-@ruser{Mise en forme de la partition} et @ruser{Création de fichiers MIDI}.
+@ruser{Mise en forme de la partition} et
+@ruser{Création de fichiers MIDI}.
@cindex partitions multiples
@cindex book, bloc implicite
Tout bloc @code{\score} inclus dans un bloc @code{\book} constitue un
fragment de musique.
+@cindex layout, effets selon l'emplacement
+
Tout bloc @code{\layout} affecte le bloc @code{\score} ou @code{\book}
au sein duquel il intervient : si c'est à l'intérieur d'un bloc
@code{\score}, seul celui-ci en sera affecté. Dans le cas où le bloc
@funindex score
@cindex partition
@cindex bloc score, contenu
-@cindex Expression musicale composite
+@cindex expression musicale composite
Dans la section précédente,
@ref{Introduction à la structure de fichier LilyPond}, nous
@seealso
-Manuel de notation : @ruser{Structure d'une partition}.
+Manuel de notation :
+@ruser{Structure d'une partition}.
@node Expressions musicales imbriquées
que de besoin.
Les contextes @code{Voice} portent les noms @code{"1"}, @code{"2"}, etc.
-Pour chacun de ces contextes, la direction et l'orientation des
+Pour chacun de ces contextes, le positionnement et l'orientation des
liaisons, hampes, nuances, etc. est définie automatiquement.
@lilypond[quote,verbatim,fragment]
Voir @ref{Visibilité et couleur des objets} et
@ref{Utilisation de variables dans les retouches}.
+@cindex polyphonie et mode relatif
+@cindex mode relatif et polyphonie
+
La polyphonie ne modifie en rien la relation entre les notes au sein
-d'un bloc @w{@code{\relative @{ @}}}. Chaque note est calculée par rapport
-à celle qui la précède, ou bien par rapport à la première note de
-l'accord qui précède. Ainsi, dans
+d'un bloc @w{@code{\relative @{ @}}}. Chaque note est calculée par
+rapport à celle qui la précède, ou bien par rapport à la première note
+de l'accord qui précède. Ainsi, dans
@example
\relative c' @{ noteA << < noteB noteC > \\ noteD >> noteE @}
Essayons à présent de coder cette musique en partant de zéro. Comme
nous le verrons, certaines difficultés vont se présenter. Partons de ce
-que nous avons appris : utilisons la construction @code{<< \\ >>} pour
+que nous avons appris : utilisons la construction @code{<< \\ >>} pour
saisir la première mesure dans trois voix :
@lilypond[quote,verbatim,fragment,ragged-right]
@cindex hampes en bas
@cindex stem up
@cindex hampes en haut
+@cindex voix et direction des hampes
+@cindex direction des hampes et voix
La direction des hampes est attribuée automatiquement : les voix
impaires portent des hampes vers le haut, les voix paires des hampes
vers le bas. Les hampes des voix 1 et 2 sont orientées comme il faut
mais celles de la voix 3 devraient, dans le cas qui nous occupe, aller
vers le bas. Nous pouvons corriger cela en sautant la voix 3 et en
-plaçant la musique dans la voix 4 :
+plaçant la musique dans la voix 4 grâce à un @code{\\} supplémentaire :
@lilypond[quote,verbatim,fragment,ragged-right]
\new Staff \relative c'' {
@cindex Lyrics, création d'un contexte
@cindex paroles, affectation à une voix
-Nous avons déjà abordé la commande @code{\addlyrics}, qui permet de
+Nous avons déjà abordé la commande @code{\addlyrics@{@}}, qui permet de
gérer des partitions simples. Cette technique est cependant
relativement limitée. Pour de la musique un peu plus compliquée, il
vous faudra contenir les paroles dans un contexte @code{Lyrics}, créé
@funindex new
@cindex nouveaux contextes
-@cindex Contextes, création de
+@cindex contextes, création de
Il en va des contextes comme de toute hiérarchie : il faut un sommet --
le contexte @code{Score} en l'occurence. La commande @code{\score} est
chargée de le créer, mais pour des partitions simples, il le sera
-automatiquement.
+automatiquement. Le bloc @code{score} contient donc une expression
+musicale unique ainsi que la définition des supports à produire --
+@code{\layout} pour du visuel ou @code{\midi} pour de l'acoustique.
Lorsqu'une partition ne comporte qu'une voix et une seule portée, vous
pouvez laisser LilyPond créer automatiquement les contextes @code{Voice}
-et @code{Staff} ; mais leur présence explicite devient indispenssable dès
+et @code{Staff} ; mais leur présence explicite devient indispensable dès
que la situation se complique.
Le moyen le plus simple est d'utiliser la commande @code{\new}. Elle
doit intervenir avant une expression musicale, ainsi :
interprète l'@var{expression-musicale} contenue dans ledit
contexte.
-Notez bien qu'il n'existe pas de commande @code{\new Score}, puisque le
-contexte premier que constitue @code{Score} est créé par @code{\score}.
+Notez bien que la commande @code{\new Score} n'est pas obligatoire,
+puisque le contexte premier que constitue @code{Score} est créé
+automatiquement par l'interprétation de l'@var{expression-musicale}
+contenue dans le bloc @code{\score}. Le seul cas où il faut créer
+explicitement un contexte @code{Score} à l'aide de la commande
+@code{\new score} est lorsqu'il comprendra un bloc @code{\with} aux fins
+de stipuler les propriétés de certains contextes qui s'appliqueront à
+l'ensemble de la partition. Vous trouverez plus dinformation sur
+l'utilisation des blocs @code{\with} au chapitre
+@ref{Modification des propriétés d'un contexte}.
Nous avons déjà vu au cours des chapitres précédents de nombreux
exemples où des contextes @code{Staff} ou @code{Voice} étaient créés au
besoin. Dans un but didactique, voici maintenant une application
-complète et largement commentée :
+complète et abondamment commentée :
@lilypond[quote,verbatim,ragged-right]
\score { % start of single compound music expression
portée MD ne contient qu'une seule expression musicale -- il n'y a
qu'une voix -- bornée par des accolades simples.
-@cindex contexte, noms de
+@cindex contexte, nommage
@cindex nommage des contextes
La commande @code{\new} peut aussi permettre de nommer le contexte créé,
@cindex graveurs
Tout point qui compose une partition générée par LilyPond est
-produit par un graveur (@emph{Engraver} en anglais). Ainsi, il y en a
+produit par un graveur (@emph{engraver} en anglais). Ainsi, il y en a
un qui imprime les portées, un autre les têtes de note, un autre les
hampes, un autre encore pour les ligatures, etc. LilyPond dispose de
plus de 120 graveurs ! La plupart des partitions ne requièrent de
@seealso
-Références internes : @rinternals{Engravers and Performers}.
+Référence des propriétés internes :
+@rinternals{Engravers and Performers}.
@node Modification des propriétés d'un contexte
>>
@end lilypond
+Dans le cas où ces ajustements de propriété doivent affecter
+toutes les portées de la partition, nous utiliserons alors
+l'instruction @code{\new Score}, comme ici :
+
+@lilypond[quote,verbatim,ragged-right]
+\score {
+ \new Score \with { extraNatural = ##f } <<
+ \new Staff {
+ \relative c'' {
+ gis ges aes ais
+ }
+ }
+ \new Staff {
+ \relative c'' {
+ gis ges aes ais
+ }
+ }
+ >>
+}
+@end lilypond
+
Les propriétés réglées de cette manière peuvent néanmoins être modifiées
de façon dynamique grâce à @code{\set} ; un @code{\unset} les ramènera à
leur valeur par défaut.
@c uncomment when backslash-node-name issue is resolved -pm
@c @ruser{La commande de fixation (set)}.
-Références internes :
+Référence des propriétés internes :
@rinternals{Contexts},
@rinternals{Tunable context properties}.
@code{\consists @var{Nom_du_graveur}}
+@noindent
et se place dans un bloc @code{\with}. Certaines partitions vocales
font apparaître un @rglos{ambitus} au début de la portée, afin
d'indiquer ses notes extrêmes. L'ambitus est généré par
* Soprano et violoncelle::
* Partition pour chœur à quatre voix mixtes::
* Écriture d'une partition à partir de zéro::
+* Économie de saisie grâce aux identificateurs et fonctions::
+* Conducteurs et parties::
@end menu
@node Soprano et violoncelle
@}
@end example
-On n'a pas besoin de deux commandes @code{\version}. Ce dont on a besoin,
-c'est de la section @code{melodie}. De même, on n'a pas besoin de deux sections
-@code{\score} -- si nous les gardions toutes les deux, on obtiendrait deux
-parties séparées ; mais nous voulons un vrai duo, avec les deux
-parties ensemble. Dans la section @code{\score}, on n'a pas besoin
-non plus de deux @code{\layout} ni de deux @code{\midi}.
+On n'a pas besoin de deux commandes @code{\version}. Ce dont on a
+besoin, c'est de la section @code{melodie}. De même, on n'a pas besoin
+de deux sections @code{\score} -- si nous les gardions toutes les deux,
+on obtiendrait deux parties séparées ; mais nous voulons un vrai duo,
+avec les deux parties ensemble. Dans la section @code{\score}, on n'a
+pas besoin non plus de deux @code{\layout} ni de deux @code{\midi}.
Si on se contente de couper et coller les sections @code{melodie}, on se
retrouvera avec deux sections de ce nom ; il nous faut donc les renommer.
et l'endroit où cette dénomination est utilisée, dans la section
@code{\score}.
-Et puis, toujours tant qu'on y est, mettons le violoncelle en clé de fa, comme
-le veut l'usage, et donnons-lui d'autres notes.
+Et puis, toujours tant qu'on y est, mettons le violoncelle en clé de fa,
+comme le veut l'usage, et donnons-lui d'autres notes.
@example
\version @w{"@version{}"}
@end lilypond
+@node Économie de saisie grâce aux identificateurs et fonctions
+@subsection Économie de saisie grâce aux identificateurs et fonctions
+@translationof Saving typing with variables and functions
+
+@cindex variables
+@cindex identificateurs
+
+Jusqu'à maintenant, vous avez vu ce type de code :
+
+@lilypond[quote,verbatim,ragged-right]
+hornNotes = \relative c'' { c4 b dis c }
+\score {
+ {
+ \hornNotes
+ }
+}
+@end lilypond
+
+Vous comprendrez combien cela peut être utile pour écrire de la
+musique minimaliste :
+
+@lilypond[quote,verbatim,ragged-right]
+fragmentA = \relative c'' { a4 a8. b16 }
+fragmentB = \relative c'' { a8. gis16 ees4 }
+violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA }
+\score {
+ {
+ \violin
+ }
+}
+@end lilypond
+
+Néanmoins vous pouvez aussi utiliser ces identificateurs
+-- aussi connus sous le nom de variables, macros, ou commandes
+(définies par l'utilisateur) -- pour des retouches :
+
+@c TODO Avoid padtext - not needed with skylining
+@lilypond[quote,verbatim,ragged-right]
+dolce = \markup{ \italic \bold dolce }
+padText = { \once \override TextScript #'padding = #5.0 }
+fthenp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
+violin = \relative c'' {
+ \repeat volta 2 {
+ c4._\dolce b8 a8 g a b |
+ \padText
+ c4.^"hi there!" d8 e' f g d |
+ c,4.\fthenp b8 c4 c-. |
+ }
+}
+\score {
+ {
+ \violin
+ }
+\layout{ragged-right=##t}
+}
+@end lilypond
+
+Ces identificateurs sont évidemment utiles pour économiser de la
+frappe. Mais ils peuvent l'être même si vous ne les utilisez qu'une
+seule fois : ils réduisent la complexité. Regardons l'exemple
+précédent sans aucun identificateur. C'est beaucoup plus laborieux à
+lire, et particulièrement la dernière ligne.
+
+@example
+violin = \relative c'' @{
+ \repeat volta 2 @{
+ c4._\markup@{ \italic \bold dolce @} b8 a8 g a b |
+ \once \override TextScript #'padding = #5.0
+ c4.^"hi there!" d8 e' f g d |
+ c,4.\markup@{ \dynamic f \italic \small @{ 2nd @}
+ \hspace #0.1 \dynamic p @} b8 c4 c-. |
+ @}
+@}
+@end example
+
+@c TODO Replace the following with a better example -td
+@c Skylining handles this correctly without padText
+
+Jusqu'ici nous avons vu des substitutions statiques : quand LilyPond
+rencontre @code{\padText}, il le remplace par le contenu que nous lui
+avons défini -- c'est-à-dire le contenu à droite de @code{padText=}.
+
+LilyPond gère également des substitutions non-statiques -- vous
+pouvez les voir comme des fonctions.
+
+@lilypond[quote,verbatim,ragged-right]
+padText =
+#(define-music-function (parser location padding) (number?)
+ #{
+ \once \override TextScript #'padding = #$padding
+ #})
+
+\relative c''' {
+ c4^"piu mosso" b a b
+ \padText #1.8
+ c4^"piu mosso" d e f
+ \padText #2.6
+ c4^"piu mosso" fis a g
+}
+@end lilypond
+
+Utiliser des identificateurs est aussi un bon moyen pour vous épargner
+du travail si la syntaxe de LilyPond change un jour -- voir
+@rprogram{Mise à jour d'anciens fichiers}. Si vous avez une seule
+définition, par exemple @code{\dolce}, pour tous vos fichiers (voir
+@ref{Feuilles de style}), et que la syntaxe change, alors vous n'aurez
+qu'à mettre à jour votre seule définition @code{\dolce}, au lieu de
+devoir modifier chaque fichier @code{.ly}.
+
+
+@node Conducteurs et parties
+@subsection Conducteurs et parties
+@translationof Scores and parts
+
+Dans la musique d'orchestre, toutes les notes sont imprimées deux fois.
+D'abord dans les parties séparées destinées aux musiciens, et ensuite
+dans le conducteur destiné au chef. Les variables sont là pour vous
+éviter un double travail. La musique n'est entrée qu'une seule fois, et
+stockée dans une variable, dont le contenu servira à imprimer à la fois
+la partie séparée et la partition d'orchestre.
+
+Il est judicieux de définir les notes dans un fichier séparé. Par
+exemple, supposons que le fichier @code{musique-Cor.ly} contienne la
+partie suivante pour un duo cor/@/basson.
+
+@example
+notesCor = \relative c @{
+ \time 2/4
+ r4 f8 a cis4 f e d
+@}
+@end example
+
+@noindent
+On établira alors une partie séparée en constituant un nouveau fichier :
+
+@example
+\include "musique-Cor.ly"
+\header @{
+ instrument = "Cor en Fa"
+@}
+
+@{
+ \transpose f c' \notesCor
+@}
+@end example
+
+À la ligne
+
+@example
+\include "musique-Cor.ly"
+@end example
+
+@noindent
+sera substitué le contenu du fichier @code{musique-Cor.ly}, et de ce
+fait la variable @code{notesCor} se trouvera définie. La commande
+@w{@code{\transpose f c'}} indique que son argument @code{\notesCor}
+sera transposé à la quinte supérieure : le son réel @code{f} s'écrit
+@code{c'}, ce qui est la caractéristique d'un Cor en fa. La
+transposition est visible comme suit :
+
+@lilypond[quote,ragged-right]
+\transpose f c' \relative c {
+ \time 2/4
+ r4 f8 a cis4 f e d
+}
+@end lilypond
+
+Dans les pièces d'ensemble, il arrive souvent qu'une voix ne joue pas
+pendant plusieurs mesures. Un silence spécial, appelé silence
+multimesures, l'indique alors. On l'obtient par un @code{R} majuscule,
+suivi d'une durée : @code{1}@tie{}pour une pause, @code{2}@tie{}pour une
+demi-pause, etc. Cette durée peut être multipliée pour établir de plus
+longs silences. Par exemple, le silence suivant dure 3@tie{}mesures à 2/4.
+
+@example
+R2*3
+@end example
+
+Dans une partie séparée, les silences multimesure sont compressés.
+Il faut pour cela définir la propriété @code{skipBars} à @qq{vrai} :
+
+@example
+\set Score.skipBars = ##t
+@end example
+
+@noindent
+Cette commande assigne la valeur @qq{vrai} -- @emph{true} en anglais, et
+@code{#t} dans le langage Scheme -- à cette propriété dans le
+contexte @code{Score}. Si l'on ajoute dans la musique ci-dessus le
+silence multimesure et cette option, on obtient le résultat suivant :
+
+@lilypond[quote,ragged-right]
+\transpose f c' \relative c {
+ \time 2/4
+ \set Score.skipBars = ##t
+ R2*3
+ r4 f8 a cis4 f e d
+}
+@end lilypond
+
+Le conducteur rassemble toute la musique. Si l'on suppose que l'autre
+voix de notre duo se trouve dans le fichier @code{musique-Basson.ly} en
+tant que variable @code{notesBasson}, on établira un conducteur avec
+
+@example
+\include "musique-Basson.ly"
+\include "musique-Cor.ly"
+
+<<
+ \new Staff \notesCor
+ \new Staff \notesBasson
+>>
+@end example
+
+@noindent
+ce qui équivaut à
+
+@lilypond[quote,ragged-right]
+\relative c <<
+ \new Staff {
+ \time 2/4 R2*3
+ r4 f8 a cis4 f e d
+ }
+ \new Staff {
+ \clef bass
+ r4 d,8 f | gis4 c | b bes |
+ a8 e f4 | g d | gis f
+ }
+>>
+@end lilypond
+
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 35dc92475b9341fbbbaf194afcc2c6e2561840ac
+ Translation of GIT committish: 5a1312de54bc66dfe10a08670db976354e9ae5c3
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@menu
* Suggestions pour la saisie de fichiers LilyPond::
* Quand ça ne fonctionne pas::
-* Conducteurs et parties::
* De la commande @command{make} et des fichiers @code{Makefile}::
@end menu
* Suggestions générales::
* Gravure de musique existante::
* Projets d'envergure::
-* Économie de saisie grâce aux identificateurs et fonctions::
* Feuilles de style::
@end menu
@end itemize
-@node Économie de saisie grâce aux identificateurs et fonctions
-@subsection Économie de saisie grâce aux identificateurs et fonctions
-@translationof Saving typing with variables and functions
-
-@cindex variables
-@cindex identificateurs
-
-Jusqu'à maintenant, vous avez vu ce type de code :
-
-@lilypond[quote,verbatim,ragged-right]
-hornNotes = \relative c'' { c4 b dis c }
-\score {
- {
- \hornNotes
- }
-}
-@end lilypond
-
-Vous comprendrez combien cela peut être utile pour écrire de la
-musique minimaliste :
-
-@lilypond[quote,verbatim,ragged-right]
-fragmentA = \relative c'' { a4 a8. b16 }
-fragmentB = \relative c'' { a8. gis16 ees4 }
-violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA }
-\score {
- {
- \violin
- }
-}
-@end lilypond
-
-Néanmoins vous pouvez aussi utiliser ces identificateurs
--- aussi connus sous le nom de variables, macros, ou commandes
-(définies par l'utilisateur) -- pour des retouches :
-
-@lilypond[quote,verbatim,ragged-right]
-dolce = \markup{ \italic \bold dolce }
-padText = { \once \override TextScript #'padding = #5.0 }
-fthenp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
-violin = \relative c'' {
- \repeat volta 2 {
- c4._\dolce b8 a8 g a b |
- \padText
- c4.^"hi there!" d8 e' f g d |
- c,4.\fthenp b8 c4 c-. |
- }
-}
-\score {
- {
- \violin
- }
-\layout{ragged-right=##t}
-}
-@end lilypond
-
-Ces identificateurs sont évidemment utiles pour économiser de la
-frappe. Mais ils peuvent l'être même si vous ne les utilisez qu'une
-seule fois : ils réduisent la complexité. Regardons l'exemple
-précédent sans aucun identificateur. C'est beaucoup plus laborieux à
-lire, et particulièrement la dernière ligne.
-
-@example
-violin = \relative c'' @{
- \repeat volta 2 @{
- c4._\markup@{ \italic \bold dolce @} b8 a8 g a b |
- \once \override TextScript #'padding = #5.0
- c4.^"hi there!" d8 e' f g d |
- c,4.\markup@{ \dynamic f \italic \small @{ 2nd @}
- \hspace #0.1 \dynamic p @} b8 c4 c-. |
- @}
-@}
-@end example
-
-@c TODO Replace the following with a better example -td
-@c Skylining handles this correctly without padText
-
-Jusqu'ici nous avons vu des substitutions statiques : quand LilyPond
-rencontre @code{\padText}, il le remplace par le contenu que nous lui
-avons défini -- c'est-à-dire le contenu à droite de @code{padText=}.
-
-LilyPond gère également des substitutions non-statiques -- vous
-pouvez les voir comme des fonctions.
-
-@lilypond[quote,verbatim,ragged-right]
-padText =
-#(define-music-function (parser location padding) (number?)
- #{
- \once \override TextScript #'padding = #$padding
- #})
-
-\relative c''' {
- c4^"piu mosso" b a b
- \padText #1.8
- c4^"piu mosso" d e f
- \padText #2.6
- c4^"piu mosso" fis a g
-}
-@end lilypond
-
-Utiliser des identificateurs est aussi un bon moyen pour vous épargner
-du travail si la syntaxe de LilyPond change un jour -- voir
-@ref{Mise à jour d'anciens fichiers}. Si vous avez une seule
-définition, par exemple @code{\dolce}, pour tous vos fichiers (voir
-@ref{Feuilles de style}), et que la syntaxe change, alors vous n'aurez
-qu'à mettre à jour votre seule définition @code{\dolce}, au lieu de
-devoir modifier chaque fichier @code{.ly}.
-
-
@node Feuilles de style
@subsection Feuilles de style
@translationof Style sheets
@end itemize
-@node Conducteurs et parties
-@section Conducteurs et parties
-@translationof Scores and parts
-
-Dans la musique d'orchestre, toutes les notes sont imprimées deux fois.
-D'abord dans les parties séparées destinées aux musiciens, et ensuite
-dans le conducteur destiné au chef. Les variables sont là pour vous
-éviter un double travail. La musique n'est entrée qu'une seule fois, et
-stockée dans une variable, dont le contenu servira à imprimer à la fois
-la partie séparée et la partition d'orchestre.
-
-Il est judicieux de définir les notes dans un fichier séparé. Par
-exemple, supposons que le fichier @code{musique-Cor.ly} contienne la
-partie suivante pour un duo cor/@/basson.
-
-@example
-notesCor = \relative c @{
- \time 2/4
- r4 f8 a cis4 f e d
-@}
-@end example
-
-@noindent
-On établira alors une partie séparée en constituant un nouveau fichier :
-
-@example
-\include "musique-Cor.ly"
-\header @{
- instrument = "Cor en Fa"
-@}
-
-@{
- \transpose f c' \notesCor
-@}
-@end example
-
-À la ligne
-
-@example
-\include "musique-Cor.ly"
-@end example
-
-@noindent
-sera substitué le contenu du fichier @code{musique-Cor.ly}, et de ce
-fait la variable @code{notesCor} se trouvera définie. La commande
-@w{@code{\transpose f c'}} indique que son argument @code{\notesCor}
-sera transposé à la quinte supérieure : le son réel @code{f} s'écrit
-@code{c'}, ce qui est la caractéristique d'un Cor en fa. La
-transposition est visible comme suit :
-
-@lilypond[quote,ragged-right]
-\transpose f c' \relative c {
- \time 2/4
- r4 f8 a cis4 f e d
-}
-@end lilypond
-
-Dans les pièces d'ensemble, il arrive souvent qu'une voix ne joue pas
-pendant plusieurs mesures. Un silence spécial, appelé silence
-multimesures, l'indique alors. On l'obtient par un @code{R} majuscule,
-suivi d'une durée : @code{1}@tie{}pour une pause, @code{2}@tie{}pour une
-demi-pause, etc. Cette durée peut être multipliée pour établir de plus
-longs silences. Par exemple, le silence suivant dure 3@tie{}mesures à 2/4.
-
-@example
-R2*3
-@end example
-
-Dans une partie séparée, les silences multimesure sont compressés.
-Il faut pour cela définir la propriété @code{skipBars} à @qq{vrai} :
-
-@example
-\set Score.skipBars = ##t
-@end example
-
-@noindent
-Cette commande assigne la valeur @qq{vrai} -- @emph{true} en anglais, et
-@code{#t} dans le langage Scheme -- à cette propriété dans le
-contexte @code{Score}. Si l'on ajoute dans la musique ci-dessus le
-silence multimesure et cette option, on obtient le résultat suivant :
-
-@lilypond[quote,ragged-right]
-\transpose f c' \relative c {
- \time 2/4
- \set Score.skipBars = ##t
- R2*3
- r4 f8 a cis4 f e d
-}
-@end lilypond
-
-Le conducteur rassemble toute la musique. Si l'on suppose que l'autre
-voix de notre duo se trouve dans le fichier @code{musique-Basson.ly} en
-tant que variable @code{notesBasson}, on établira un conducteur avec
-
-@example
-\include "musique-Basson.ly"
-\include "musique-Cor.ly"
-
-<<
- \new Staff \notesCor
- \new Staff \notesBasson
->>
-@end example
-
-@noindent
-ce qui équivaut à
-
-@lilypond[quote,ragged-right]
-\relative c <<
- \new Staff {
- \time 2/4 R2*3
- r4 f8 a cis4 f e d
- }
- \new Staff {
- \clef bass
- r4 d,8 f | gis4 c | b bes |
- a8 e f4 | g d | gis f
- }
->>
-@end lilypond
-
-Des informations plus détaillées sur la mise en place de conducteurs
-et de parties séparées se trouvent dans le manuel de notation : voir
-@ruser{Écriture de parties séparées}.
-
-Les variables (@qq{propriétés}) réglables sont abordées en détail dans
-@ruser{La commande de fixation (set)}.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 15ef26d4cde4d2d170e88a13867169d4e75026ae
+ Translation of GIT committish: 5a1312de54bc66dfe10a08670db976354e9ae5c3
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
déplacer la voix courante. Pour des raisons pratiques, on nomme la portée
supérieure @code{"haut"} et la portée inférieure @code{"bas"}, donc
@var{nomDeLaPortee} désigne habituellement @code{"haut"}, @code{"bas"},
-@code{"MD"} ou @code{"MG"}. Dans tous les cas, le contexte de
-portée ainsi utilisé doit exister au préalable.
+@code{"MD"} ou @code{"MG"}.
+
+Dans tous les cas, le contexte de portée ainsi utilisé doit exister au
+préalable. Le cas échéant, vous devrez qq{garder actives} certaines
+portées -- voir @ref{Conservation d'un contexte} à ce propos.
Pour ligaturer automatiquement des notes entre deux portées, procédez
ainsi :
Manuel de notation :
@ref{Hampes},
-@ref{Barres de ligature automatiques}.
+@ref{Barres de ligature automatiques},
+@ref{Conservation d'un contexte}.
Exemples de code :
@rlsr{Keyboards}.
@ref{Glissando}.
@item Le @notation{bisbigliando}, qui s'écrit comme un trémolo,
-@ref{Répétitions en trémolo}
+@ref{Répétitions en trémolo}.
@item Les harmoniques naturelles sont présentées dans @ref{Harmoniques}.
@seealso
Manuel de notation :
-@ref{Répétitions en trémolo}
-@ref{Glissando}
-@ref{Arpèges}
-@ref{Harmoniques}
+@ref{Répétitions en trémolo},
+@ref{Glissando},
+@ref{Arpèges},
+@ref{Harmoniques}.
@node Pédales de harpe
@unnumberedsubsubsec Pédales de harpe
@lilypond[quote,verbatim,relative=2]
\textLengthOn
-cis1_\markup \concat \vcenter { [D \flat C \sharp B|E \sharp F \sharp G A \flat] }
-c!1_\markup \concat \vcenter {[ C \natural ]}
+cis1_\markup \concat \vcenter {
+ [D \flat C \sharp B|E \sharp F \sharp G A \flat] }
+c!1_\markup \concat \vcenter {
+ [ C \natural ]}
@end lilypond
ou bien sous forme de diagrammes :
@seealso
Manuel de notation :
-@ref{Commentaires textuels}
-@ref{Instrument Specific Markup}
+@ref{Commentaires textuels},
+@ref{Instrument Specific Markup}.
@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
+ Translation of GIT committish: 5a1312de54bc66dfe10a08670db976354e9ae5c3
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@strong{@i{Harmoniques naturels}}
@cindex harmoniques naturels
-@cindex naturels, harmoniques
+@cindex naturels, harmoniques
+@cindex tête de note en losange
+@cindex losange, tête de note
+
+@funindex \harmonicsOn
+@funindex \harmonicsOff
Les harmoniques naturels sont indiqués de différentes manières : une
tête de note en forme de losange signifie généralement que vous devez
effleurer la corde à l'endroit où vous l'auriez pincée si la note avait
été normale.
-@warning{Les harmoniques @strong{doivent} être indiqués dans une
-construction de type accord même s'il n'y a qu'une seule note.}
-
-@c TODO If the default for harmonicDots is changed, change this
-
-La propriété @code{harmonicDots}, lorsqu'elle est activée, permet
-d'ajouter un point point aux notes pointées affublées d'un
-@code{\harmonic}.
-
@lilypond[verbatim,quote,relative=2]
-<d\harmonic>4 <e\harmonic>2.
-\set harmonicDots = ##t
-<d\harmonic>4 <e\harmonic>2.
+d4 e4.
+\harmonicsOn
+d8 e e
+d4 e4.
+\harmonicsOff
+d8 e e
@end lilypond
Une autre façon de procéder consiste à faire surmonter la note normale
l'une, normale, indique la note à pincer, et l'autre, en forme de
losange, indique l'endroit où la corde doit être effleurée.
-@lilypond[verbatim,quote,relative=1]
-<e a\harmonic>2 <c g'\harmonic>
+
+@c TODO If the default for harmonicDots is changed, change this
+La propriété @code{harmonicDots}, lorsqu'elle est activée, permet
+d'ajouter un point aux notes pointées affublées d'un @code{\harmonic}.
+
+@lilypond[verbatim,quote,relative=2]
+<e a\harmonic>2. <c g'\harmonic>4
+\set harmonicDots = ##t
+<e a\harmonic>2. <c g'\harmonic>4
@end lilypond
+@warning{La commande @code{@bs{}harmonic} @strong{doivent} être placée
+dans une construction de type accord même s'il n'y a qu'une seule note.
+On utiliserait plutôt la commande @code{@bs{}harmonicsOn} en pareil
+cas.}
+
+@seealso
+Glossaire musicologique :
+@rglos{harmonics}.
+
+Manuel de notation :
+@ref{Têtes de note spécifiques},
+@ref{Références en matière de cordes non frettées}.
+
+
@node Snap (Bartók) pizzicato
@unnumberedsubsubsec Snap (Bartók) pizzicato
@translationof Snap (Bartók) pizzicato
# -) the parent is a numbered element at top-level toplevel (i.e. show numbered
# and unnumbered 2nd-level children of numbered nodes)
# -) the child element is a numbered node below level maxlevel
-sub generate_ly_toc_entries($$$$)
+sub generate_ly_toc_entries($$$$$)
{
my $element = shift;
my $element_path = shift;
$maxlevel = 1;
}
my $child_count = shift;
+ my $current_element = shift;
# Skip undefined sections, plus all sections generated by index splitting
return() if (not defined($element) or exists($element->{'index_page'}));
my @result = ();
my $below_maxlevel = $c->{'toc_level'} le $maxlevel;
if ($force_children or ($is_numbered_child and $below_maxlevel)) {
my @child_res =
- generate_ly_toc_entries($c, $element_path, $maxlevel, $sub_child_count);
+ generate_ly_toc_entries($c, $element_path, $maxlevel, $sub_child_count, $current_element);
push (@child_result, @child_res);
$sub_child_count += 1;
}
if (@child_result) {
push (@result, "\n$ind<ul$NO_BULLET_LIST_ATTRIBUTE>\n");
if ($web_manual) {
- push (@result, "$ind<li class=\"colorDefault toc_current\">" .
+ push (@result, "$ind<li class=\"colorDefault" .
+ ($element->{'text'} eq $current_element->{'text'} ?
+ ' toc_current">' : '">') .
&$anchor ($element->{'tocid'},
"$element->{'file'}#$element->{'target'}",
$element->{'text'}) . "</li>\n");
}
my $children = $current_element->{'section_childs'};
foreach ( @$children ) {
- push (@toc_entries, generate_ly_toc_entries($_, \%parentelements, $page_toc_depth, 0));
+ push (@toc_entries, generate_ly_toc_entries($_, \%parentelements, $page_toc_depth, 0, $element));
}
# search box
local $/=undef;
open FILE, "$ENV{TOP_SRC_DIR}/Documentation/$lang/$name.ihtml" or
open FILE, "$ENV{TOP_SRC_DIR}/Documentation/$name.ihtml" or
die "no such file: $name.ihtml: $!";
- my $search_string = <FILE>;
+ my $search_string = decode ('UTF-8', <FILE>);
$search_string = "<li>\n" . $search_string . "</li>\n";
push (@toc_entries, $search_string);
close FILE;
-%% Do not edit this file; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
-%% This file is in the public domain.
+% Do not edit this file; it is automatically
+% generated from Documentation/snippets/new
+% This file is in the public domain.
+%% Note: this file works from version 2.13.1
\version "2.13.10"
\header {
lsrtags = "simultaneous-notes, chords"
-
texidoc = "
Here is a way to display a chord where the same note is played twice
with different accidentals.
-
"
doctitle = "Displaying complex chords"
} % begin verbatim
+
fixA = {
\once \override Stem #'length = #9
- \once \override Accidental #'extra-offset = #'(0.3 . 0)
}
fixB = {
- \once \override NoteHead #'extra-offset = #'(1.7 . 0)
+ \once \override NoteHead #'X-offset = #1.7
\once \override Stem #'rotation = #'(45 0 0)
\once \override Stem #'extra-offset = #'(-0.2 . -0.2)
\once \override Stem #'flag-style = #'no-flag
- \once \override Accidental #'extra-offset = #'(3.1 . 0)
+ \once \override Accidental #'extra-offset = #'(4 . 0)
}
\relative c' {
<< { \fixA <b d!>8 } \\ { \voiceThree \fixB dis } >> s
}
-
--- /dev/null
+\version "2.13.1"
+
+\header {
+ lsrtags = "simultaneous-notes, chords"
+ texidoc = "
+Here is a way to display a chord where the same note is played twice
+with different accidentals.
+"
+ doctitle = "Displaying complex chords"
+}
+
+fixA = {
+ \once \override Stem #'length = #9
+}
+fixB = {
+ \once \override NoteHead #'X-offset = #1.7
+ \once \override Stem #'rotation = #'(45 0 0)
+ \once \override Stem #'extra-offset = #'(-0.2 . -0.2)
+ \once \override Stem #'flag-style = #'no-flag
+ \once \override Accidental #'extra-offset = #'(4 . 0)
+}
+
+\relative c' {
+ << { \fixA <b d!>8 } \\ { \voiceThree \fixB dis } >> s
+}
\version "2.13.10"
\header {
-%% Translation of GIT committish:
+%% Translation of GIT committish: b7ec64504da87595509ae6e88ae546d6a0ce633d
texidocfr = "
Pour obtenir la partition d'un chanson, il suffit d'assembler
des noms d'accords, une mélodie et des paroles :
application/ Source files for Application Usage manual
essay/ Academic material and .bib files with references
to books and articles
- contributor/ Source files for the Contribotor's Guide
+ contributor/ Source files for the Contributor's Guide
+ css/ CSS files for documentation in HTML
+ extending/ Source files for the Extending manual
+ included/ Snippets included in manuals
learning/ Source files for the Learning Manual
+ logo/ The logo
misc/ Old announcements, ChangeLogs and NEWS
notation/ Source files for Notation Reference manual
- pictures/ The logo
+ pictures/ Pictures and graphics used in the documentation
snippets/ Snippets from the LilyPond Snippet Repository
(auto-generated, do not modify!)
new/ Snippets which are too new for LSR
topdocs/ Sources for the toplevel READMEs
(README.txt, INSTALL.txt etc.)
- user/ User manuals
- po/ Translated manual node names
+ po/ Translations for build and maintenance scripts
+ web/ lilypond.org website (a.k.a. General Information for
+ offline documentation)
+ ly-examples/ LilyPond examples for the website
fr/ es/ de/ Docs translated to French, Spanish, German, resp.
- ja/ Docs translated to Japanese
+ ja/ hu/ it/ Docs translated to Japanese, Hungarian, Italian, resp.
+ Every subdirectory of Documentation/ that contains localizable
+ source files may be present in the directory of a translation;
+ in addition, each translation directory may contain a ubsdirectory
+ texidocs/ that contains the translation of snippets texidocs.
elisp/ Emacs LilyPond mode and syntax coloring
flower/ A simple C++ library
input/ Music input examples
- manual/ Examples from the manual
- mutopia/ Real music, more at www.mutopiaproject.org
regression/ Testing of features, one test per file
- tutorial/ Examples from the tutorial
lily/ C++ sources for the LilyPond binary
ly/ System music include files
- make/ Specific make subroutines and packaging for
- Red Hat-like distributions (.spec files)
+ make/ Specific make subroutines
mf/ MetaFont sources for the Emmentaler and Aybabtu fonts
po/ Translations for binaries and end-user scripts
ps/ PostScript library files
}
-\version "2.13.9"
+\version "2.13.11"
\layout {
\context {
(display (list "process-acknowledged"
(ly:context-current-moment
(ly:translator-context trans)) "\n"))))
- (cons 'start-translation-timestep
+ (cons 'stop-translation-timestep
(lambda (trans)
(display (list "stop-trans"
(ly:context-current-moment
}}
-\relative {
+\relative c' {
c8[ r c]
-
}
}
Stencil
-Pango_font::word_stencil (string str, bool feta) const
+Pango_font::word_stencil (string str, bool music_string) const
{
- return text_stencil (str, feta, true);
+ return text_stencil (str, music_string, true);
}
Stencil
-Pango_font::text_stencil (string str, bool feta) const
+Pango_font::text_stencil (string str, bool music_string) const
{
- return text_stencil (str, feta, false);
+ return text_stencil (str, music_string, false);
}
+extern bool music_strings_to_paths;
+
Stencil
Pango_font::text_stencil (string str,
- bool feta,
+ bool music_string,
bool tight) const
{
/*
SCM utf8_string = ly_module_lookup (mod, ly_symbol2scm ("utf-8-string"));
/*
has_utf8_string should only be true when utf8_string is a
- variable that is bound to a *named* procedure.
+ variable that is bound to a *named* procedure, i.e. not a
+ lambda expression.
*/
if (utf8_string != SCM_BOOL_F
&& scm_procedure_name (SCM_VARIABLE_REF (utf8_string)) != SCM_BOOL_F)
has_utf8_string = true;
}
- /*
- The SVG backend only uses utf-8-string for the non-music
- fonts, hence the check here. --pmccarty
+ bool to_paths = music_strings_to_paths;
- TODO: use a program option (-dmusic-strings-to-paths) here
- instead that is enabled only when -dbackend=svg.
+ /*
+ Backends with the utf-8-string expression use it when
+ 1) the -dmusic-strings-to-paths option is set
+ and `str' is not a music string, or
+ 2) the -dmusic-strings-to-paths option is not set.
*/
- if ((name == "svg" && !feta) || (name != "svg" && has_utf8_string))
+ if (has_utf8_string && ((to_paths && !music_string) || !to_paths))
{
// For Pango based backends, we take a shortcut.
SCM exp = scm_list_3 (ly_symbol2scm ("utf-8-string"),
bool debug_property_callbacks;
bool debug_page_breaking_scoring;
+bool music_strings_to_paths;
bool relative_includes;
/*
}
else if (var == ly_symbol2scm ("warning-as-error"))
val = scm_from_bool (to_boolean (val));
+ else if (var == ly_symbol2scm ("music-strings-to-paths"))
+ {
+ music_strings_to_paths = to_boolean (val);
+ val = scm_from_bool (to_boolean (val));
+ }
scm_hashq_set_x (option_hash, var, val);
}
replace_whitespace (&str);
/*
- We want to use "glyph-string" in the SVG backend for all
- music fonts (Emmentaler and Aybabtu) that pass through the
- text interface. Here the font encoding is checked to see if
- it matches one of the music font encodings. --pmccarty
+ We want to filter strings with a music font that pass through
+ the text interface. Here the font encoding is checked to see
+ if it matches one of the music font encodings. --pmccarty
*/
SCM encoding = ly_chain_assoc_get (ly_symbol2scm ("font-encoding"),
props,
"midi")
"Set the default file extension for MIDI output
file to given string.")
+ (music-strings-to-paths #f
+"Convert text strings to paths when glyphs belong
+to a music font.")
(old-relative #f
"Make \\relative mode for simultaneous music work
similar to chord syntax.")
(define-public parser #f)
+(define music-string-to-path-backends
+ '(svg))
+
+(if (memq (ly:get-option 'backend) music-string-to-path-backends)
+ (ly:set-option 'music-strings-to-paths #t))
;; gettext wrapper for guile < 1.7.2
(if (defined? 'gettext)
default='')
p.add_option ('--latex-program',
- help=_ ("run executable PROG instead of latex"),
+ help=_ ("run executable PROG instead of latex, or in\n\
+case --pdf option is set instead of pdflatex"),
metavar=_ ("PROG"),
action='store', dest='latex_program',
default='latex')
global_options.process_cmd += ' --formats=eps '
if global_options.create_pdf:
global_options.process_cmd += "--pdf -dinclude-eps-fonts -dgs-load-fonts "
+ if global_options.latex_program == 'latex':
+ global_options.latex_program = 'pdflatex'
if global_options.verbose:
global_options.process_cmd += " --verbose "