[ << Rhythms ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Top ] | [ > ] |
Expressive marks
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < Expressive marks ] | [Plus haut: Expressive marks ] | [ > ] |
Coexistence de ligatures et liaisons avec des rythmes comprenant des n-olets
La syntaxe de LilyPond demande parfois un positionnement inhabituel des parenthèses, crochets, etc. qui peuvent s’entrelacer.
Par exemple, le crochet ouvrant une ligature manuelle se place à la suite de la note de départ et sa durée, non pas avant. De même, le crochet fermant se place à la fin de la ligature, y compris lorsque la dernière note se trouve incluse dans un n-olet.
Cet extrait illustre la manière de combiner ligatures manuelles, liaisons d’articulation, de prolongation ou de phrasé, avec des n-olets bornées par des accolades.
{ r16[ g16 \tuplet 3/2 { r16 e'8] } g16( a \tuplet 3/2 { b d e') } g8[( a \tuplet 3/2 { b d') e'] ~ } \time 2/4 \tuplet 5/4 { e'32\( a b d' e' } a'4.\) }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Mise entre parenthèses d’un signe d’interprétation ou d’une note d’un accord
La fonction \parenthesize
, qui permet de mettre un objet entre
parenthèses, a ceci de particulier qu’elle est associée à un objet
graphique Parentheses
.
\relative c' { c2-\parenthesize -> \override Parentheses.padding = #0.1 \override Parentheses.font-size = #-4 <d \parenthesize f a>2 }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Ajout de marques temporelles à un long glissando
Lorsqu’un glissando s’étend dans la durée, on trouve parfois des indications temporelles, matérialisées par des hampes sans tête de note. De telles hampes permettent aussi d’indiquer des éléments intermédiaires.
L’alignement des hampes avec la ligne de glissando peut requérir quelques aménagements.
glissandoSkipOn = { \override NoteColumn.glissando-skip = ##t \hide NoteHead \override NoteHead.no-ledgers = ##t } glissandoSkipOff = { \revert NoteColumn.glissando-skip \undo \hide NoteHead \revert NoteHead.no-ledgers } \relative c'' { r8 f8\glissando \glissandoSkipOn f4 g a a8\noBeam \glissandoSkipOff a8 r8 f8\glissando \glissandoSkipOn g4 a8 \glissandoSkipOff a8 | r4 f\glissando \< \glissandoSkipOn a4\f \> \glissandoSkipOff b8\! r | }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Ajustement du galbe des chutes ou sauts
La propriété shortest-duration-space
peut devoir être retouchée
pour ajuster l’apparence des chutes ou sauts.
\relative c'' { \override Score.SpacingSpanner.shortest-duration-space = #4.0 c2-\bendAfter #5 c2-\bendAfter #-4.75 c2-\bendAfter #8.5 c2-\bendAfter #-6 }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Alignement des bornes de soufflet relativement aux NoteColumn
s
Les terminaisons des soufflets peuvent s’aligner sur la gauche, au
centre ou sur la droite des grobs NoteColumn
à l’aide
d’une dérogation à la propriété endpoint-alignments
–
LEFT
, CENTER
ou RIGHT
– sous forme de paire
représentant les extrémités gauche et droite du soufflet. Les
endpoint-alignments
devraient être des directions (soit
-1, 0 ou 1), les autres valeurs entraînant l’émission d’un
avertissement. L’extrémité droite d’un soufflet se terminant sur un
silence ne sera pas affectée et s’alignera toujours sur le bord gauche
de ce silence.
{ c'2\< <c' d'>\! | \override Hairpin.endpoint-alignments = #'(1 . -1) c'2\< <c' d'>\! | \override Hairpin.endpoint-alignments = #`(,LEFT . ,CENTER) c'2\< <c' d'>\! | }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Brève alternative, avec deux barres verticales
Voici comment obtenir une brève – aussi appelée note carée – flanquée de deux barres verticales, au lieu d’une comme habituellement.
\relative c'' { \time 4/2 c\breve | \override Staff.NoteHead.style = #'altdefault b\breve \override Staff.NoteHead.style = #'baroque b\breve \revert Staff.NoteHead.style a\breve }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Liaison asymétrique
Une liaison peut adopter une courbe asymétrique afin de s’adapter au mieux à la ligne mélodique.
slurNotes = { d,8( a' d f a f' d, a) } \relative c' { \stemDown \slurUp \slurNotes \once \override Slur.eccentricity = #3.0 \slurNotes }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Signes de respiration
Les indications de respiration sont disponibles sous différentes formes : virgule (par défaut), trait, en V ou en « voie de chemin de fer » (césure).
\new Staff \relative c'' { \key es \major \time 3/4 % this bar contains no \breathe << { g4 as g } \\ { es4 bes es } >> | % Modern notation: % by default, \breathe uses the rcomma, just as if saying: % \override BreathingSign.text = % #(make-musicglyph-markup "scripts.rcomma") << { g4 as g } \\ { es4 \breathe bes es } >> | % rvarcomma and lvarcomma are variations of the default rcomma % and lcomma % N.B.: must use Staff context here, since we start a Voice below \override Staff.BreathingSign.text = \markup { \musicglyph "scripts.rvarcomma" } << { g4 as g } \\ { es4 \breathe bes es } >> | % raltcomma and laltcomma are alternative variations of the % default rcomma and lcomma \override Staff.BreathingSign.text = \markup { \musicglyph "scripts.raltcomma" } << { g4 as g } \\ { es4 \breathe bes es } >> | % vee \override BreathingSign.text = \markup { \musicglyph "scripts.upbow" } es8[ d es f g] \breathe f | % caesura \override BreathingSign.text = \markup { \musicglyph "scripts.caesura.curved" } es8[ d] \breathe es[ f g f] | es2 r4 \bar "||" }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Soufflet de crescendo partiellement interrompu
Une portion d’un soufflet de crescendo peut être rendue invisible. Il suffit pour cela de dessiner un rectangle par dessus ce tronçon, ce qui aura pour effet de le rendre invisible. Ce rectangle est défini au sein d’un markup par du code PostScript.
La commande de markup with-dimensions
indique à LilyPond
de ne prendre en considération que l’extrémité inférieure du rectangle
lors de son positionnement par rapport au soufflet. L’ajustement de la
propriété staff-padding
permet d’éviter au rectangle de venir
s’intercaler entre le soufflet et la portée.
Le soufflet doit se trouver à un niveau inférieur à celui du markup afin que le dessin du rectangle puisse effectivement le recouvrir.
\relative c' { << { \dynamicUp r2 r16 c'8.\pp r4 } \\ { \override DynamicLineSpanner.layer = #0 des,2\mf\< ~ \override TextScript.layer = #2 \once\override TextScript.staff-padding = #6 \once\override TextScript.vertical-skylines = #'() des16_\markup \with-dimensions #'(2 . 7) #'(0 . 0) \with-color #white \filled-box #'(2 . 7) #'(0 . 2) #0 r8. des4 ~ des16->\sff r8. } >> }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Césure en forme de « voie de chemin de fer » avec point d’orgue
Une césure peut parfois s’indiquer par une double respiration surmontée d’un point d’orgue. Le code ci-dessous permet d’obtenir la combinaison répondant à cette esthétique.
\relative c'' { c2. % construct the symbol \override BreathingSign.text = \markup { \override #'(direction . 1) \override #'(baseline-skip . 1.8) \dir-column { \translate #'(0.155 . 0) \center-align \musicglyph "scripts.caesura.curved" \center-align \musicglyph "scripts.ufermata" } } \breathe c4 % set the breathe mark back to normal \revert BreathingSign.text c2. \breathe c4 \bar "|." }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
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é.
\paper { tagline = ##f } 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)) (staff-line-thickness (ly:output-def-lookup (ly:grob-layout grob) 'line-thickness)) (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 (make-fontsize-markup (magnification->font-size (+ (ly:staff-symbol-staff-space grob) (/ staff-line-thickness 2))) text)) X CENTER)) X LEFT)) (staff-space (ly:output-def-lookup (ly:grob-layout grob) 'staff-space)) (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 }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Modification du texte et de l’extension de nuances textuelles
Le texte par défaut des crescendos et decrescendos se change en
modifiant les propriétés de contexte crescendoText
et
decrescendoText
.
L’aspect de la ligne d’extension est fonction de la propriété
'style
du DynamicTextSpanner
. Sa valeur par défaut est
'dashed-line
, mais d’autres valeurs sont disponibles, comme
'line
, 'dotted-line
et 'none
.
\relative c'' { \set crescendoText = \markup { \italic { cresc. poco } } \set crescendoSpanner = #'text \override DynamicTextSpanner.style = #'dotted-line a2\< a a2 a a2 a a2 a\mf }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Modification de l’aspect des liaisons d’articulation
Une liaison d’articulation peut se présenter sous la forme d’un trait continu ou discontinu, voire en pointillé.
\relative c' { c4( d e c) \slurDotted c4( d e c) \slurSolid c4( d e c) \slurDashed c4( d e c) \slurSolid c4( d e c) }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Modification de l’indicateur de respiration
On peut choisir le glyphe imprimé par cette commande, en modifiant la
propriété text
de l’objet BreathingSign
, pour lui affecter
n’importe quelle indication textuelle.
\relative c'' { c2 \override BreathingSign.text = \markup { \musicglyph "scripts.rvarcomma" } \breathe d2 }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Spécification du nombre de points d’augmentation d’une note
Le nombre de points d’augmentation affectés à une note en particulier peut se modifier indépendamment des points placés après la note.
\relative c' { c4.. a16 r2 | \override Dots.dot-count = #4 c4.. a16 r2 | \override Dots.dot-count = #0 c4.. a16 r2 | \revert Dots.dot-count c4.. a16 r2 | }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
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 }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Glissando contemporain
De nos jours, il peut arriver que la note d’arrivée d’un glissando soit absente de la partition. Pour ce faire, il vous faudra utiliser une cadence et « masquer » la note d’arrivée.
\relative c'' { \time 3/4 \override Glissando.style = #'zigzag c4 c \cadenzaOn c4\glissando \hideNotes c,,4 \unHideNotes \cadenzaOff \bar "|" }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Contrôle de la visibilité des extensions d’objet après saut de ligne
La visibilité des extensions qui se terminent sur la première note après
un saut de ligne est contrôlée par un appel de after-line-breaking
à la fonction ly:spanner::kill-zero-spanned-time
.
Pour des objets tels qu’un glissando ou un soufflet, le comportement par défaut est de ne pas être reportés après un saut de ligne. L’extension sera donc reprise dès lors que l’appel aura été désactivé.
Il en va inversement pour les extensions qui, par défaut pour les textes notamment, sont reportées après un saut de ligne ; il faudra alors activer l’appel pour empêcher leur report.
\paper { ragged-right = ##t } \relative c'' { \override Hairpin.to-barline = ##f \override Glissando.breakable = ##t % show hairpin \override Hairpin.after-line-breaking = ##t % hide text span \override TextSpanner.after-line-breaking = #ly:spanner::kill-zero-spanned-time e2\<\startTextSpan % show glissando \override Glissando.after-line-breaking = ##t f2\glissando \break f,1\!\stopTextSpan }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Contrôle de l’ordre vertical des articulations et ornements
Les symboles s’ordonnent verticalement suivant la propriété
script-priority
. Plus sa valeur numérique est faible, plus le
symbole sera proche de la note. Dans l’exemple suivant, l’objet
TextScript
– le dièse – a d’abord la propriété la plus basse et
se voit donc placé au plus près de la note ; ensuite, c’est l’objet
Script
– le mordant – qui a la propriété la plus basse, et se
place alors sous le dièse. Lorsque deux objets ont la même priorité,
c’est l’ordre dans lequel ils sont indiqués qui détermine lequel sera
placé en premier.
\relative c''' { \once \override TextScript.script-priority = #-100 a2^\prall^\markup { \sharp } \once \override Script.script-priority = #-100 a2^\prall^\markup { \sharp } }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Création d’un groupetto retardé
Obtenir un groupetto retardé et dans lequel la note la plus basse
est altérée requiert quelques surcharges. La propriété
outside-staff-priority
doit être désactivée (#f
) pour
éviter qu’elle prenne le pas sur la propriété avoid-slur
.
L’ajustement du positionnement horizontal s’effectue en jouant sur la
fraction 2/3
.
\relative c'' { \after 2*2/3 \turn c2( d4) r | \after 4 \turn c4.( d8) \after 4 { \once \set suggestAccidentals = ##t \once \override AccidentalSuggestion.outside-staff-priority = ##f \once \override AccidentalSuggestion.avoid-slur = #'inside \once \override AccidentalSuggestion.font-size = -3 \once \override AccidentalSuggestion.script-priority = -1 \once \hideNotes cis8\turn \noBeam } d4.( e8) }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Arpège distribué sur plusieurs voix
Affecter le graveur Span_arpeggio_engraver
au contexte de la
portée (Staff
) permet de distribuer un arpège sur plusieurs
voix.
\new Staff \with { \consists "Span_arpeggio_engraver" } \relative c' { \set Staff.connectArpeggios = ##t << { <e' g>4\arpeggio <d f> <d f>2 } \\ { <d, f>2\arpeggio <g b>2 } >> }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Arpège distribué sur une partition pour piano
Dans une double portée pour piano (PianoStaff
), un arpège peut
s’étendre sur les deux portées grâce à la propriété
PianoStaff.connectArpeggios
.
\new PianoStaff \relative c'' << \set PianoStaff.connectArpeggios = ##t \new Staff { <c e g c>4\arpeggio <g c e g>4\arpeggio <e g c e>4\arpeggio <c e g c>4\arpeggio } \new Staff { \clef bass \repeat unfold 4 { <c,, e g c>4\arpeggio } } >>
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Arpège distribué pour un autre contexte que le piano
Il est possible de distribuer un arpège sur plusieurs portées d’un
système autre que le PianoStaff
dès lors que vous incluez le
Span_arpeggio_engraver
au contexte Score
.
\score { \new ChoirStaff { \set Score.connectArpeggios = ##t << \new Voice \relative c' { <c e>2\arpeggio <d f>2\arpeggio <c e>1\arpeggio } \new Voice \relative c { \clef bass <c g'>2\arpeggio <b g'>2\arpeggio <c g'>1\arpeggio } >> } \layout { \context { \Score \consists "Span_arpeggio_engraver" } } }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Création de doigtés sur deux caractères
Il est tout à fait possible de noter un doigté supérieur à 5.
\relative c' { c1-10 c1-50 c1-36 c1-29 }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
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 }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Création d’une liaison entre plusieurs voix
Dans certaines situations, il peut être nécessaire de lier des notes
appartenant à des voix différentes. La solution consiste à ajouter une
note invisible dans l’une des voix, à l’aide de la commande
\hideNotes
.
Voici par exemple la mesure 235 de la chaconne de la seconde partita pour violon solo, BWV 1004, de Bach.
\relative c' { << { d16( a') s a s a[ s a] s a[ s a] } \\ { \slurUp bes,16[ s e]( \hideNotes a) \unHideNotes f[( \hideNotes a) \unHideNotes fis]( \hideNotes a) \unHideNotes g[( \hideNotes a) \unHideNotes gis]( \hideNotes a) } >> }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
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 }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Personnalisation des extenseurs de nuance postfix
Il s’agit de fonctions postfix pour personnaliser l’extension des
crescendos textuels. L’extension devrait débuter sur la première note
de la mesure. Il faut utiliser -\mycresc
– comme une
articulation – sous peine que le départ de l’extension n’apparaisse
qu’à la note suivante.
% Two functions for (de)crescendo spanners where you can explicitly % give the spanner text. mycresc = #(define-music-function (mymarkup) (markup?) (make-music 'CrescendoEvent 'span-direction START 'span-type 'text 'span-text mymarkup)) mydecresc = #(define-music-function (mymarkup) (markup?) (make-music 'DecrescendoEvent 'span-direction START 'span-type 'text 'span-text mymarkup)) \relative c' { c4-\mycresc "custom cresc" c4 c4 c4 | c4 c4 c4 c4 | c4-\mydecresc "custom decresc" c4 c4 c4 | c4 c4\! c4 c4 }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Extensions de nuance postfix
Les lignes d’extension des commandes \cresc
, \dim
et
\decresc
peuvent désormais être personnalisées facilement sous
forme d’opérateurs postfix. Soufflets et (de)crescendos peuvent
cohabiter. \<
et \>
produiront par défaut des soufflets,
alors que \cresc
, etc. produiront une indication textuelle avec
extension.
% Some sample text dynamic spanners, to be used as postfix operators crpoco = #(make-music 'CrescendoEvent 'span-direction START 'span-type 'text 'span-text "cresc. poco a poco") \relative c' { c4\cresc d4 e4 f4 | g4 a4\! b4\crpoco c4 | c4 d4 e4 f4 | g4 a4\! b4\< c4 | g4\dim a4 b4\decresc c4\! }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Glissando par dessus un objet graphique
Un glissando peut sauter un objet NoteColumn
.
\relative c' { a2 \glissando \once \override NoteColumn.glissando-skip = ##t f''4 d, }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Stylisation des lignes de soufflet
Les lignes d’un soufflet peuvent adopter tous les styles permis par la
line-interface
: discontinu, pointillé, continu, ondulé ou en
zigzag.
\relative c' { c2\< c\! \override Hairpin.style = #'dashed-line c2\< c\! \override Hairpin.style = #'dotted-line c2\< c\! \override Hairpin.style = #'line c2\< c\! \override Hairpin.style = #'trill c2\< c\! \override Hairpin.style = #'zigzag c2\< c\! \revert Hairpin.style c2\< c\! }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Masquage de l’extension des nuances textuelles
Les crescendos et decrescendos indiqués textuellement – tels que cresc. ou dim. – sont suivis de pointillés qui montrent leur étendue. On peut empêcher l’impression de ces pointillés.
\relative c'' { \override DynamicTextSpanner.style = #'none \crescTextCresc c1\< | d | b | c\! }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Alignement de nuances personnalisées comme « sempre pp », « più f » ou « subito p »
Certaines indications de nuance requièrent un complément textuel, comme « sempre pp ». Dans la mesure où les nuances sont habituellement centrées sous la note, le pp se trouvera repoussé loin après la note à laquelle il s’applique.
Différentes approches permettent de correctement aligner horizontalement ce « sempre pp » :
-
Un simple
\once \override DynamicText.X-offset = #-9.2
avant la note considérée de telle sorte que la nuance soit décalée manuellement à la bonne place. Inconvénient : il faut le faire manuellement à chaque fois qu’intervient ce markup. -
L’intégration d’un rembourrage (
#:hspace 7.1
) à la définition de cette nuance personnalisée afin qu’une fois centrée par LilyPond elle soit correctement alignée. Inconvénient : le rembourrage occupera exactement cet espace et ne permettra à aucun autre markup ou nuance d’apparaître à cet endroit. -
L’application d’un décalage au script de nuance
\once \override … X-offset = …
. Inconvénient : là aussi il faut le faire à chaque fois. -
L’attribution arbitraire d’une dimension à 0 du texte additionnel à
l’aide d’un
#:with-dimensions '(0 . 0) '(0 . 0)
. Inconvénient : LilyPond considère que « sempre » n’occupe pas d’espace, et donc pourra mettre à cet endroit d’autres éléments, ce qui pourrait générer des collisions qui ne seront pas détectées par les routines ad hoc. D’autre part, il semble persister un espacement, ce qui laisse l’impression d’un alignement différent en l’absence de texte additionnel. - L’ajout, explicite, du décalage directement dans la fonction Scheme du script de nuance.
-
La définition d’un alignement explicite au sein du script de nuance.
Ceci ne sera suivi d’effet, par défaut, qu’en jouant sur
X-offset
. Inconvénient : il faut définirDynamicText.X-offset
, ce qui s’appliquera à toutes les nuances textuelles. Par ailleurs, l’alignement sera réalisé sur le bord droit du texte additionnel, non sur le milieu de pp.
\paper { ragged-right = ##f indent = 2.5\cm } % Solution 1: Using a simple markup with a particular halign value % Drawback: It's a markup, not a dynamic command, so \dynamicDown % etc. will have no effect semppMarkup = \markup { \halign #1.4 \italic "sempre" \dynamic "pp" } % Solution 2: Using a dynamic script & shifting with % \once \override ...X-offset = .. % Drawback: \once \override needed for every invocation semppK = #(make-dynamic-script (markup #:line (#:normal-text #:italic "sempre" #:dynamic "pp"))) % Solution 3: Padding the dynamic script so the center-alignment % puts it at the correct position % Drawback: the padding really reserves the space, nothing else can be there semppT = #(make-dynamic-script (markup #:line (#:normal-text #:italic "sempre" #:dynamic "pp" #:hspace 7.1))) % Solution 4: Dynamic, setting the dimensions of the additional text to 0 % Drawback: To lilypond "sempre" has no extent, so it might put % other stuff there => collisions % Drawback: Also, there seems to be some spacing, so it's not exactly the % same alignment as without the additional text semppM = #(make-dynamic-script (markup #:line (#:with-dimensions '(0 . 0) '(0 . 0) #:right-align #:normal-text #:italic "sempre" #:dynamic "pp"))) % Solution 5: Dynamic with explicit shifting inside the scheme function semppG = #(make-dynamic-script (markup #:hspace 0 #:translate '(-18.85 . 0) #:line (#:normal-text #:italic "sempre" #:dynamic "pp"))) % Solution 6: Dynamic with explicit alignment. This has only effect % if one sets X-offset! % Drawback: One needs to set DynamicText.X-offset! % Drawback: Aligned at the right edge of the additional text, % not at the center of pp semppMII = #(make-dynamic-script (markup #:line (#:right-align #:normal-text #:italic "sempre" #:dynamic "pp"))) \new StaffGroup << \new Staff = "s" \with { instrumentName = \markup \column { Normal } } << \relative c'' { \key es \major c4\pp c\p c c | c\ff c c\pp c } >> \new Staff = "sMarkup" \with { instrumentName = \markup \column { Normal markup } } << \relative c'' { \key es \major c4-\semppMarkup c\p c c | c\ff c c-\semppMarkup c } >> \new Staff = "sK" \with { instrumentName = \markup \column { Explicit shifting } } << \relative c'' { \key es \major \once \override DynamicText.X-offset = #-9.2 c4\semppK c\p c c c4\ff c \once \override DynamicText.X-offset = #-9.2 c4\semppK c } >> \new Staff = "sT" \with { instrumentName = \markup \column { Right padding } } << \relative c'' { \key es \major c4\semppT c\p c c | c\ff c c\semppT c } >> \new Staff = "sM" \with { instrumentName = \markup \column { Set dimension "to zero" } } << \relative c'' { \key es \major c4\semppM c\p c c | c\ff c c\semppM c } >> \new Staff = "sG" \with { instrumentName = \markup \column { Shift inside dynamics} } << \relative c'' { \key es \major c4\semppG c\p c c | c\ff c c\semppG c } >> \new Staff = "sMII" \with { instrumentName = \markup \column { Alignment inside dynamics } } << \relative c'' { \key es \major % Setting to ##f (false) gives the same result \override DynamicText.X-offset = #0 c4\semppMII c\p c c | c\ff c c\semppMII c } >> >> \layout { \override Staff.InstrumentName.self-alignment-X = #LEFT }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Insertion d’une césure
Une surcharge de la propriété text
de l’objet
BreathingSign
permet de créer une marque de césure.
LilyPond dispose également d’une variante courbée.
\relative c'' { \override BreathingSign.text = \markup { \musicglyph "scripts.caesura.straight" } c8 e4. \breathe g8. e16 c4 \override BreathingSign.text = \markup { \musicglyph "scripts.caesura.curved" } g8 e'4. \breathe g8. e16 c4 }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Liaison « Laissez vibrer »
Les indications de « laisser vibrer » ont une taille fixe. Leur
formatage est accessible au travers de la propriété
tie-configuration
.
\relative c' { <c e g>4\laissezVibrer r <c f g>\laissezVibrer r <c d f g>4\laissezVibrer r <c d f g>4.\laissezVibrer r8 <c d e f>4\laissezVibrer r \override LaissezVibrerTieColumn.tie-configuration = #`((-7 . ,DOWN) (-5 . ,DOWN) (-3 . ,UP) (-1 . ,UP)) <c d e f>4\laissezVibrer r }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Terminaison de ligne en flèche
Les extensions de texte, tout comme les indications sous forme de ligne tel un glissando, peuvent se voir pourvues d’une extrémité en flèche.
\relative c'' { \override TextSpanner.bound-padding = #1.0 \override TextSpanner.style = #'line \override TextSpanner.bound-details.right.arrow = ##t \override TextSpanner.bound-details.left.text = #"fof" \override TextSpanner.bound-details.right.text = #"gag" \override TextSpanner.bound-details.right.padding = #0.6 \override TextSpanner.bound-details.right.stencil-align-dir-y = #CENTER \override TextSpanner.bound-details.left.stencil-align-dir-y = #CENTER \override Glissando.bound-details.right.arrow = ##t \override Glissando.arrow-length = #0.5 \override Glissando.arrow-width = #0.25 a8\startTextSpan gis a4 b\glissando b, g'4 c\stopTextSpan c2 }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Dessin d’une liaison d’articulation au trait discontinu
Grâce à la propriété dash-definition
, une liaison d’articulation
peut être formée de traits discontinus variables. dash-definition
se compose d’une liste de segments-discontinus
(dash-elements). Chaque segment-discontinu
contient une
liste de paramètres qui déterminent le comportement du trait pour une
section de la liaison.
Cette liaison se définit selon le paramètre de Bézier t
qui est
compris entre 0 (l’extrémité gauche de la liaison) et 1 (l’extrémité
droite de la liaison). Chaque segment-discontinu
se composera
selon la liste (t-début t-fin segment-style segment-taille)
. La
portion de liaison allant de t-début
à t-fin
aura un trait
segment-style
de longueur segment-taille
.
segment-taille
est exprimé en espace de portée ; un
segment-style
à 1 donnera un trait plein.
\relative c' { \once \override Slur.dash-definition = #'((0 0.3 0.1 0.75) (0.3 0.6 1 1) (0.65 1.0 0.4 0.75)) c4( d e f) \once \override Slur.dash-definition = #'((0 0.25 1 1) (0.3 0.7 0.4 0.75) (0.75 1.0 1 1)) c4( d e f) }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Modification de la signification des raccourcis pour les signes d’articulation
Les raccourcis sont répertoriés dans le fichier
‘ly/script-init.ly’, dans lequel on retrouve les variables
dashHat
, dashPlus
, dashDash
, dashBang
,
dashLarger
, dashDot
et dashUnderscore
ainsi que
leur valeur par défaut. Ces valeurs peuvent être modifiées selon vos
besoins. Il suffit par exemple, pour affecter au raccourci -+
(dashPlus
) le symbole du trille en lieu et place du +
(caractère plus), d’assigner la valeur \trill
à la variable
dashPlus
:
\relative c'' { c1-+ } dashPlus = \trill \relative c'' { c1-+ }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Déplacement vertical des liaisons d’articulation
Le positionnement vertical d’une liaison se contrôle par la propriété
positions
de l’objet Slur
. Cette propriété dispose de deux
paramètres : le premier affecte l’extrémité gauche de la liaison, le
second son extrémité droite. La valeur des paramètres n’aura aucune
influence sur le galbe de la liaison. LilyPond ne s’en servira que pour
adapter le positionnement de la courbe. Des valeurs positives décalent
la liaison vers le haut et s’utilisent pour des hampes descendantes. Des
valeurs négatives entraînent un décalage vers le bas.
\relative c' { \stemDown e4( a) \override Slur.positions = #'(1 . 1) e4( a) \override Slur.positions = #'(2 . 2) e4( a) \override Slur.positions = #'(3 . 3) e4( a) \override Slur.positions = #'(4 . 4) e4( a) \override Slur.positions = #'(5 . 5) e4( a) \override Slur.positions = #'(0 . 5) e4( a) \override Slur.positions = #'(5 . 0) e4( a) \stemUp \override Slur.positions = #'(-5 . -5) e4( a) \stemDown \revert Slur.positions e4( a) }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Déplacer les extrémités de soufflets
Les terminaisons des soufflets peuvent être décalées en jouant sur la
propriété shorten-pair
de l’objetHairpin
. Les valeurs
positives déplacent vers l’intérieur, les négatives vers l’extérieur.
Contrairement à la propriété minimum-length
, cette propriété
n’affecte que l’apparence du soufflet sans ajuster l’espacement
horizontal (y compris avec les nuances textuelles). Cette méthode est
donc appropriée aux situations dans lesquelles un soufflet requiert un
ajustement fin dans l’espace qui lui est alloué.
{ c'1~\< c'2~ c'\! \once \override Hairpin.shorten-pair = #'(2 . 2) c'1~\< c'2~ c'\! \once \override Hairpin.shorten-pair = #'(-2 . -2) c'1~\< c'2~ c'\! c'1~\p-\tweak shorten-pair #'(2 . 0)\< c'2~ c'\ffff }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Positionnement des arpeggios
L’ajustement de la taille d’une indication d’arpeggio s’effectue au travers du positionnement de ses extrémités haute ou basse.
\relative c' { <c e g b>1\arpeggio \once \override Arpeggio.positions = #'(-5 . 0) <c e g b>1\arpeggio \once \override Arpeggio.positions = #'(0 . 5) <c e g b>1\arpeggio \once \override Arpeggio.positions = #'(-5 . 5) <c e g b>1\arpeggio }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Positionnement d’une annotation à l’intérieur d’une liaison
Lorsqu’une annotation doit s’incrire à l’intérieur d’une liaison, la
propriété outside-staff-priority
doit être désactivée.
\relative c'' { \override TextScript.avoid-slur = #'inside \override TextScript.outside-staff-priority = ##f c2(^\markup { \halign #-10 \natural } d4.) c8 }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Différents styles de soufflet
Les soufflets de nuance peuvent adopter des styles différents.
\relative c'' { \override Hairpin.stencil = #flared-hairpin a4\< a a a\f a4\p\< a a a\ff a4\sfz\< a a a\! \override Hairpin.stencil = #constante-hairpin a4\< a a a\f a4\p\< a a a\ff a4\sfz\< a a a\! \override Hairpin.stencil = #flared-hairpin a4\> a a a\f a4\p\> a a a\ff a4\sfz\> a a a\! \override Hairpin.stencil = #constante-hairpin a4\> a a a\f a4\p\> a a a\ff a4\sfz\> a a a\! }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Impression de soufflets « al niente »
Des crescendos ou decrescendos al niente peuvent être indiqués de
manière graphique, en assignant vrai (#t
) à la
propriété circled-tip
, ce qui affiche un cercle à leur extrémité.
\relative c'' { \override Hairpin.circled-tip = ##t c2\< c\! c4\> c\< c2\! }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Impression du métronome et des repères sous la portée
Les indications de tempo et les marques de repère s’impriment par défaut
au-dessus de la portée. Le fait de régler en conséquence la propriété
direction
des objets MetronomeMark
et RehearsalMark
les placera au-dessous de la portée.
\layout { indent = 0 ragged-right = ##f } { % Metronome marks below the staff \override Score.MetronomeMark.direction = #DOWN \tempo 8. = 120 c''1 % Rehearsal marks below the staff \override Score.RehearsalMark.direction = #DOWN \mark \default c''1 }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Soufflets et barres de mesure
En principe, un soufflet – (de)crescendo imprimé sous forme graphique –
commence au bord gauche de la note de départ, et se termine au
bord droit de la note d’arrivée. Cependant, si la note d’arrivée
est sur un premier temps, le soufflet s’arrêtera au niveau de la
barre de mesure qui la précède. Ce comportement peut être annulé
en assignant faux (#f
) à la propriété to-barline
.
\relative c'' { e4\< e2. e1\! \override Hairpin.to-barline = ##f e4\< e2. e1\! }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Ajustement de la longueur d’un soufflet
Si un soufflet est trop court, il suffit d’ajuster la propriété
minimum-length
de l’objet Hairpin
pour l’allonger.
<< { \after 4 \< \after 2 \> \after 2. \! f'1 \override Hairpin.minimum-length = #8 \after 4 \< \after 2 \> \after 2. \! f'1 } { \repeat unfold 8 c'4 } >>
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Impression d’une même articulation des deux côtés d’une note ou d’un accord
LilyPond ne permet pas, par défaut, qu’une même articulation (accent,
flageolet, point d’orgue, etc.) se retrouve à la fois au-dessus et
au-dessous d’une note. Par exemple, c4_\fermata^\fermata
ne
donnera qu’un seul point d’orgue en dessous du do ; celui du dessus sera
tout bonnement ignoré.
On peut néanmoins accoler des scripts, tels des doigtés, à l’intérieur
d’un accord ; il peut donc y avoir autant d’articulations que de besoin,
ce qui, par voie de conséquence, permet de s’affranchir de la présence
des hampes et de positionner l’articulation relativement à la tête de
note comme dans le cas du flageolet ci-dessous. L’imitation du
traitement d’un script externe à un accord requérant un
'add-stem-support
demande de libeller la note comme étant un
accord et d’ajouter les articulations au sein de la construction
<…>
.
Un simple amendement permettra de rectifier le positionnement habituel
en surplomb : <c-\tweak direction #DOWN-\fermata^\fermata>
\relative c' { <>^"Wrong" c2_\fermata^\fermata % The second fermata is ignored! <e d'>2^\flageolet_\flageolet \stopStaff s1 \startStaff <>^"Works if written inside a chord" <e_\flageolet d'^\flageolet>2 <e_\flageolet d'^\flageolet>2 <e_\flageolet^\flageolet>2 <e_\fermata^\fermata>2 }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Slap ou pizzicato Bartok
Un slap, aussi appelé pizzicato à la Bartók, est un pizzicato où, au lieu de tirer la corde de côté comme à l’accoutumée, « on la pince en la soulevant plus fortement, et à la verticale, en la lâchant violemment. Celle-ci frappe alors la touche, et produit à la fois la note et le son percussif » (Wikipedia). Il s’indique par un cercle flanqué d’un trait vertical.
\relative c' { c4\snappizzicato <c' e g>4\snappizzicato <c' e g>4^\snappizzicato <c, e g>4_\snappizzicato }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Remplacement du signe de respiration par une coche
Les musiques vocales ou pour vents utilisent souvent une coche en tant que signe de respiration. Ceci indique une respiration qui enlève une fraction à la note précédente plutôt qu’une véritable pause comme le fait un signe sous forme de virgule. La coche peut être remontée un peu afin de l’isoler de la portée.
\relative c'' { c2 \breathe d2 \override BreathingSign.Y-offset = #2.6 \override BreathingSign.text = \markup { \musicglyph "scripts.tickmark" } c2 \breathe d2 }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Utilisation d’un arpeggioBracket
pour rendre les divisions plus évidentes
Un crochet d’arpège (arpeggioBracket
) permet de mettre en
évidence les divisions d’un pupitre en l’absence de hampe, comme on le
voit régulièrement dans les partitions pour chœur.
\include "english.ly" \score { \relative c'' { \key a \major \time 2/2 << \new Voice = "upper" << { \voiceOne \arpeggioBracket a2( b2 <b d>1\arpeggio) <cs e>\arpeggio ~ <cs e>4 } \addlyrics { \lyricmode { A -- men. } } >> \new Voice = "lower" { \voiceTwo a1 ~ a a ~ a4 \bar "|." } >> } \layout { ragged-right = ##t } }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Accords et double liaison d’articulation
Certains compositeurs utilisent deux liaisons lorsqu’ils veulent lier
des accords. Dans LilyPond, il faut pour cela activer la propriété
doubleSlurs
.
\relative c' { \set doubleSlurs = ##t <c e>4( <d f> <c e> <d f>) }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Utilisation de la propriété whiteout
Tout objet graphique peut s’imprimer sur un fond blanc afin de masquer
une partie des objets qu’il recouvre. Ceci trouve toute son utilité pour
améliorer certaines collisions, notamment dans des situations où un
repositionnement d’objets est irréaliste. Il faut alors explicitement
définir la propriété layer
afin de contrôler quels objets seront
masqués par le fond blanc. Dans l’exemple ci-dessous, la liaison est en
collision avec la métrique ; la situation est améliorée dès lors que la
portion de liaison qui traverse la métrique est masquée par
l’affectation de la propriété whiteout
à l’objet
TimeSignature
. Pour ce faire, TimeSignature
est déplacé
sur un calque au-dessus de celui de Tie
– il reste sur le calque
par défaut (1) –, puis le StaffSymbol
est placé sur un calque
supérieur à celui de TimeSignature
pour ne pas être masqué.
{ \override Score.StaffSymbol.layer = #4 \override Staff.TimeSignature.layer = #3 b'2 b'~ \once \override Staff.TimeSignature.whiteout = ##t \time 3/4 b' r4 }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ > ] |
Articulation baroque en forme de coche
On trouve régulièrement, en musique baroque, cette courte ligne verticale. Sa signification peut varier, mais elle indique le plus souvent une note plus « appuyée ». Voici comment générer ce signe particulier.
upline = \tweak stencil #(lambda (grob) (grob-interpret-markup grob #{ \markup \draw-line #'(0 . 1) #})) \stopped \relative c' { a'4^\upline a( c d')_\upline }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ Repeats > ] |
Alignement vertical des nuances sur plusieurs notes
Des nuances qui commencent, finissent ou se produisent sur une même note
auront le même alignement vertical. L’augmentation de la propriété
staff-padding
de l’objet DynamicLineSpanner
permet
d’aligner différentes nuances affectées à différentes notes.
\relative c' { \override DynamicLineSpanner.staff-padding = #4 c2\p f\mf g2\< b4\> c\! }
[ << Expressive marks ] | [Racine][Table des matières] | [ Repeats >> ] |
[ < ] | [Plus haut: Expressive marks ] | [ Repeats > ] |