[ << Editorial annotations ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Top ] | [ > ] |
Text
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < Text ] | [Plus haut: Text ] | [ > ] |
Ajout de markups à une tablature
Par défaut, les markups n’apparaissent pas dans une tablature.
Il suffit, pour les voir apparaître, d’une simple commande
\revert TabStaff.TextScript.stencil
.
%% http://lsr.di.unimi.it/LSR/Item?id=919 % by P.P.Schneider on June 2014 high = { r4 r8 <g c'> q r8 r4 } low = { c4 r4 c8 r8 g,8 b, } pulse = { s8^"1" s^"&" s^"2" s^"&" s^"3" s^"&" s^"4" s^"&" } \score { \new TabStaff { \repeat unfold 2 << \high \\ \low \\ \pulse >> } \layout { \context { \TabStaff \clef moderntab \revert TextScript.stencil \override TextScript.font-series = #'bold \override TextScript.font-size = #-2 \override TextScript.color = #red } \context { \Score proportionalNotationDuration = #(ly:make-moment 1/8) } } }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Ajout de la date du jour à une partition
Avec un peu de code Scheme, voici comment ajouter facilement la date du jour à votre partition.
% first, define a variable to hold the formatted date: date = #(strftime "%d-%m-%Y" (localtime (current-time))) % use it in the title block: \header { title = "Including the date!" subtitle = \date } \score { \relative c'' { c4 c c c } } % and use it in a \markup block: \markup { \date }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Ajustement de l’espacement vertical des paroles
Cet extrait illustre la manière de réduire l’espace entre la ligne de paroles et la portée.
% Default layout: << \new Staff \new Voice = melody \relative c' { c4 d e f g4 f e d c1 } \new Lyrics \lyricsto melody { aa aa aa aa aa aa aa aa aa } \new Staff { \new Voice = melody \relative c' { c4 d e f g4 f e d c1 } } % Reducing the minimum space below the staff and above the lyrics: \new Lyrics \with { \override VerticalAxisGroup.nonstaff-relatedstaff-spacing = #'((basic-distance . 1)) } \lyricsto melody { aa aa aa aa aa aa aa aa aa } >>
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Alignement des noms d’instrument
L’alignement horizontal des noms d’instrument se gère à l’aide de la
propriété Staff.InstrumentName.self-alignment-X
. Les variables
indent
et short-indent
, attachées au bloc \layout
,
déterminent l’espace alloué à l’alignement des noms d’instrument,
respectivement dans leurs formes développée et abrégée.
\paper { left-margin = 3\cm } \score { \new StaffGroup << \new Staff \with { \override InstrumentName.self-alignment-X = #LEFT instrumentName = \markup \left-column { "Left aligned" "instrument name" } shortInstrumentName = "Left" } { c''1 \break c''1 } \new Staff \with { \override InstrumentName.self-alignment-X = #CENTER instrumentName = \markup \center-column { Centered "instrument name" } shortInstrumentName = "Centered" } { g'1 g'1} \new Staff \with { \override InstrumentName.self-alignment-X = #RIGHT instrumentName = \markup \right-column { "Right aligned" "instrument name" } shortInstrumentName = "Right" } { e'1 e'1 } >> \layout { ragged-right = ##t indent = 4\cm short-indent = 2\cm } }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Alignement des objets créés par la commande \mark
Par défaut, la commande \mark
centre les objets sur la barre de
mesure. Ce comportement peut se modifier pour un alignement par la
gauche ou par la droite.
\relative c' { c1 \mark "(Center)" c1 \once \override Score.RehearsalMark.self-alignment-X = #LEFT \mark "(Left)" c4 c c c c4 c c c \once \override Score.RehearsalMark.self-alignment-X = #RIGHT \mark "(Right)" c1 }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Alignement de la première syllabe d’un mélisme
Par défaut, une syllabe qui entame un mélisme est alignée sur la note
par la gauche. Cet alignement peut se modifier à l’aide de la propriété
lyricMelismaAlignment
.
\score { << \new Staff { \relative c'' \new Voice = "vocal" { c d~^\markup default d e c d~^\markup "right aligned" d e c d~^\markup "center aligned" d e c d~^\markup "reset to default" d e } } \new Lyrics \lyricsto "vocal" { word word word \set lyricMelismaAlignment = #RIGHT word word word \set lyricMelismaAlignment = #CENTER word word word \unset lyricMelismaAlignment word word word } >> }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Blanchiment de lignes de portée avec la commande \whiteout
L’instruction \whiteout
intercale un rectangle blanc
contenant un markup. Dans la mesure où les lignes de la portée
sont à un niveau inférieur à la plupart des autres objets graphiques, ce
cache ne devrait pas masquer d’autres éléments.
\layout { ragged-right = ##f } \relative c' { \override TextScript.extra-offset = #'(2 . 4) c2-\markup { \whiteout \pad-markup #0.5 "middle C" } c }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Texte centré sous un soufflet
La fonction comprise dans l’extrait suivant permet d’ajouter du texte – comme « molto » ou « poco » – en dessous d’un soufflet de (de)crescendo. Cet exemple présente aussi comment, à l’aide de code Scheme, influencer la manière dont un objet est normalement imprimé.
hairpinWithCenteredText = #(define-music-function (text) (markup?) #{ \once \override Voice.Hairpin.after-line-breaking = #(lambda (grob) (let* ((stencil (ly:hairpin::print grob)) (par-y (ly:grob-parent grob Y)) (dir (ly:grob-property par-y 'direction)) (new-stencil (ly:stencil-aligned-to (ly:stencil-combine-at-edge (ly:stencil-aligned-to stencil X CENTER) Y dir (ly:stencil-aligned-to (grob-interpret-markup grob text) X CENTER)) X LEFT)) (staff-space (ly:output-def-lookup (ly:grob-layout grob) 'staff-space)) (staff-line-thickness (ly:output-def-lookup (ly:grob-layout grob) 'line-thickness)) (par-x (ly:grob-parent grob X)) (dyn-text (grob::has-interface par-x 'dynamic-text-interface)) (dyn-text-stencil-x-length (if dyn-text (interval-length (ly:stencil-extent (ly:grob-property par-x 'stencil) X)) 0)) (x-shift (if dyn-text (- (+ staff-space dyn-text-stencil-x-length) (* 0.5 staff-line-thickness)) 0))) (ly:grob-set-property! grob 'Y-offset 0) (ly:grob-set-property! grob 'stencil (ly:stencil-translate-axis new-stencil x-shift X)))) #}) hairpinMolto = \hairpinWithCenteredText \markup { \italic molto } hairpinMore = \hairpinWithCenteredText \markup { \larger moltissimo } \layout { ragged-right = ##f } \relative c' { \hairpinMolto c2\< c\f \hairpinMore c2\ppppp\< c\f \break \hairpinMolto c2^\< c\f \hairpinMore c2\ppppp\< c\f }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Modification du texte des marques d’octaviation
En interne, la fonction \ottava
détermine les propriétés
ottavation
(par ex. en "8va"
ou "8vb"
) et
middleCPosition
. Vous pouvez modifier le texte d’une marque
d’octaviation en définissant ottavation
après avoir fait appel à
ottava
.
Un texte bref est particulièrement utile lorsque l’octaviation est courte.
{ c'2 \ottava #1 \set Staff.ottavation = #"8" c''2 \ottava #0 c'1 \ottava #1 \set Staff.ottavation = #"Text" c''1 }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Changement des fontes textuelles par défaut
Les familles de fontes par défaut pour le texte peuvent être changées à
l’aide de la fonction make-pango-font-tree
.
\paper { % change for other default global staff size. myStaffSize = #20 %{ run lilypond -dshow-available-fonts to show all fonts available in the process log. %} #(define fonts (make-pango-font-tree "Times New Roman" "Nimbus Sans,Nimbus Sans L" "Luxi Mono" ;; "Helvetica" ;; "Courier" (/ myStaffSize 20))) } \relative c'' { c4^\markup { roman: foo \bold bla \italic bar \italic \bold baz } c'4_\markup { \override #'(font-family . sans) { sans: foo \bold bla \italic bar \italic \bold baz } } c'2^\markup { \override #'(font-family . typewriter) { mono: foo \bold bla \italic bar \italic \bold baz } } }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Combinaison de nuance et de texte
Certaines indications de nuance peuvent requérir un complément textuel,
comme « più forte » ou « piano subito ». Elles se réalisent aisément
à l’aide d’un bloc \markup
.
piuF = \markup { \italic più \dynamic f } \layout { ragged-right = ##f } \relative c'' { c2\f c-\piuF }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Combinaison de deux parties sur une même portée
L’outil de combinaison de parties (la commande \partCombine
)
permet d’avoir deux parties différentes sur une même portée. LilyPond
ajoute automatiquement des indications textuelles, telles que « solo »
ou « a2 ». Si votre intention n’est que de fusionner les parties, sans
ajouter de texte, assignez faux à la propriété
printPartCombineTexts
. Dans le cas de partitions vocales, et
plus particulièrement d’hymnes, ces « solo/a2 » ne sont d’aucune
utilité, aussi vaut-il mieux les désactiver. Dans le cas où il y aurait
alternance entre solo et tutti, il vaut mieux faire appel
à de la musique polyphonique standard.
Voici trois moyens d’imprimer deux parties sur une même portée : en
polyphonie normale, avec \partCombine
sans indication
supplémentaire, et avec \partCombine
commentée.
%% Combining pedal notes with clef changes musicUp = \relative c'' { \time 4/4 a4 c4.( g8) a4 | g4 e' g,( a8 b) | c b a2. } musicDown = \relative c'' { g4 e4.( d8) c4 | r2 g'4( f8 e) | d2 \stemDown a } \score { << \new Staff \with { instrumentName = "Standard polyphony" } << \musicUp \\ \musicDown >> \new Staff \with { instrumentName = "PartCombine without text" printPartCombineTexts = ##f } \partCombine \musicUp \musicDown \new Staff \with { instrumentName = "PartCombine with text" } \partCombine \musicUp \musicDown >> \layout { indent = 6.0\cm \context { \Score \override SystemStartBar.collapse-height = #30 } } }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Indications de nuance vraiment entre parenthèses
Bien que le moyen le plus simple pour ajouter des parenthèses à une
indication de nuance consiste à utiliser un bloc \markup
, cette
pratique a un inconvénient : les objets ainsi créés seront considérés
comme des annotations textuelles, non comme des nuances.
Il est néanmoins possible de créer des objets particuliers en partant de
code Scheme – comme expliqué dans le manuel de notation – avec la
fonction make-dynamic-script
. Les markups ainsi créés
seront alors considérés comme étant des indications de nuance, et de ce
fait pourront se voir appliquer les effets des commandes
\dynamicUp
et \dynamicDown
.
paren = #(define-event-function (dyn) (ly:event?) (make-dynamic-script #{ \markup \concat { \normal-text \italic \fontsize #2 ( \pad-x #0.2 #(ly:music-property dyn 'text) \normal-text \italic \fontsize #2 ) } #})) \relative c'' { c4\paren\f c c \dynamicUp c\paren\p }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Création de repères simultanés
Les indications de repère, à la différence des scripts textuels, ne
peuvent s’empiler en un même endroit de la partition : il n’est possible
de créer qu’un seul objet RehearsalMark
à la fois. Le recours à
une mesure invisible et à une barre de mesure permet cependant d’ajouter
une autre indication de repère, donnant ainsi l’impression d’un double
repère sur la même colonne.
Cette méthode permet aussi de positionner un repère en fin de ligne et un autre au début de la ligne suivante.
{ \key a \major \set Score.markFormatter = #format-mark-box-letters \once \override Score.RehearsalMark.outside-staff-priority = #5000 \once \override Score.RehearsalMark.self-alignment-X = #LEFT \once \override Score.RehearsalMark.break-align-symbols = #'(key-signature) \mark \markup { \bold { Senza denti } } % the hidden measure and bar line % \cadenzaOn turns off automatic calculation of bar numbers \cadenzaOn \once \override Score.TimeSignature.stencil = ##f \time 1/16 s16 \bar "" \cadenzaOff \time 4/4 \once \override Score.RehearsalMark.self-alignment-X = #LEFT \mark \markup { \box \bold Intro } d'1 \mark \default d'1 }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Création d’extensions de texte
Les commandes \startTextSpan
et \stopTextSpan
permettent
d’ajouter une ligne de prolongation aux indications textuelles, à
l’instar des indications de pédale ou d’octaviation. Jouer sur les
propriétés de l’objet TextSpanner
permet d’en modifier le rendu.
\paper { ragged-right = ##f } \relative c'' { \override TextSpanner.bound-details.left.text = #"bla" \override TextSpanner.bound-details.right.text = #"blu" a4 \startTextSpan b4 c a4 \stopTextSpan \override TextSpanner.style = #'line \once \override TextSpanner.bound-details.left.stencil-align-dir-y = #CENTER a4 \startTextSpan b4 c a4 \stopTextSpan \override TextSpanner.style = #'dashed-line \override TextSpanner.bound-details.left.text = \markup { \draw-line #'(0 . 1) } \override TextSpanner.bound-details.right.text = \markup { \draw-line #'(0 . -2) } \once \override TextSpanner.bound-details.right.padding = #-2 a4 \startTextSpan b4 c a4 \stopTextSpan \set Staff.middleCPosition = #-13 \override TextSpanner.dash-period = #10 \override TextSpanner.dash-fraction = #0.5 \override TextSpanner.thickness = #10 a4 \startTextSpan b4 c a4 \stopTextSpan }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Champs d’entête
Voici la liste de tous les champs d’entête :
\header { copyright = "copyright" title = "title" subtitle = "subtitle" composer = "composer" arranger = "arranger" instrument = "instrument" metre = "metre" opus = "opus" piece = "piece" poet = "poet" texidoc = "All header fields with special meanings." copyright = "public domain" enteredby = "jcn" source = "urtext" } \layout { ragged-right = ##f } \score { \relative c'' { c1 | c | c | c } } \score { \relative c'' { c1 | c | c | c } \header { title = "localtitle" subtitle = "localsubtitle" composer = "localcomposer" arranger = "localarranger" instrument = "localinstrument" metre = "localmetre" opus = "localopus" piece = "localpiece" poet = "localpoet" copyright = "localcopyright" } }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Intégration de PostScript dans un markup
Du code PostScript peut directement être intégré dans un bloc
\markup
.
% PostScript is a registered trademark of Adobe Systems Inc. \relative c'' { a4-\markup { \postscript "3 4 moveto 5 3 rlineto stroke" } -\markup { \postscript "[ 0 1 ] 0 setdash 3 5 moveto 5 -3 rlineto stroke " } b4-\markup { \postscript "3 4 moveto 0 0 1 2 8 4 20 3.5 rcurveto stroke" } s2 a'1 }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Mise en forme individuelle de syllabes
Le mode markup permet d’individualiser la mise en forme de certaines syllabes.
mel = \relative c'' { c4 c c c } lyr = \lyricmode { Lyrics \markup { \italic can } \markup { \with-color #red contain } \markup { \fontsize #8 \bold Markup! } } << \new Voice = melody \mel \new Lyrics \lyricsto melody \lyr >>
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Séparation de syllables par une liaison
Des mots monosyllabiques peuvent s’attacher par une liaison à l’aide d’un tilde.
\lyrics { wa~o~a }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Alignement des syllabes
L’alignement horizontal des paroles peut se gérer à l’aide de la
propriété self-alignment-X
de l’objet LyricText
.
Les valeurs -1
ou LEFT
produiront un alignement par la
gauche, les valeurs 0
ou CENTER
un alignement centré, et
les valeurs 1
ou RIGHT
un alignement par la droite.
\layout { ragged-right = ##f } \relative c'' { c1 c1 c1 } \addlyrics { \once \override LyricText.self-alignment-X = #LEFT "This is left-aligned" \once \override LyricText.self-alignment-X = #CENTER "This is centered" \once \override LyricText.self-alignment-X = #1 "This is right-aligned" }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Liste de markups
Un texte susceptible de se répartir sur plusieurs page se saisit avec la
commande \markuplist
.
%% updated/modified by P.P.Schneider on Feb. 2014 #(set-default-paper-size "a6") #(define-markup-list-command (paragraph layout props args) (markup-list?) (interpret-markup-list layout props (make-justified-lines-markup-list (cons (make-hspace-markup 2) args)))) % Candide, Voltaire \markuplist { \override-lines #'(baseline-skip . 2.5) { \paragraph { Il y avait en Westphalie, dans le château de M. le baron de Thunder-ten-tronckh, un jeune garçon à qui la nature avait donné les mœurs les plus douces. Sa physionomie annonçait son âme. Il avait le jugement assez droit, avec l'esprit le plus \concat { simple \hspace #.3 ; } c'est, je crois, pour cette raison qu'on le nommait Candide. Les anciens domestiques de la maison soupçonnaient qu'il était fils de la sœur de monsieur le baron et d'un bon et honnête gentilhomme du voisinage, que cette demoiselle ne voulut jamais épouser parce qu'il n'avait pu prouver que soixante et onze quartiers, et que le reste de son arbre généalogique avait été perdu par l'injure du temps. } \vspace #.3 \paragraph { Monsieur le baron était un des plus puissants seigneurs de la Westphalie, car son château avait une porte et des fenêtres. Sa grande salle même était ornée d'une tapisserie. Tous les chiens de ses basses-cours composaient une meute dans le \concat { besoin \hspace #.3 ; } ses palefreniers étaient ses \concat { piqueurs \hspace #.3 ; } le vicaire du village était son grand-aumônier. Ils l'appelaient tous monseigneur, et ils riaient quand il faisait des contes. } } }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Ajout de texte à un silence multimesure
Lorsque du texte est attaché à un silence multimesure, il sera centré dans la mesure, au-dessus ou en dessous de la portée. Afin d’étirer la mesure dans le cas où ce texte est relativement long, il suffit d’insérer un accord vide auquel on attache le texte en question, avant le silence multimesure.
Le texte attaché à un silence invisible sera aligné sur la gauche de là où serait positionnée la note dans la mesure. Cependant, si la taille de la mesure est déterminée par la longueur du texte, il apparaîtra comme centré.
\relative c' { \compressMMRests { \textLengthOn <>^\markup { [MAJOR GENERAL] } R1*19 <>_\markup { \italic { Cue: ... it is yours } } <>^\markup { A } R1*30^\markup { [MABEL] } \textLengthOff c4^\markup { CHORUS } d f c } }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
De l’ubiquité des objets markup
Les objets textuels se saisissent soit en tant que simples chaînes de
caractères bornées par des guillemets informatiques, soit dans des blocs
\markup
qui, eux, acceptent tout un panel de mise en forme
avancée et améliorations graphiques.
En tant que tels, les blocs markup peuvent s’utiliser :
-
pour tout objet
TextScript
(attaché aux notes par-
,^
ou_
), -
pour tout
RehearsalMark
introduit par le mot-clé\mark
ou tout autre objet similaire commeMetronomeMark
introduit par\tempo
, -
comme bloc de markup indépendant, placé au niveau supérieur en
dehors de tout bloc
\score
, -
pour toute définition au sein du bloc
\header
(titre, sous-titre, compositeur…) ou dans certaines variables définies dans le bloc\paper
telle queevenHeaderMarkup
pour les numéros de page.
\markup
peut aussi servir pour les paroles, les noms d’accord et
les nuances. En fait, \markup
peut servir à personnaliser
l’apparence de pratiquement n’importe quel objet, comme l’illustre cet
exemple qui recourt à différentes méthodes.
%% Thanks to Aaron Hill https://lists.gnu.org/archive/html/lilypond-user/2019-01/msg00437.html \paper { paper-width = 8\cm paper-height = 8\cm } \header { title = \markup "Header" tagline = \markup "(tagline)" } \markup "Top-level markup" dyn = #(make-dynamic-script #{ \markup \text "DynamicText" #}) \score { << \new ChordNames \with { majorSevenSymbol = \markup "majorSevenSymbol" } \chordmode { c1:maj7 } \new Staff { \tempo \markup "MetronomeMark" \mark \markup "RehearsalMark" \once \override TupletNumber.text = \markup "TupletNumber" \tuplet 3/2 { \once \override NoteHead.stencil = #ly:text-interface::print \once \override NoteHead.text = \markup \lower #0.5 "NoteHead" c''8^\markup "TextScript" \once \override Rest.stencil = #(lambda (grob) (grob-interpret-markup grob #{ \markup "Rest" #})) r4 } } \new Lyrics \lyricmode { \markup "LyricText" 1 } \new Dynamics { s1\dyn } >> }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Impression du numéro de version
L’insertion du résultat de lilypond-version
dans des paroles
permet d’ajouter à la partition ou au document généré par
lilypond-book
le numéro de la version de LilyPond utilisée. Une
autre possibilité consiste à l’ajouter à une chaîne textuelle comme
ci-dessous.
\score { \new Lyrics { \override Score.RehearsalMark.self-alignment-X = #LEFT \mark #(string-append "Processed with LilyPond version " (lilypond-version)) s2 } }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Piano et paroles entre les portées
Lorsque la mélodie est doublée au piano, cela ne nécessite pas forcément une portée spécifique. Les paroles peuvent s’insérer entre les deux portées de la partition pour piano.
upper = \relative c'' { \clef treble \key c \major \time 4/4 a4 b c d } lower = \relative c { \clef bass \key c \major \time 4/4 a2 c } text = \lyricmode { Aaa Bee Cee Dee } \score { \new PianoStaff << \new Staff = upper { \new Voice = "singer" \upper } \new Lyrics \lyricsto "singer" \text \new Staff = lower { \lower } >> \layout { } \midi { } }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Changement de la fréquence d’impression du numéro de mesure
La fonction de contexte set-bar-number-visibility
permet de
modifier la fréquence à laquelle les numéros de mesures s’impriment.
\relative c' { \override Score.BarNumber.break-visibility = #end-of-line-invisible \context Score \applyContext #(set-bar-number-visibility 4) \repeat unfold 10 c'1 \context Score \applyContext #(set-bar-number-visibility 2) \repeat unfold 10 c }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Indication d’un repère en fin de ligne
Les indications de repère peuvent s’imprimer à la fin d’une ligne plutôt qu’en tête de la suivante. L’alignement sur la barre de mesure devra alors s’effectuer par l’extrémité droite de l’indication.
\relative c'' { g2 c d,2 a' \once \override Score.RehearsalMark.break-visibility = #end-of-line-visible \once \override Score.RehearsalMark.self-alignment-X = #RIGHT \mark "D.C. al Fine" \break g2 b, c1 \bar "||" }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Impression des indications sur toutes les portées d’un système
Bien que ces indications textuelles ne soient habituellement imprimées qu’au niveau de la portée supérieure d’un système, leur affectation peut être répercutée à chacune des portées.
\score { << \new Staff { c''1 \mark "molto" c'' } \new Staff { c'1 \mark "molto" c' } >> \layout { \context { \Score \remove "Mark_engraver" \remove "Staff_collecting_engraver" } \context { \Staff \consists "Mark_engraver" \consists "Staff_collecting_engraver" } } }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Impression de texte de droite à gauche
Du texte, inclus dans un objet markup, peut s’imprimer de droite à gauche, comme illustré ci-dessous.
{ b1^\markup { \line { i n g i r u m i m u s n o c t e } } f'_\markup { \override #'(text-direction . -1) \line { i n g i r u m i m u s n o c t e } } }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Impression des paroles dans la portée
Des paroles peuvent venir s’inscrire dans la portée même. Ces paroles
sont décalées par la dérogation
\override LyricText.extra-offset = #'(0 . dimension)
; des
commandes similaires s’occuperont des extenseurs et des tirets.
Le décalage optimal ne peut s’obtenir qu’en procédant à tâtons.
<< \new Staff << \new Voice = "voc" \relative c' { \stemDown a bes c8 b c4 } >> \new Lyrics \with { \override LyricText.extra-offset = #'(0 . 8.6) \override LyricExtender.extra-offset = #'(0 . 8.6) \override LyricHyphen.extra-offset = #'(0 . 8.6) } \lyricsto "voc" { La la -- la __ _ la } >>
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Bloc de texte indépendant sur deux colonnes
L’utilisation de la commande \markup
permet de distribuer un bloc
de texte indépendant sur plusieurs colonnes.
\markup { \fill-line { \hspace #1 \column { \line { O sacrum convivium } \line { in quo Christus sumitur, } \line { recolitur memoria passionis ejus, } \line { mens impletur gratia, } \line { futurae gloriae nobis pignus datur. } \line { Amen. } } \hspace #2 \column \italic { \line { O sacred feast } \line { in which Christ is received, } \line { the memory of His Passion is renewed, } \line { the mind is filled with grace, } \line { and a pledge of future glory is given to us. } \line { Amen. } } \hspace #1 } }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Ligne de prolongation pour numéro de corde
Voici comment ajouter une ligne de prolongation à une indication de numéro de corde, afin de stipuler que les notes qui suivent doivent être jouées sur la corde en question.
stringNumberSpanner = #(define-music-function (StringNumber) (string?) #{ \override TextSpanner.style = #'solid \override TextSpanner.font-size = #-5 \override TextSpanner.bound-details.left.stencil-align-dir-y = #CENTER \override TextSpanner.bound-details.left.text = \markup { \circle \number $StringNumber } #}) \relative c { \clef "treble_8" \stringNumberSpanner "5" \textSpannerDown a8\startTextSpan b c d e f\stopTextSpan \stringNumberSpanner "4" g\startTextSpan a bes4 a g2\stopTextSpan }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Encadrement sur trois côtés
Voici comment construire une commande de markup chargée d’agrémenter du texte ou autre annotation, d’une bordure sur trois côtés.
% New command to add a three sided box, with sides north, west and south % Based on the box-stencil command defined in scm/stencil.scm % Note that ";;" is used to comment a line in Scheme #(define-public (NWS-box-stencil stencil thickness padding) "Add a box around STENCIL, producing a new stencil." (let* ((x-ext (interval-widen (ly:stencil-extent stencil X) padding)) (y-ext (interval-widen (ly:stencil-extent stencil Y) padding)) (y-rule (make-filled-box-stencil (cons 0 thickness) y-ext)) (x-rule (make-filled-box-stencil (interval-widen x-ext thickness) (cons 0 thickness)))) ;; (set! stencil (ly:stencil-combine-at-edge stencil X 1 y-rule padding)) (set! stencil (ly:stencil-combine-at-edge stencil X LEFT y-rule padding)) (set! stencil (ly:stencil-combine-at-edge stencil Y UP x-rule 0.0)) (set! stencil (ly:stencil-combine-at-edge stencil Y DOWN x-rule 0.0)) stencil)) % The corresponding markup command, based on the \box command defined % in scm/define-markup-commands.scm #(define-markup-command (NWS-box layout props arg) (markup?) #:properties ((thickness 0.1) (font-size 0) (box-padding 0.2)) "Draw a box round @var{arg}. Looks at @code{thickness}, @code{box-padding} and @code{font-size} properties to determine line thickness and padding around the markup." (let ((pad (* (magstep font-size) box-padding)) (m (interpret-markup layout props arg))) (NWS-box-stencil m thickness pad))) % Test it: \relative c' { c1^\markup { \NWS-box ABCD } c1^\markup { \NWS-box \note {4} #1.0 } }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
UTF-8
Différents éléments textuels peuvent s’ajouter à la notation, comme des titres ou des paroles, dès lors qu’ils sont encodés en UTF-8, grâce à un moteur de rendu reposant sur Pango. Selon les fontes disponibles devraient apparaître quatre lignes de texte : en bulgare (en cyrillique), en hébreux, en japonais et en portugais.
% end verbatim - this comment is a hack to prevent texinfo.tex % from choking on non-European UTF-8 subsets %% Edit this file using a Unicode aware editor, such as GVIM, GEDIT, Emacs %{ You may have to install additional fonts. Red Hat Fedora linux-libertine-fonts (Latin, Cyrillic, Hebrew) ipa-mincho-fonts ipa-gothic-fonts (Japanese) Debian GNU/Linux, Ubuntu fonts-linuxlibertine (Latin, Cyrillic, Hebrew) fonts-ipafont (Japanese) %} % Font settings for Cyrillic and Hebrew % Linux Libertine fonts contain Cyrillic and Hebrew glyphs. \paper { #(define fonts (set-global-fonts #:roman "Linux Libertine O,serif" #:sans "Linux Biolinum O,sans-serif" #:typewriter "Linux Libertine Mono O,monospace" )) } % Cyrillic font bulgarian = \lyricmode { Жълтата дюля беше щастлива, че пухът, който цъфна, замръзна като гьон. } hebrew = \lyricmode { זה כיף סתם לשמוע איך תנצח קרפד עץ טוב בגן. } japanese = \lyricmode { いろはにほへど ちりぬるを わがよたれぞ つねならむ うゐのおくや まけふこえて あさきゆめみじ ゑひもせず } % "a legal song to you" portuguese = \lyricmode { à vo -- cê uma can -- ção legal } \relative c' { c2 d e2 f g2 f e1 } \addlyrics { \bulgarian } \addlyrics { \hebrew } \addlyrics { \japanese } \addlyrics { \portuguese }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ > ] |
Ensemble vocal avec alignement des paroles selon le contexte
Ce canevas ressemble beaucoup à celui pour chœur à quatre voix mixtes.
La différence réside dans le fait que les paroles sont positionnées en
ayant recours à alignAboveContext
et alignBelowContext
.
global = { \key c \major \time 4/4 } sopMusic = \relative c'' { c4 c c8[( b)] c4 } sopWords = \lyricmode { hi hi hi hi } altoMusic = \relative c' { e4 f d e } altoWords = \lyricmode { ha ha ha ha } tenorMusic = \relative c' { g4 a f g } tenorWords = \lyricmode { hu hu hu hu } bassMusic = \relative c { c4 c g c } bassWords = \lyricmode { ho ho ho ho } \score { \new ChoirStaff << \new Staff = "women" << \new Voice = "sopranos" { \voiceOne << \global \sopMusic >> } \new Voice = "altos" { \voiceTwo << \global \altoMusic >> } >> \new Lyrics \with { alignAboveContext = #"women" } \lyricsto "sopranos" \sopWords \new Lyrics \with { alignBelowContext = #"women" } \lyricsto "altos" \altoWords % we could remove the line about this with the line below, since % we want the alto lyrics to be below the alto Voice anyway. % \new Lyrics \lyricsto "altos" \altoWords \new Staff = "men" << \clef bass \new Voice = "tenors" { \voiceOne << \global \tenorMusic >> } \new Voice = "basses" { \voiceTwo << \global \bassMusic >> } >> \new Lyrics \with { alignAboveContext = #"men" } \lyricsto "tenors" \tenorWords \new Lyrics \with { alignBelowContext = #"men" } \lyricsto "basses" \bassWords % again, we could replace the line above this with the line below. % \new Lyrics \lyricsto "basses" \bassWords >> }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ Vocal music > ] |
Indication de reprise avec texte grâce à repeatCommands
La commande \repeat volta
permet d’indiquer facilement des
reprises. Il est certains cas où l’adjonction d’un texte sous forme de
\markup
nécessite cependant de recourir à la propriété de
contexte repeatCommands
.
Dans la mesure où l’argument de repeatCommands
est constitué
d’une liste, le plus simple est de définir le texte dans une variable
qui sera ensuite incorporée dans la liste en respectant la syntaxe
Scheme #(list (list 'volta texteIdentificateur))
. Les commandes
de début et de fin de reprise peuvent s’ajouter séparément à la liste
des éléments.
voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } } \relative c'' { c1 \set Score.repeatCommands = #(list (list 'volta voltaAdLib) 'start-repeat) c4 b d e \set Score.repeatCommands = #'((volta #f) (volta "4.") end-repeat) f1 \set Score.repeatCommands = #'((volta #f)) }
[ << Text ] | [Racine][Table des matières] | [ Vocal music >> ] |
[ < ] | [Plus haut: Text ] | [ Vocal music > ] |