Rhythms
Rhythms
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 nolets bornés 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.\)
}
|
Ajout de parties de batterie
Grâce à la puissance des outils préconfigurés tels que la fonction
\drummode et le contexte DrumStaff, la saisie de parties
pour percussions est extrêmement simplifiée : chaque composant d’une
batterie trouve sa place sur une portée dédiée (avec une clef
particulière) et les têtes de note sont spécifiques à chaque élément.
Il est également possible d’affecter un symbole particulier à chaque
élément, tout comme de restreindre le nombre de lignes de la portée.
| | drh = \drummode {
cymc4.^"crash" hhc16^"h.h." hh hhc8 hho hhc8 hh16 hh
hhc4 r4 r2
}
drl = \drummode {
bd4 sn8 bd bd4 << bd ss >>
bd8 tommh tommh bd toml toml bd tomfh16 tomfh
}
timb = \drummode {
timh4 ssh timl8 ssh r timh r4
ssh8 timl r4 cb8 cb
}
\score {
<<
\new DrumStaff \with {
instrumentName = "timbales"
drumStyleTable = #timbales-style
\override StaffSymbol.line-count = #2
\override BarLine.bar-extent = #'(-1 . 1)
}
<<
\timb
>>
\new DrumStaff \with { instrumentName = "drums" }
<<
\new DrumVoice { \stemUp \drh }
\new DrumVoice { \stemDown \drl }
>>
>>
\layout { }
\midi { \tempo 4 = 120 }
}
|
Ajustement de l’espacement des notes d’ornement
La propriété spacing-increment de Score.GraceSpacing
permet d’ajuster l’espacement d’un groupe de notes d’ornement.
| | graceNotes = {
\grace { c4 c8 c16 c32 }
c8
}
\relative c'' {
c8
\graceNotes
\override Score.GraceSpacing.spacing-increment = #2.0
\graceNotes
\revert Score.GraceSpacing.spacing-increment
\graceNotes
}
|
Alignement des numéros de mesure
Les numéros de mesure s’alignent en principe sur la droite de l’objet
dont ils dépendent. C’est normalement le coin gauche de la portée ou,
en cours de ligne, à gauche de la barre. Vous pouvez toutefois les
centrer par rapport à la barre ou les afficher à droite de la barre.
| | \relative c' {
\set Score.currentBarNumber = #111
\override Score.BarNumber.break-visibility = #all-visible
% Increase the size of the bar number by 2
\override Score.BarNumber.font-size = #2
% Print a bar number every second measure
\set Score.barNumberVisibility = #(every-nth-bar-number-visible 2)
c1 | c1
% Center-align bar numbers
\override Score.BarNumber.self-alignment-X = #CENTER
c1 | c1
% Left-align bar numbers
\override Score.BarNumber.self-alignment-X = #LEFT
c1 | c1
}
|
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
}
|
Appoggiature avant une barre de mesure
Par défaut, appogiatures et autres notes d’ornement sur le premier
temps d’une mesure s’impriment après la barre. Elles peuvent toutefois
précéder la barre grâce à l’insertion d’une barre invisible puis d’une
visible, comme indiqué ici.
| | {
R1
%% default
\appoggiatura d''8 c''4 r2.
%% cheated
\appoggiatura { \bar "" d''8 \bar "|" } c''4 r2.
}
|
Subdivision de ligatures automatiques
Dès lors que la propriété subdivideBeams aura été activée, une
ligature sera subdivisée selon les préceptes de beatLength.
| | \new Staff {
\relative c'' {
<<
{
\voiceOne
\set subdivideBeams = ##t
b32[ a g f c' b a g
b32^"subdivide beams" a g f c' b a g]
}
\new Voice {
\voiceTwo
b32_"default"[ a g f c' b a g
b32 a g f c' b a g]
}
>>
\oneVoice
\set baseMoment = #(ly:make-moment 1/8)
\set beatStructure = 2,2,2,2
b32^"baseMoment 1 8"[ a g f c' b a g]
\set baseMoment = #(ly:make-moment 1/16)
\set beatStructure = 4,4,4,4
b32^"baseMoment 1 16"[ a g f c' b a g]
}
}
|
Changement automatique des durées
shiftDurations permet de modifier la longueur des notes d’un
morceau. Cette instruction prend deux arguments : un coefficient
d’échelonnement (une puissance de deux) et un nombre de points
d’augmentation (entier positif).
| | \paper { indent = 0 }
music = \relative c'' { a1 b2 c4 d8 r }
\score {
\new Voice {
\time 4/2
\music
\time 4/4
\shiftDurations #1 #0 { \music }
\time 2/4
\shiftDurations #2 #0 { \music }
\time 4/1
\shiftDurations #-1 #0 { \music }
\time 8/1
\shiftDurations #-2 #0 { \music }
\time 6/2
\shiftDurations #0 #1 { \music }
\time 7/2
\shiftDurations #0 #2 { \music }
}
}
|
Définition de règles de ligature pour la partition
Les règles de ligature définies au niveau du contexte Score
s’appliqueront à toutes les portées. Il est toutefois possible de
moduler au niveau Staff ou Voice :
| | \relative c'' {
\time 5/4
% Set default beaming for all staves
\set Score.baseMoment = #(ly:make-moment 1/8)
\set Score.beatStructure = 3,4,3
<<
\new Staff {
c8 c c c c c c c c c
}
\new Staff {
% Modify beaming for just this staff
\set Staff.beatStructure = 6,4
c8 c c c c c c c c c
}
\new Staff {
% Inherit beaming from Score context
<<
{
\voiceOne
c8 c c c c c c c c c
}
% Modify beaming for this voice only
\new Voice {
\voiceTwo
\set Voice.beatStructure = 6,4
a8 a a a a a a a a a
}
>>
}
>>
}
|
Ligature au moment d’un saut de ligne
Il est normalement impensable qu’un saut de ligne tombe au milieu d’une
ligature. LilyPond permet néanmoins de l’obtenir.
| | \relative c'' {
\override Beam.breakable = ##t
c8 c[ c] c[ c] c[ c] c[ \break
c8] c[ c] c[ c] c[ c] c
}
|
Ligature et directions de hampe inversées
LilyPond insère automatiquement des ligatures coudées – certaines
hampes vers le haut, d’autres vers le bas – lorsqu’il détecte un
intervalle important entre des têtes de notes. Ce comportement peut
être changé par l’intermédiaire de l’objet auto-knee-gap –
défini par défaut à 5,5 espaces, plus la largeur et la pente de la
ligature en question.
| | {
f8 f''8 f8 f''8
\override Beam.auto-knee-gap = #6
f8 f''8 f8 f''8
}
|
Modifier l’apparence d’un silence multimesure
Dans le cas où ce silence dure moins de dix mesures, LilyPond imprime sur
la portée des « silences d’église » – Kirchenpause en
allemand – et qui sont une simple suite de rectangles. La propriété
expand-limit permet d’obtenir un silence unique :
| | \relative c'' {
\compressMMRests {
R1*2 | R1*5 | R1*9
\override MultiMeasureRest.expand-limit = #3
R1*2 | R1*5 | R1*9
}
}
|
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 |
}
|
Changement de tempo sans indication sur la partition
Vous pouvez indiquer un changement de tempo pour le fichier MIDI sans
pour autant l’imprimer. Il suffit alors de le rendre invisible aux
musiciens.
| | \score {
\new Staff \relative c' {
\tempo 4 = 160
c4 e g b
c4 b d c
\set Score.tempoHideNote = ##t
\tempo 4 = 96
d,4 fis a cis
d4 cis e d
}
\layout { }
\midi { }
}
|
Modifier l’apparence du chiffre de n-olet
LilyPond imprime par défaut le numérateur de la fraction fournie en
argument à la commande uplet du côté du crochet de n-olet.
Il est toutefois possible d’imprimer la fraction entière
num:den, voire de ne rien imprimer du tout.
| | \relative c'' {
\tuplet 3/2 { c8 c c }
\tuplet 3/2 { c8 c c }
\override TupletNumber.text = #tuplet-number::calc-fraction-text
\tuplet 3/2 { c8 c c }
\omit TupletNumber
\tuplet 3/2 { c8 c c }
}
|
Modification de la métrique au sein d’un fragment polymétrique à l’aide de \scaleDurations
La propriété measureLength, conjointement avec
measurePosition, détermine l’endroit où une barre de mesure est
requise. L’utilisation d’un \scaleDurations a l’inconvénient
que l’échelonnement des durées rend compliqués les changements de
métrique. Il est nécessaire en pareil cas de définir manuellement
measureLength, avec un appel à ly:make-moment. Le second
argument devra être identique au deuxième argument de
\scaleDurations.
| | \layout {
\context {
\Score
\remove "Timing_translator"
\remove "Default_bar_line_engraver"
}
\context {
\Staff
\consists "Timing_translator"
\consists "Default_bar_line_engraver"
}
}
<<
\new Staff {
\scaleDurations 8/5 {
\time 6/8
\set Timing.measureLength = #(ly:make-moment 6/5)
b8 b b b b b
\time 2/4
\set Timing.measureLength = #(ly:make-moment 4/5)
b4 b
}
}
\new Staff {
\clef bass
\time 2/4
c2 d e f
}
>>
|
Notation pour psalmodie
Ce style de notation permet d’indiquer la mélodie d’une psalmodie
lorsque les strophes sont de longueur inégale.
| | stemOff = \hide Staff.Stem
stemOn = \undo \stemOff
\score {
\new Staff \with { \remove "Time_signature_engraver" }
{
\key g \minor
\cadenzaOn
\stemOff a'\breve bes'4 g'4
\stemOn a'2 \bar "||"
\stemOff a'\breve g'4 a'4
\stemOn f'2 \bar "||"
\stemOff a'\breve^\markup { \italic flexe }
\stemOn g'2 \bar "||"
}
}
|
Métrique décomposée
Des métriques telles que « 5/8 » peuvent s’interpréter sous une forme
décomposée – « 3/8 + 2/8 » par exemple – qui combine plusieurs
métriques. LilyPond est capable de rendre ce type de notation, plus
facile à lire et à interpréter, en imprimant cette métrique composite
et en adaptant les règles de ligature automatique en conséquence.
| | \relative c' {
\compoundMeter #'((2 8) (3 8))
c8 d e fis gis
c8 fis, gis e d
c8 d e4 gis8
}
|
Signes de direction, signes de sous-groupe
Les règles de ligature par mesure sont gérées par la propriété de
contexte beatStructure. Ses valeurs par défaut sont
répertoriées, par métrique, dans le fichier
scm/time-signature-settings.scm. Elles sont modifiables
grâce à la commande \set.
La fonction Scheme set-time-signature permet quant à elle de
définir à la fois la métrique et la pulsation. Celle-ci prend trois
arguments : le nombre de pulsations, la durée de la pulsation et le
regroupement des pulsations dans la mesure. \time et
set-time-signature s’appliquent tous deux au contexte
Timing ; ils ne redéfiniront donc pas les valeurs de
beatStructure ou baseMoment lorsqu’elles sont
modifiées dans un contexte de niveau inférieur comme Voice par
exemple.
Si l’on fait appel au Measure_grouping_engraver, la fonction
set-time-signature créera aussi des symboles
MeasureGrouping. Ces symboles aident à la lecture des œuvres
modernes à la rythmique complexe. Dans l’exemple qui suit, la mesure à
9/8 est divisée en 2, 2, 2 et 3, alors que la mesure à 5/8 répond aux
règles par défaut contenues dans le fichier
scm/time-signature-settings.scm.
| | \score {
\new Voice \relative c'' {
\time 9/8
g8 g d d g g a( bes g) |
\set Timing.beatStructure = 2,2,2,3
g8 g d d g g a( bes g) |
\time 4,5 9/8
g8 g d d g g a( bes g) |
\time 5/8
a4. g4 |
}
\layout {
\context {
\Staff
\consists "Measure_grouping_engraver"
}
}
}
|
Adaptation de l’alignement des numéros de mesure
L’alignement des numéros de mesure par la gauche peut générer des
problèmes de chevauchement, notamment avec les crochets de regroupement
de portées. L’exemple ci-dessous offre une solution en alignant par la
droite le numéro de la mesure suivant un saut de ligne.
| | consistentlyLeftAlignedBarNumbers = {
\override Score.BarNumber.break-visibility = #end-of-line-invisible
\override Score.BarNumber.self-alignment-X =
#(lambda (grob)
(let ((break-dir (ly:item-break-dir grob)))
(if (= break-dir RIGHT) RIGHT LEFT)))
}
\new ChoirStaff <<
\new Staff {
\relative c' {
\set Score.barNumberVisibility = #(every-nth-bar-number-visible 3)
\bar ""
\consistentlyLeftAlignedBarNumbers
\set Score.currentBarNumber = #112
\repeat unfold 8 { R1 }
\break
\repeat unfold 9 { R1 }
\break
\repeat unfold 7 { R1 }
}
}
\new Staff {
\relative c' {
\repeat unfold 24 { R1 }
}
}
>>
\layout {
indent = #0
ragged-right = ##t
ragged-last = ##t
}
|
Contrôle de l’impression des crochets de n-olet
Selon la tradition, les crochets indicateurs de n-olet sont toujours
imprimés, sauf dans le cas où ils seraient de la même longueur qu’une
ligature. LilyPond permet, au travers de la propriété
bracket-visibility, de contôler précisément leur affichage :
déterminée à #t, ils seront toujours imprimés ; #f permet
de ne jamais les imprimer – donc omettre l’objet TupletBracket
–, et #'if-no-beam les imprimera en l’absence de ligature
(comportement par défaut).
| | music = \relative c'' {
\tuplet 3/2 { c16[ d e } f8]
\tuplet 3/2 { c8 d e }
\tuplet 3/2 { c4 d e }
}
\new Voice {
\relative c' {
<< \music s4^"default" >>
\override TupletBracket.bracket-visibility = #'if-no-beam
<< \music s4^"'if-no-beam" >>
\override TupletBracket.bracket-visibility = ##t
<< \music s4^"#t" >>
\override TupletBracket.bracket-visibility = ##f
<< \music s4^"#f" >>
\omit TupletBracket
<< \music s4^"omit" >>
}
}
|
Création d’une indication métronomique sous forme d’étiquette
Vous pouvez créer des indications de tempo sous la forme d’étiquettes
textuelles – des objets markup –, notamment des équivalences.
Cependant, elles n’apparaîtront pas dans le fichier MIDI.
| | \relative c' {
\tempo \markup {
\concat {
(
\smaller \general-align #Y #DOWN \note {16.} #1
" = "
\smaller \general-align #Y #DOWN \note {8} #1
)
}
}
c1
c4 c' c,2
}
|
Dessin à main levée de liaisons de tenue
Il est possible de graver manuellement les liaisons de tenue, en
modifiant la propriété tie-configuration. Pour chaque paire, le
premier nombre indique la distance à la portée, en espaces de portée, et
le second la direction (1 pour haut, -1 pour bas).
Notez bien que LilyPond fait la distinction, au niveau du premier
nombre, entre valeur exacte et valeur inexacte. Dans le cas d’une
valeur exacte – autrement dit un entier ou une fraction comme
(/ 4 5) – celle-ci servira de position verticale brute, ensuite
afinée par LilyPond de sorte à éviter les lignes de la portée. Dans le
cas d’une valeur inexacte, tel un nombre à virgule flottante, c’est elle
qui servira à positionner verticalement, sans ajustement.
| | \relative c' {
<c e g>2~ <c e g>
\override TieColumn.tie-configuration =
#'((0.0 . 1) (-2.0 . 1) (-4.0 . 1))
<c e g>2~ <c e g>
\override TieColumn.tie-configuration =
#'((0 . 1) (-2 . 1) (-4 . 1))
<c e g>2~ <c e g>
}
|
Impression de trémolo avec ligature flottante
Lorsque la durée totale d’un trémolo est inférieure à la noire,
égale une blanche, ou bien entre une blanche et une ronde, il est
d’usage que toutes les ligatures soient en contact avec les
hampes. Certains styles de gravure font cependant apparaître des
ligatures détachées, centrées entre les hampes. Pour ce type de
trémolo, le nombre de hampes flottantes se gère au travers de la
propriété gap-count de l’objet Beam, et l’écart
entre ligature et hampe se définit par la propriété gap.
| | \relative c'' {
\repeat tremolo 8 { a32 f }
\override Beam.gap-count = #1
\repeat tremolo 8 { a32 f }
\override Beam.gap-count = #2
\repeat tremolo 8 { a32 f }
\override Beam.gap-count = #3
\repeat tremolo 8 { a32 f }
\override Beam.gap-count = #3
\override Beam.gap = #1.33
\repeat tremolo 8 { a32 f }
\override Beam.gap = #1
\repeat tremolo 8 { a32 f }
\override Beam.gap = #0.67
\repeat tremolo 8 { a32 f }
\override Beam.gap = #0.33
\repeat tremolo 8 { a32 f }
}
|
Plusieurs triolets avec une seule commande \tuplet
La propriété tupletSpannerDuration spécifie la longueur voulue de
chaque crochet. Avec elle, vous pouvez faire plusieurs n-olets en ne
tapant \tuplet qu’une fois, ce qui évite une longue saisie.
Il existe différents moyens de définir tupletSpannerDuration.
La commande \tupletSpan lui affecte une durée arbitraire qui
sera réinitialisée dès l’intervention d’une durée à \default.
Vous pouvez aussi opter pour fournir un argument supplémentaire à la
commande \tuplet.
| | \relative c' {
\time 2/4
\tupletSpan 4
\tuplet 3/2 { c8^"\\tupletSpan 4" c c c c c }
\tupletSpan \default
\tuplet 3/2 { c8^"\\tupletSpan \\default" c c c c c }
\tuplet 3/2 4 { c8^"\\tuplet 3/2 4 {...}" c c c c c }
}
|
Crochet rectiligne et débordement de ligature
En combinant stemLeftBeamCount, stemRightBeamCount et des
paires de [], vous pourrez obtenir des crochets rectilignes et
des ligatures qui débordent à leurs extrémités.
Pour des crochets rectilignes à droite sur des notes isolées, il suffit
d’ajouter une paire d’indicateurs de ligature [] et de déterminer
stemLeftBeamCount à zéro, comme dans l’exemple 1.
Pour des crochets rectiligne à gauche, c’est stemRightBeamCount
qu’il faudra déterminer (exemple 2).
Pour que les barres de ligature débordent sur la droite,
stemRightBeamCount doit avoir une valeur positive ; pour un
débordement à gauche, c’est sur stemLeftBeamCount qu’il faut
jouer. Tout ceci est illustré par l’exemple 3.
Il est parfois judicieux, lorsqu’une note est encadrée de silences, de
l’affubler de crochets rectilignes de part et d’autre. L’exemple 4
montre qu’il suffit d’adjoindre à cette note un [].
(Notez bien que \set stemLeftBeamCount sera toujours
synonyme de \once \set. Autrement dit, la détermination
des ligatures n’est pas « permanente » ; c’est la raison pour
laquelle les crochets du 16[] isolé du dernier exemple n’ont
rien à voir avec le \set indiqué deux notes auparavant.)
| | \score {
<<
% Example 1
\new RhythmicStaff {
\set stemLeftBeamCount = #0
c16[]
r8.
}
% Example 2
\new RhythmicStaff {
r8.
\set stemRightBeamCount = #0
16[]
}
% Example 3
\new RhythmicStaff {
16 16
\set stemRightBeamCount = #2
16 r r
\set stemLeftBeamCount = #2
16 16 16
}
% Example 4
\new RhythmicStaff {
16 16
\set stemRightBeamCount = #2
16 r16
16[]
r16
\set stemLeftBeamCount = #2
16 16
}
>>
}
|
Fixation arbitraire du numéro de repère de départ
Voici comment initialiser arbitrairement une indication automatique de
repère, qu’elle soit alphabétique ou numérique :
| | \relative c'' {
c1 \mark \default
c1 \mark \default
c1 \mark \default
c1 \mark #14
c1 \mark \default
c1 \mark \default
c1 \mark \default
c1
}
|
Génération de crochets personnalisés
Une fonction Scheme personnalisée permet de redéfinir la propriété
stencil de l’objet Flag, de sorte à modifier le glyphe
utilisé pour les crochets de croche.
| | #(define-public (weight-flag grob)
(let* ((stem-grob (ly:grob-parent grob X))
(log (- (ly:grob-property stem-grob 'duration-log) 2))
(is-up? (eqv? (ly:grob-property stem-grob 'direction) UP))
(yext (if is-up? (cons (* log -0.8) 0) (cons 0 (* log 0.8))))
(flag-stencil (make-filled-box-stencil '(-0.4 . 0.4) yext))
(stroke-style (ly:grob-property grob 'stroke-style))
(stroke-stencil (if (equal? stroke-style "grace")
(make-line-stencil 0.2 -0.9 -0.4 0.9 -0.4)
empty-stencil)))
(ly:stencil-add flag-stencil stroke-stencil)))
% Create a flag stencil by looking up the glyph from the font
#(define (inverted-flag grob)
(let* ((stem-grob (ly:grob-parent grob X))
(dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u"))
(flag (retrieve-glyph-flag "" dir "" grob))
(line-thickness (ly:staff-symbol-line-thickness grob))
(stem-thickness (ly:grob-property stem-grob 'thickness))
(stem-width (* line-thickness stem-thickness))
(stroke-style (ly:grob-property grob 'stroke-style))
(stencil (if (null? stroke-style)
flag
(add-stroke-glyph flag stem-grob dir stroke-style "")))
(rotated-flag (ly:stencil-rotate-absolute stencil 180 0 0)))
(ly:stencil-translate rotated-flag (cons (- (/ stem-width 2)) 0))))
snippetexamplenotes =
{
\autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64
}
{
\override Score.RehearsalMark.self-alignment-X = #LEFT
\time 1/4
\mark "Normal flags"
\snippetexamplenotes
\mark "Custom flag: inverted"
\override Flag.stencil = #inverted-flag
\snippetexamplenotes
\mark "Custom flag: weight"
\override Flag.stencil = #weight-flag
\snippetexamplenotes
\mark "Revert to normal"
\revert Flag.stencil
\snippetexamplenotes
}
|
Rythmique et guitare
En matière de notation pour guitare, il arrive que soient indiqués les
« coups de gratte » en plus de la mélodie, grilles d’accords et
diagrammes de tablature.
| | \include "predefined-guitar-fretboards.ly"
<<
\new ChordNames {
\chordmode {
c1 | f | g | c
}
}
\new FretBoards {
\chordmode {
c1 | f | g | c
}
}
\new Voice \with {
\consists "Pitch_squash_engraver"
} {
\relative c'' {
\improvisationOn
c4 c8 c c4 c8 c
f4 f8 f f4 f8 f
g4 g8 g g4 g8 g
c4 c8 c c4 c8 c
}
}
\new Voice = "melody" {
\relative c'' {
c2 e4 e4
f2. r4
g2. a4
e4 c2.
}
}
\new Lyrics {
\lyricsto "melody" {
This is my song.
I like to sing.
}
}
>>
|
Indication personnalisée d’une polymétrie complexe
Bien que la métrique complexe ne soit pas l’élément primordial de cet
exemple, elle permet d’indiquer la pulsation de cette pièce qui, par
ailleurs, constitue le canevas d’une chanson traditionnelle des
Balkans.
| | melody = \relative c'' {
\key g \major
\compoundMeter #'((3 8) (2 8) (2 8) (3 8) (2 8) (2 8)
(2 8) (2 8) (3 8) (2 8) (2 8))
c8 c c d4 c8 c b c b a4 g fis8 e d c b' c d e4-^ fis8 g \break
c,4. d4 c4 d4. c4 d c2 d4. e4-^ d4
c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 \break
c4. d4 c4 d4. c4 d c2 d4. e4-^ d4
c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 \break
}
drum = \new DrumStaff \drummode {
\bar ".|:" bd4.^\markup { Drums } sn4 bd \bar ";" sn4.
bd4 sn \bar ";" bd sn bd4. sn4 bd \bar ":|."
}
\new Staff \with {
instrumentName = \markup { \concat { "B" \flat " Sop." } }
}
{
\melody
\drum
}
|
Recours à la propriété ’transparent pour rendre des objets invisibles
Une modification de la propriété transparent permet d’imprimer un
objet « à l’encre sympathique » : l’objet n’est pas affiché bien que tous
ses attributs soient préservés. L’objet en question occupe donc sa
place, est pris en compte lors de collisions, et peut se voir attaché
liaisons ou ligatures.
Cet exemple illustre la manière de connecter deux voix par une liaison
de prolongation. Les liaisons de prolongation ne peuvent normalement
intervenir que dans la même voix. Dès lors que la liaison est entamée
dans une autre voix et que la première hampe ascendante est rendue
transparente dans cette même voix, la liaison semble passer d’une voix à
l’autre.
| | \relative {
\time 2/4
<<
{
\once \hide Stem
\once \override Stem.length = #8
b'8 ~ 8\noBeam
\once \hide Stem
\once \override Stem.length = #8
g8 ~ 8\noBeam
}
\\
{
b8 g g e
}
>>
}
|
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)
}
|
Contrôle manuel du positionnement des ligatures
Le positionnement et la pente des ligatures peuvent être contrôlés
manuellement à l’aide d’une adaptation de la propriété positions
de l’objet Beam.
| | \relative c' {
\time 2/4
% from upper staff-line (position 2) to center (position 0)
\override Beam.positions = #'(2 . 0)
c8 c
% from center to one above center (position 1)
\override Beam.positions = #'(0 . 1)
c8 c
}
|
Fusion de silences multimesures dans une partie polyphonique
Dans le cadre d’un portée polyphonique, les silences multimesures sont
positionnés différemment selon la voix à laquelle ils appartiennent.
Le réglage suivant permet néanmoins de les imprimer sur une même ligne.
| | normalPos = \revert MultiMeasureRest.direction
{
<<
{
c''1
R1
c''1
\normalPos
R1
}
\\
{
c'1
R1
c'1
\normalPos
R1
}
>>
}
|
Modification de la longueur d’un crochet de n-olet
Les crochets indiquant un n-olet peuvent être prolongés jusqu’à un
élément de rupture ou jusqu’à la note suivante. LilyPond termine un
crochet de n-olet sur la droite de sa dernière tête de note par défaut ;
un crochet de pleine longueur s’étendra plus avant, soit jusqu’à la note
suivante et en traversant tous les éléments non rythmiques, soit sur
tout l’espace précédant le prochain élément de notation, que ce soit une
clef, une métrique, une armure ou une autre note. L’exemple suivant
illustre la manière d’activer ces deux fonctionnalités.
| | \new RhythmicStaff {
% Set tuplets to be extendable...
\set tupletFullLength = ##t
% ...to cover all items up to the next note
\set tupletFullLengthNote = ##t
\time 2/4
\tuplet 3/2 { c4 4 4 }
% ...or to cover just whitespace
\set tupletFullLengthNote = ##f
\time 4/4
\tuplet 5/4 { 4 1 }
\time 3/4
2.
}
|
Déplacement des notes pointées dans une polyphonie
Une note pointée appartenant à la voix supérieure d’une portée
polyphonique sera par défaut décalée vers la droite afin d’éviter les
collisions avec les autres voix. Ce comportement peut être outrepassé à
l’aide de la propriété prefer-dotted-right de
NoteCollision.
| | \new Staff \relative c' <<
{
f2. f4
\override Staff.NoteCollision.prefer-dotted-right = ##f
f2. f4
\override Staff.NoteCollision.prefer-dotted-right = ##t
f2. f4
}
\\
{ e4 e e e e e e e e e e e }
>>
|
Contrôle de la taille d’un silence multimesure
Les silences multimesure ont une largeur relative à leur durée totale,
contrôlée par MultiMeasureRest.space-increment. Sa valeur par
défaut est fixée à 2.0.
| | \relative c' {
\compressEmptyMeasures
R1*2 R1*4 R1*64 R1*16
\override Staff.MultiMeasureRest.space-increment = 2.5
R1*2 R1*4 R1*64 R1*16
}
|
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
}
}
|
N-olets au chiffrage inhabituel
LilyPond sait aussi gérer des n-olets dont le chiffrage imprimé ne
correspond pas exactement à la fraction de mesure à laquelle ils se
réfèrent, tout comme ceux auxquels une valeur de note vient en
complément du chiffre.
| | \relative c'' {
\once \override TupletNumber.text =
#(tuplet-number::non-default-tuplet-denominator-text 7)
\tuplet 3/2 { c4. c4. c4. c4. }
\once \override TupletNumber.text =
#(tuplet-number::non-default-tuplet-fraction-text 12 7)
\tuplet 3/2 { c4. c4. c4. c4. }
\once \override TupletNumber.text =
#(tuplet-number::append-note-wrapper
(tuplet-number::non-default-tuplet-fraction-text 12 7) (ly:make-duration 3 0))
\tuplet 3/2 { c4. c4. c4. c4. }
\once \override TupletNumber.text =
#(tuplet-number::append-note-wrapper
tuplet-number::calc-denominator-text (ly:make-duration 2 0))
\tuplet 3/2 { c8 c8 c8 c8 c8 c8 }
\once \override TupletNumber.text =
#(tuplet-number::append-note-wrapper
tuplet-number::calc-fraction-text (ly:make-duration 2 0))
\tuplet 3/2 { c8 c8 c8 c8 c8 c8 }
\once \override TupletNumber.text =
#(tuplet-number::fraction-with-notes (ly:make-duration 2 1) (ly:make-duration 3 0))
\tuplet 3/2 { c4. c4. c4. c4. }
\once \override TupletNumber.text =
#(tuplet-number::non-default-fraction-with-notes 12 (ly:make-duration 3 0) 4 (ly:make-duration 2 0))
\tuplet 3/2 { c4. c4. c4. c4. }
}
|
Dénombrer une unique mesure de silence
Les silences multimesures affichent leur longueur sauf s’il n’y a qu’une
seule mesure. Ceci peut se modifier en réglant
restNumberThreshold.
| | {
\compressEmptyMeasures
R1 R1*10 R1*11 \bar "||"
\set restNumberThreshold = 0
R1 R1*10 R1*11 \bar "||"
\set restNumberThreshold = 10
R1 R1*10 R1*11
}
|
PartCombine et autoBeamOff
La fonction \autoBeamOff dans le cadre d’un \partCombine
agit de façon bien particulière ; c’est pourquoi il vaut mieux tout
d’abord recourir à
\set Staff.autobeaming = ##f
pour désactiver les ligatures automatiques pour l’ensemble de la portée
concernée.
L’instruction \partCombine fonctionne apparemment sur la base de
trois voix : solo hampes montantes, solo hampes descendantes et ensemble
hampes montantes.
Lorsque \autoBeamOff apparaît dans le premier argument de la
combinaison, il s’applique à la voix active à ce moment précis, qu’il
s’agisse du solo hampes montantes ou du combiné hampes montantes.
Lorsqu’elle est introduite dans le second argument, la commande
\autoBeamOff s’appliquera au solo hampes descendantes.
Vous devrez donc, afin que \autoBeamOff soit pleinement
opérationnel dans le cadre d’un \partCombine, l’introduire aux
trois niveaux.
| | {
%\set Staff.autoBeaming = ##f % turns off all autobeaming
\partCombine
{
\autoBeamOff % applies to split up stems
\repeat unfold 4 a'16
%\autoBeamOff % applies to combined up stems
\repeat unfold 4 a'8
\repeat unfold 4 a'16
}
{
\autoBeamOff % applies to down stems
\repeat unfold 4 f'8
\repeat unfold 8 f'16 |
}
}
|
Exemple pour percussions
Ce court exemple est tiré de « L’histoire du Soldat » de Stravinsky.
| | #(define mydrums '((bassdrum default #t 4)
(snare default #t -4)
(tambourine default #t 0)))
global = {
\time 3/8 s4.
\time 2/4 s2*2
\time 3/8 s4.
\time 2/4 s2
}
drumsA = {
\context DrumVoice <<
{ \global }
{ \drummode {
\autoBeamOff
\stemDown sn8 \stemUp tamb s8 |
sn4 \stemDown sn4 |
\stemUp tamb8 \stemDown sn8 \stemUp sn16 \stemDown sn \stemUp sn8 |
\stemDown sn8 \stemUp tamb s8 |
\stemUp sn4 s8 \stemUp tamb
}
}
>>
}
drumsB = {
\drummode {
s4 bd8 s2*2 s4 bd8 s4 bd8 s8
}
}
\layout {
indent = #40
}
\score {
\new StaffGroup <<
\new DrumStaff \with {
instrumentName = \markup {
\center-column {
"Tambourine"
"et"
"caisse claire s. timbre"
}
}
drumStyleTable = #(alist->hash-table mydrums)
}
\drumsA
\new DrumStaff \with {
instrumentName = #"Grosse Caisse"
drumStyleTable = #(alist->hash-table mydrums)
}
\drumsB
>>
}
|
Saut de ligne au milieu d’un n-olet avec ligature
Cet exemple peu académique démontre comment il est possible d’insérer un
saut de ligne dans un n-olet portant une ligature. Ces ligatures doivent
toutefois être explicites.
| | \layout {
\context {
\Voice
% Permit line breaks within tuplets
\remove "Forbid_line_break_engraver"
% Allow beams to be broken at line breaks
\override Beam.breakable = ##t
}
}
\relative c'' {
a8
\repeat unfold 5 { \tuplet 3/2 { c[ b a] } }
% Insert a manual line break within a tuplet
\tuplet 3/2 { c[ b \bar "" \break a] }
\repeat unfold 5 { \tuplet 3/2 { c[ b a] } }
c8
}
|
Positionnement des ligatures de notes d’ornement à la hauteur de celles des notes normales
La ligature de notes se trouvant sur des lignes supplémentaires est
généralement centrée sur la portée. Les notes d’ornement ayant une
hampe raccourcie, leur ligature peut se retrouver en dehors de la portée
lorsqu’elles sont sur des lignes supplémentaires. LilyPond permet de
rallonger les hampes en pareil cas.
| | \relative c {
f8[ e]
\grace {
f8[ e]
\override Stem.no-stem-extend = ##f
f8[ e]
\revert Stem.no-stem-extend
}
f8[ e]
}
|
Positionnement des notes d’ornement avec espace flottant
Lorsqu’est activée la propriété strict-grace-spacing,
l’espacement des notes d’ornement se fera de manière « élastique ».
Autrement dit, elles seront décollées de leur note de rattachement :
LilyPond commence par espacer les notes normales, puis les ornements
sont placés à la gauche de leur note de rattachement.
| | \relative c'' {
<<
\override Score.SpacingSpanner.strict-grace-spacing = ##t
\new Staff \new Voice {
\afterGrace c4 { c16[ c8 c16] }
c8[ \grace { b16 d } c8]
c4 r
}
\new Staff {
c16 c c c c c c c c4 r
}
>>
}
|
Positionnement des silences multimesures
Si l’on peut positionner verticalement un silence simple en le
rattachant à une note, il n’en va pas de même pour un silence
multimesure. Néanmoins, et uniquement dans le cadre de musique
polyphonique, les silences multimesures sont positionnés différemment
selon qu’ils appartiennent à une voix au numéro pair ou impair. Le
positionnement des silences multimesures peut se contrôler ainsi :
| | \relative c'' {
% Multi-measure rests by default are set under the fourth line
R1
% They can be moved using an override
\override MultiMeasureRest.staff-position = #-2
R1
\override MultiMeasureRest.staff-position = #0
R1
\override MultiMeasureRest.staff-position = #2
R1
\override MultiMeasureRest.staff-position = #3
R1
\override MultiMeasureRest.staff-position = #6
R1
\revert MultiMeasureRest.staff-position
\break
% In two Voices, odd-numbered voices are under the top line
<< { R1 } \\ { a1 } >>
% Even-numbered voices are under the bottom line
<< { a1 } \\ { R1 } >>
% Multi-measure rests in both voices remain separate
<< { R1 } \\ { R1 } >>
% Separating multi-measure rests in more than two voices
% requires an override
<< { R1 } \\ { R1 } \\
\once \override MultiMeasureRest.staff-position = #0
{ R1 }
>>
% Using compressed bars in multiple voices requires another override
% in all voices to avoid multiple instances being printed
\compressMMRests
<<
\revert MultiMeasureRest.direction
{ R1*3 }
\\
\revert MultiMeasureRest.direction
{ R1*3 }
>>
}
|
Préservation de l’indication de n-olet lors d’un repère final
L’ajout d’une marque-repère en fin de pièce peut entraîner la perte de
la dernière indication de n-olet. La désactivation de
TupletBracket.full-length-to-extent pallie ce problème.
| | % due to issue 2362 a long mark such as
% \mark "Composed Feb 2007 - Feb 2008"
% cannot be used here.
\new Staff {
\set tupletFullLength = ##t
\time 1/8
\tuplet 3/2 8 { c'16 c' c' c' c' c' c' c' c' }
\override Score.RehearsalMark.break-visibility = ##(#t #t #t)
\override Score.RehearsalMark.direction = #DOWN
\override Score.RehearsalMark.self-alignment-X = #RIGHT
\mark "1234"
}
\new Staff {
\set tupletFullLength = ##t
\override TupletBracket.full-length-to-extent = ##f
\time 1/8
\tuplet 3/2 8 { c'16 c' c' c' c' c' c' c' c' }
\override Score.RehearsalMark.break-visibility = ##(#t #t #t)
\override Score.RehearsalMark.direction = #DOWN
\override Score.RehearsalMark.self-alignment-X = #RIGHT
\mark "1234"
}
|
Imprimer les numéros de mesure à intervalle régulier
Vous pouvez imprimer un numéro de mesure à intervalle régulier plutôt
qu’en tête de chaque ligne seulement, en recourant à la propriété
barNumberVisibility. Voici comment afficher le numéro toutes les
deux mesures sauf en fin de ligne.
| | \relative c' {
\override Score.BarNumber.break-visibility = #end-of-line-invisible
\set Score.currentBarNumber = #11
% Permit first bar number to be printed
\bar ""
% Print a bar number every second measure
\set Score.barNumberVisibility = #(every-nth-bar-number-visible 2)
c1 | c | c | c | c
\break
c1 | c | c | c | c
}
|
Inscrire le numéro de mesure dans un cadre ou un cercle
Les numéros de mesure peuvent être encadrés ou entourés d’un cercle.
| | \relative c' {
% Prevent bar numbers at the end of a line and permit them elsewhere
\override Score.BarNumber.break-visibility = #end-of-line-invisible
\set Score.barNumberVisibility = #(every-nth-bar-number-visible 4)
% Increase the size of the bar number by 2
\override Score.BarNumber.font-size = #2
% Draw a box round the following bar number(s)
\override Score.BarNumber.stencil
= #(make-stencil-boxer 0.1 0.25 ly:text-interface::print)
\repeat unfold 5 { c1 }
% Draw a circle round the following bar number(s)
\override Score.BarNumber.stencil
= #(make-stencil-circler 0.1 0.25 ly:text-interface::print)
\repeat unfold 4 { c1 } \bar "|."
}
|
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
}
|
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 ou 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
}
|
Impression de musique aux métriques différentes
Bien qu’ayant des métriques bien différentes, les deux parties
ci-dessous présentées restent synchrones. Les barres de mesure ne
peuvent plus être gérées au niveau du contexte Score ; les
Default_barline_engraver et Timing_translator doivent être
déplacés du contexte Score au contexte Staff afin de
permettre des barres de mesure individualisées.
Le Bar_number_engraver devra lui aussi être déplacé, puisqu’il
dépend de propriétés attachées au Timing_translator, afin de
numéroter les mesures. L’utilisation d’un bloc \with dans la
portée concernée permettra un affichage des numéros de mesure.
| | \paper {
indent = #0
ragged-right = ##t
}
global = { \time 3/4 { s2.*3 } \bar "" \break { s2.*3 } }
\layout {
\context {
\Score
\remove "Timing_translator"
\remove "Default_bar_line_engraver"
\remove "Bar_number_engraver"
\override SpacingSpanner.uniform-stretching = ##t
\override SpacingSpanner.strict-note-spacing = ##t
proportionalNotationDuration = #(ly:make-moment 1/64)
}
\context {
\Staff
\consists "Timing_translator"
\consists "Default_bar_line_engraver"
}
\context {
\Voice
\remove "Forbid_line_break_engraver"
tupletFullLength = ##t
}
}
Bassklarinette = \new Staff \with {
\consists "Bar_number_engraver"
barNumberVisibility = #(every-nth-bar-number-visible 2)
\override BarNumber.break-visibility = #end-of-line-invisible
} <<
\global {
\bar "|"
\clef treble
\time 3/8
d''4.
\bar "|"
\time 3/4
r8 des''2( c''8)
\bar "|"
\time 7/8
r4. ees''2 ~
\bar "|"
\time 2/4
\tupletUp
\tuplet 3/2 { ees''4 r4 d''4 ~ }
\bar "|"
\time 3/8
\tupletUp
\tuplet 4/3 { d''4 r4 }
\bar "|"
\time 2/4
e''2
\bar "|"
\time 3/8
es''4.
\bar "|"
\time 3/4
r8 d''2 r8
\bar "|"
}
>>
Perkussion = \new StaffGroup <<
\new Staff <<
\global {
\bar "|"
\clef percussion
\time 3/4
r4 c'2 ~
\bar "|"
c'2.
\bar "|"
R2.
\bar "|"
r2 g'4 ~
\bar "|"
g'2. ~
\bar "|"
g'2.
}
>>
\new Staff <<
\global {
\bar "|"
\clef percussion
\time 3/4
R2.
\bar "|"
g'2. ~
\bar "|"
g'2.
\bar "|"
r4 g'2 ~
\bar "|"
g'2 r4
\bar "|"
g'2.
}
>>
>>
\score {
<<
\Bassklarinette
\Perkussion
>>
}
|
Afficher le numéro de la première mesure
Par défaut, LilyPond n’affiche pas le premier numéro de mesure s’il est
inférieur à 2. Le fait de définir barNumberVisibility à
all-bar-numbers-visible vous permettra d’imprimer n’importe quel
numéro pour la première mesure. Notez que l’impression d’un numéro
de mesure ne peut intervenir que s’il y a une barre. Aussi, pour
pouvoir le faire au début d’un morceau, devrez-vous ajouter une barre
vide avant la première note.
| | \layout {
indent = 0
ragged-right = ##t
}
\relative c' {
\set Score.barNumberVisibility = #all-bar-numbers-visible
\bar ""
c1 | d | e | f \break
g1 | e | d | c
}
|
Redéfinition des réglages de mise en forme par défaut des notes d’ornement
Vous pouvez modifier les valeurs des variables startGraceMusic,
stopGraceMusic, startAcciaccaturaMusic,
stopAcciaccaturaMusic, startAppoggiaturaMusic et
stopAppoggiaturaMusic afin d’en personnaliser les effets. Pour
plus de détails, voir le fichier ‘ly/grace-init.ly’.
| | startAcciaccaturaMusic = {
<>(
\override Flag.stroke-style = #"grace"
\slurDashed
}
stopAcciaccaturaMusic = {
\revert Flag.stroke-style
\slurSolid
<>)
}
\relative c'' {
\acciaccatura d8 c1
}
|
Suppression des numéros de mesure d’une partition
Désactiver le graveur concerné – Bar_number_engraver –
donnera une partition – contexte Score – sans numéros de
mesure.
| | \layout {
\context {
\Score
\omit BarNumber
% or:
%\remove "Bar_number_engraver"
}
}
\relative c'' {
c4 c c c \break
c4 c c c
}
|
Suppression de la partie interportée des barres de mesure d’un regroupement autre que ChoirStaff
Les barres de mesure des regroupements StaffGroup,
PianoStaff et GrandStaff sont par défaut d’un seul tenant.
La portion entre les portées peut néanmoins être supprimée, portée par
portée.
| | \relative c' {
\new StaffGroup <<
\new Staff {
e1 | e
\once \override Staff.BarLine.allow-span-bar = ##f
e1 | e | e
}
\new Staff {
c1 | c | c
\once \override Staff.BarLine.allow-span-bar = ##f
c1 | c
}
\new Staff {
a1 | a | a | a | a
}
>>
}
|
Styles de silences
Les silences peuvent être gravés selon différents styles.
| | \new Staff \relative c {
\omit Score.TimeSignature
\cadenzaOn
\override Staff.Rest.style = #'mensural
r\maxima^\markup \typewriter { mensural }
r\longa r\breve r1 r2 r4 r8 r16 s32 s64 s128 s128
\bar ""
\break
\override Staff.Rest.style = #'neomensural
r\maxima^\markup \typewriter { neomensural }
r\longa r\breve r1 r2 r4 r8 r16 s32 s64 s128 s128
\bar ""
\break
\override Staff.Rest.style = #'classical
r\maxima^\markup \typewriter { classical }
r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 s128
\bar ""
\break
\override Staff.Rest.style = #'z
r\maxima^\markup \typewriter { z-style }
r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 s128
\bar ""
\break
\override Staff.Rest.style = #'default
r\maxima^\markup \typewriter { default }
r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 s128
}
|
Annulation des règles de ligature par défaut
Pour obtenir des ligatures en groupes de 3-4-3-2 croches, dans
une mesure à 12/8, il faudra préalablement annuler les réglages par
défaut relatifs à 12/8, puis ajouter les règles adaptées :
| | \relative c'' {
\time 12/8
% Default beaming
a8 a a a a a a a a a a a
% Set new values for beam endings
\set Score.beatStructure = 3,4,3,2
a8 a a a a a a a a a a a
}
|
Barres rythmiques
Il arrive, dans une feuille de chant « simple », que les notes soient
remplacées par une « pulsation » et que la structure de la chanson soit
indiquée par les accords au-dessus des mesures. Ceci peut être utile
lorsque l’on crée ou retranscrit la structure d’une chanson, ainsi que
pour donner au guitariste et musiciens de jazz une pseudo partition. Le
fonctionnement standard d’un \repeat percent n’est pas ici
applicable puisque le premier temps doit être une note ou un silence.
Le code ci-dessous propose deux alternatives à ce problème en
redéfinissant l’aspect d’un silence. Si la durée d’un temps ne
correspond pas à la noire, le r4 inclus dans la définition devra
être remplacé par un silence de durée appropriée.
| | % Macro to print single slash
rs = {
\once \override Rest.stencil = #ly:percent-repeat-item-interface::beat-slash
\once \override Rest.thickness = #0.48
\once \override Rest.slope = #1.7
r4
}
% Function to print a specified number of slashes
comp = #(define-music-function (count) (integer?)
#{
\override Rest.stencil = #ly:percent-repeat-item-interface::beat-slash
\override Rest.thickness = #0.48
\override Rest.slope = #1.7
\repeat unfold $count { r4 }
\revert Rest.stencil
#}
)
\score {
\relative c' {
c4 d e f |
\rs \rs \rs \rs |
\comp #4 |
}
}
|
Sauts de notes en mode paroles (2)
Sachant qu’un s au sein d’un bloc \lyricmode est
interprété non comme de l’espace mais comme une syllabe, l’utilisation
de paires de guillemets informatiques ("") ou un caractère
souligné simple (_) permet de « sauter » une note.
| | <<
\relative c'' { a4 b c d }
\new Lyrics \lyricmode { a4 "" _ gap }
>>
|
Sauts de notes en mode paroles
La syntaxe s qui permet de « faire un saut dans le temps » n’est
disponible qu’en mode notes et en mode accords. Dans les autres
situations, comme en mode paroles par exemple, la commande \skip
produit les mêmes effets.
| | <<
\relative c'' { a1 | a }
\new Lyrics \lyricmode { \skip 1 bla1 }
>>
|
Moignons de hampe
Certaines conventions en matière de notation autorisent les ligatures à
enjamber des silences. Dans certains cas, des moignons de hampe
accrochés à la ligature offrent une meilleure visibilité du rythme ;
certaines éditions modernes vont même alors jusqu’à omettre le silence.
Cet exemple illustre la progression : notation traditionnelle, ligature
enjambant le silence, silence surplombé d’un moignon et enfin seule une
hampe tronquée. Les moignons s’obtiennent par amendement de la
propriété stemlet-length de l’objet Stem, alors que les
silences sont masqués par activation de la propriété de transparence.
Les markups ajoutés au code ci-dessous mettent en exergue les
différentes notations.
| | \paper { ragged-right = ##f }
{
c'16^\markup { traditional } d' r f'
g'16[^\markup { beams over rests } f' r d']
% N.B. use Score.Stem to set for the whole score.
\override Staff.Stem.stemlet-length = #0.75
c'16[^\markup { stemlets over rests } d' r f']
g'16[^\markup { stemlets and no rests } f'
\once \hide Rest
r16 d']
}
|
Ligature à la pulsation
Une sous-ligature tronquée peut pointer en direction de la pulsation à
laquelle elle se rattache. Dans l’exemple suivant, la première ligature
évite toute troncature (comportement par défaut), alors que la deuxième
respecte rigoureusement la pulsation.
| | \relative c'' {
\time 6/8
a8. a16 a a
\set strictBeatBeaming = ##t
a8. a16 a a
}
|
Subdivision des ligatures
Les ligatures d’une succession de notes de durée inférieure à la croche
ne sont pas subdivisées par défaut. Autrement dit, tous les traits de
ligature (deux ou plus) seront continus. Ce comportement peut être
modifié afin de diviser la ligature en sous-groupes grâce à la propriété
subdivideBeams. Lorsqu’elle est activée, les ligatures seront
subdivisées selon un intervalle défini par baseMoment ; il n’y
aura alors plus que le nombre de traits de ligature déterminé entre
chaque sous-groupe. Si le groupe qui suit la division est plus court que
la valeur pour la métrique en cours – généralement lorsque la ligature
est incomplète –, le nombre de traits de ligature correspond au
regroupement de la bubdivision la plus longue. Cette restriction ne sera
toutefois pas appliquée dans le cas où ne reste qu’une note après la
division. Par défaut, baseMoment fixe la valeur de référence par
rapport à la métrique en vigueur. Il faudra donc lui fournir, à l’aide
de la fonction ly:make-moment, une fraction correspondant à la
durée du sous-groupe désiré comme dans l’exemple ci-dessous. Gardez à
l’esprit que, si vous venez à modifier baseMoment, vous devrez
probablement adapter beatStrusture afin qu’il reste en adéquation
avec les nouvelles valeurs de baseMoment.
| | \relative c'' {
c32[ c c c c c c c]
\set subdivideBeams = ##t
c32[ c c c c c c c]
% Set beam sub-group length to an eighth note
\set baseMoment = #(ly:make-moment 1/8)
\set beatStructure = 2,2,2,2
c32[ c c c c c c c]
% Set beam sub-group length to a sixteenth note
\set baseMoment = #(ly:make-moment 1/16)
\set beatStructure = 4,4,4,4
c32[ c c c c c c c]
% Shorten beam by 1/32
\set baseMoment = #(ly:make-moment 1/8)
\set beatStructure = 2,2,2,2
c32[ c c c c c c] r32
% Shorten beam by 3/32
\set baseMoment = #(ly:make-moment 1/8)
\set beatStructure = 2,2,2,2
c32[ c c c c] r16.
r2
}
|
Exemple pour tam-tam
Un simple exemple pour tam-tam, saisi « tt ».
| | #(define mydrums '((tamtam default #t 0)))
\new DrumStaff \with { instrumentName = #"Tamtam" }
\drummode {
\set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
\override Staff.StaffSymbol.line-positions = #'( 0 )
\override Staff.BarLine.bar-extent = #'(-1.5 . 1.5)
tt 1 \pp \laissezVibrer
}
|
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 }
}
|
Métrique entre parenthèses - méthode 3
Autre manière de mettre la métrique entre parenthèses.
| | \relative c'' {
\override Staff.TimeSignature.stencil = #(lambda (grob)
(parenthesize-stencil (ly:time-signature::print grob) 0.1 0.4 0.4 0.1 ))
\time 2/4
a4 b8 c
}
|
Métrique entre parenthèses
Une métrique peut être mise entre parenthèses.
| | \relative c'' {
\override Staff.TimeSignature.stencil = #(lambda (grob)
(bracketify-stencil (ly:time-signature::print grob) Y 0.1 0.2 0.1))
\time 2/4
a4 b8 c
}
|
Affichage seulement du numérateur d’une métrique (au lieu d’une fraction)
La métrique est parfois indiquée non pas par une fraction (par ex. 7/4)
mais simplement par son numérateur (7 dans ce cas). L’instruction
\override Staff.TimeSignature.style = #'single-digit permet de
déroger au style par défaut de manière permanente – un \revert
Staff.TimeSignature.style annulera ces modifications. Lorsque cette
métrique sous la forme d’un seul chiffre ne se présente qu’une seule
fois, il suffit de faire précéder l’instruction \override d’un
simple \once.
| | \relative c'' {
\time 3/4
c4 c c
% Change the style permanently
\override Staff.TimeSignature.style = #'single-digit
\time 2/4
c4 c
\time 3/4
c4 c c
% Revert to default style:
\revert Staff.TimeSignature.style
\time 2/4
c4 c
% single-digit style only for the next time signature
\once \override Staff.TimeSignature.style = #'single-digit
\time 5/4
c4 c c c c
\time 2/4
c4 c
}
|
Mise en forme des notes d’ornement
Il est possible de changer globalement la mise en forme des notes
d’ornement dans un morceau, au moyen des fonctions
add-grace-property et remove-grace-property. Ici,
par exemple, on ôte la définition de l’orientation des objets
Stem pour toutes les petites notes, afin que les hampes ne
soient pas toujours orientées vers le haut, et on leur préfère des
têtes en forme de croix.
| | \relative c'' {
\new Staff {
$(remove-grace-property 'Voice 'Stem 'direction)
$(add-grace-property 'Voice 'NoteHead 'style 'cross)
\new Voice {
\acciaccatura { f16 } g4
\grace { d16 e } f4
\appoggiatura { f,32 g a } e2
}
}
}
|
User defined time signatures
Il est possible de définir de nouveaux styles de métrique. La métrique
de la deuxième mesure devrait être sens dessus dessous sur les deux
portées.
| | #(add-simple-time-signature-style 'topsy-turvy
(lambda (fraction)
(make-rotate-markup 180 (make-compound-meter-markup fraction))))
<<
\new Staff {
\time 3/4 f'2.
\override Score.TimeSignature.style = #'topsy-turvy
\time 3/4 R2. \bar "|."
}
\new Staff {
R2. e''
}
>>
|
Crochets de style alternatif
Une dérogation à la propriété stencil de l’objet Flag
permet aux croches et notes de durée inférieure d’adopter une autre
forme de crochet. Sont disponibles les variantes
modern-straight-flag, old-straight-flag et
flat-flag.
| | testnotes = {
\autoBeamOff
c8 d16 c32 d64 \acciaccatura { c8 } d64 r4
}
\score {
\relative c' {
\time 2/4
\testnotes
\override Flag.stencil = #modern-straight-flag
\testnotes
\override Flag.stencil = #old-straight-flag
\testnotes
\override Flag.stencil = #flat-flag
\testnotes
\revert Flag.stencil
\testnotes
}
\layout {
indent = 0
\context {
\Score
\override NonMusicalPaperColumn.line-break-permission = ##f
}
}
}
|
Utilisation de hampe barrée pour une note normale
Le trait que l’on trouve sur les hampes des acciaccatures peut être
appliqué dans d’autres situations.
| | \relative c'' {
\override Flag.stroke-style = #"grace"
c8( d2) e8( f4)
}
|
Liaison de tenue et arpège
Les liaisons de tenue servent parfois à rendre un accord arpégé. Dans
ce cas, les notes liées ne sont pas toutes consécutives. Il faut alors
assigner à la propriété tieWaitForNote la valeur #t
(true pour « vrai »). Cette même méthode peut servir, par
exemple, à lier un trémolo à un accord.
| | \relative c' {
\set tieWaitForNote = ##t
\grace { c16[ ~ e ~ g] ~ } <c, e g>2
\repeat tremolo 8 { c32 ~ c' ~ } <c c,>1
e8 ~ c ~ a ~ f ~ <e' c a f>2
\tieUp
c8 ~ a
\tieDown
\tieDotted
g8 ~ c g2
}
|