Lilypond:在和弦网格的单元格之间添加箭头
Lilypond: adding arrows between cells of a chord grid
我填了一个chord grid in LilyPond which you can see the output here。我想加点箭头写个晕。
我考虑添加连线符号:
grille = \chordmode {
\bar "[|:"
d1(
g1)
...
但它不会修改任何内容。
代码如下:
% LilyBin
\version "2.19.55"
#(set-global-staff-size 18)
% si cette valeur change modifier la valeur de rlineto ci-dessous
\paper {
page-breaking = #ly:page-turn-breaking
}
\header {
tagline = ##f
composer = "The Cure"
title = "Friday I'm in Love"
}
\paper {
#(set-paper-size "a4")
page-count = #1 % forçage du nombre de pages
page-breaking = #ly:page-turn-breaking
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% La fonction pour diviser une case en 2 %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
"\/" =
#(define-music-function
(parser location mus1 mus2) ( ly:music? ly:music? )
#{
\stopStaff
\once \override Staff.StaffSymbol.stencil =
$(lambda (grob)
(let* ((staff (ly:staff-symbol::print grob))
(X-ext (ly:stencil-extent staff X))
(Y-ext (ly:stencil-extent staff Y)))
(ly:grob-set-property! grob 'layer -10)
(ly:stencil-add
(make-line-stencil
(ly:staff-symbol-line-thickness grob)
(car X-ext) (car Y-ext) (cdr X-ext) (cdr Y-ext))
staff)))
\startStaff
\once \override ChordName.extra-offset = #'(1 . .5)
$mus1
\once \override ChordName.extra-offset = #'(3 . -3)
$mus2
\stopStaff
\startStaff
#})
%%%%%%%%%%%%%%%%%
grille = \chordmode {
\bar "[|:"
d1
g1
d1
a1
\break
b1:m
g1
d1
a1
\bar ":|]"
\break
\bar "[|:"
d1
g1
d1
a1
\break
b1:m
g1
d1
a1
\bar ":|]"
\break
g1
a1
b1:m
g1
\break
d1
a1
\stopStaff
\bar "" s \bar "" s
\break
\startStaff
d1
g1
d1
a1
\break
b1:m
g1
d1
a1
\break
d1
g1
d1
a1
\break
b1:m
g1
d1
a1
\break
d1
g1
d1
a1
\break
b1:m
g1
d1
a1
\pageBreak
\break
g1
a1
b1:m
g1
\break
d1
a1
\stopStaff
\bar "" s \bar "" s
\break
\startStaff
\set Score.repeatCommands = #'((volta "4 X"))
\bar "[|:"
b1:m
c:9
d1
a1
\set Score.repeatCommands = #'((volta "#f"))
\bar ":|]"
}
marques = \relative c' {
s1 ^\markup \bold \box \fontsize #7 Intro s1*7
s1 ^\markup \bold \box \fontsize #7 VerseI s1*7
s1 ^\markup \bold \box \fontsize #7 Chorus s1*7
s1 ^\markup \bold \box \fontsize #7 VerseII s1*7
s1 ^\markup \bold \box \fontsize #7 Solo s1*7
s1 ^\markup \bold \box \fontsize #7 VerseIII s1*7
s1 ^\markup \bold \box \fontsize #7 ChorusII s1*7
s1 ^\markup \bold \box \fontsize #7 Bridge s1*7
}
\score{
\layout {
indent = 0 % pas de décalage même à la première ligne
\context {
\Score
\omit Clef % Cacher la clef
\omit TimeSignature % cacher la métrique
\omit BarNumber % cacher les numéros de mesures
\override SpacingSpanner.strict-note-spacing = ##t % permet d’avoir toutes les mesures de même longueur
proportionalNotationDuration = #(ly:make-moment 1/16) % durée de référence pour espacer la musique
}
}
<<
\new Staff \with { % la portée qui recevra les repères
\remove "Staff_symbol_engraver" % cacher la portée
}
\marques % la variable contenant les repères
\new ChordNames \with { % la portée qui recevra la grille harmonique
\override ChordName.extra-offset = #'(10 . -1 ) % déplacer les noms des accords
\override BarLine.bar-extent = #'(-5 . 5) % définir la taille des barres de mesures
\consists "Bar_engraver" % afficher les barres de mesures
\override StaffSymbol.line-positions = #'( -10 10 ) % definir une portée de 2 lignnes
\consists "Staff_symbol_engraver" % afficher la portée
\consists "Percent_repeat_engraver" % afficher le signe "%" pour les mesures répétées
}
\grille % la variable contenant la grille harmonique proprement dite
>>
}
我自己是 Lilypond 的新手,但我能够通过在度量/标记的标记中创建自定义形状来获得箭头。
查看此示例(基于您的原始输出):http://lilybin.com/k7kykq/142
请原谅我对形状进行了硬编码。我还不知道有什么更简单的绘制方法。
我填了一个chord grid in LilyPond which you can see the output here。我想加点箭头写个晕。
我考虑添加连线符号:
grille = \chordmode {
\bar "[|:"
d1(
g1)
...
但它不会修改任何内容。
代码如下:
% LilyBin
\version "2.19.55"
#(set-global-staff-size 18)
% si cette valeur change modifier la valeur de rlineto ci-dessous
\paper {
page-breaking = #ly:page-turn-breaking
}
\header {
tagline = ##f
composer = "The Cure"
title = "Friday I'm in Love"
}
\paper {
#(set-paper-size "a4")
page-count = #1 % forçage du nombre de pages
page-breaking = #ly:page-turn-breaking
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% La fonction pour diviser une case en 2 %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
"\/" =
#(define-music-function
(parser location mus1 mus2) ( ly:music? ly:music? )
#{
\stopStaff
\once \override Staff.StaffSymbol.stencil =
$(lambda (grob)
(let* ((staff (ly:staff-symbol::print grob))
(X-ext (ly:stencil-extent staff X))
(Y-ext (ly:stencil-extent staff Y)))
(ly:grob-set-property! grob 'layer -10)
(ly:stencil-add
(make-line-stencil
(ly:staff-symbol-line-thickness grob)
(car X-ext) (car Y-ext) (cdr X-ext) (cdr Y-ext))
staff)))
\startStaff
\once \override ChordName.extra-offset = #'(1 . .5)
$mus1
\once \override ChordName.extra-offset = #'(3 . -3)
$mus2
\stopStaff
\startStaff
#})
%%%%%%%%%%%%%%%%%
grille = \chordmode {
\bar "[|:"
d1
g1
d1
a1
\break
b1:m
g1
d1
a1
\bar ":|]"
\break
\bar "[|:"
d1
g1
d1
a1
\break
b1:m
g1
d1
a1
\bar ":|]"
\break
g1
a1
b1:m
g1
\break
d1
a1
\stopStaff
\bar "" s \bar "" s
\break
\startStaff
d1
g1
d1
a1
\break
b1:m
g1
d1
a1
\break
d1
g1
d1
a1
\break
b1:m
g1
d1
a1
\break
d1
g1
d1
a1
\break
b1:m
g1
d1
a1
\pageBreak
\break
g1
a1
b1:m
g1
\break
d1
a1
\stopStaff
\bar "" s \bar "" s
\break
\startStaff
\set Score.repeatCommands = #'((volta "4 X"))
\bar "[|:"
b1:m
c:9
d1
a1
\set Score.repeatCommands = #'((volta "#f"))
\bar ":|]"
}
marques = \relative c' {
s1 ^\markup \bold \box \fontsize #7 Intro s1*7
s1 ^\markup \bold \box \fontsize #7 VerseI s1*7
s1 ^\markup \bold \box \fontsize #7 Chorus s1*7
s1 ^\markup \bold \box \fontsize #7 VerseII s1*7
s1 ^\markup \bold \box \fontsize #7 Solo s1*7
s1 ^\markup \bold \box \fontsize #7 VerseIII s1*7
s1 ^\markup \bold \box \fontsize #7 ChorusII s1*7
s1 ^\markup \bold \box \fontsize #7 Bridge s1*7
}
\score{
\layout {
indent = 0 % pas de décalage même à la première ligne
\context {
\Score
\omit Clef % Cacher la clef
\omit TimeSignature % cacher la métrique
\omit BarNumber % cacher les numéros de mesures
\override SpacingSpanner.strict-note-spacing = ##t % permet d’avoir toutes les mesures de même longueur
proportionalNotationDuration = #(ly:make-moment 1/16) % durée de référence pour espacer la musique
}
}
<<
\new Staff \with { % la portée qui recevra les repères
\remove "Staff_symbol_engraver" % cacher la portée
}
\marques % la variable contenant les repères
\new ChordNames \with { % la portée qui recevra la grille harmonique
\override ChordName.extra-offset = #'(10 . -1 ) % déplacer les noms des accords
\override BarLine.bar-extent = #'(-5 . 5) % définir la taille des barres de mesures
\consists "Bar_engraver" % afficher les barres de mesures
\override StaffSymbol.line-positions = #'( -10 10 ) % definir une portée de 2 lignnes
\consists "Staff_symbol_engraver" % afficher la portée
\consists "Percent_repeat_engraver" % afficher le signe "%" pour les mesures répétées
}
\grille % la variable contenant la grille harmonique proprement dite
>>
}
我自己是 Lilypond 的新手,但我能够通过在度量/标记的标记中创建自定义形状来获得箭头。
查看此示例(基于您的原始输出):http://lilybin.com/k7kykq/142
请原谅我对形状进行了硬编码。我还不知道有什么更简单的绘制方法。