我经常有一串谐波,所以我决定使用一个音乐功能(该功能是一个切线;如果我直接用音符放置覆盖,我会遇到同样的问题。问题是覆盖本身):< / p>
harmonics =
#(define-music-function
(parser location notes)
(ly:music?)
#{
%\harmonicsOn
\override Staff.NoteHead #'style = #'harmonic-mixed
$notes
\revert Staff.NoteHead #'style
%\harmonicsOff
#}
)
\harmonicsOn
和\harmonicsOff
有效,但它们总是空心的,因此我不想使用它们。覆盖notehead允许我在四分音符上有坚实的头部。
我的问题是,在持续时间内所有音符都会覆盖音符头,而不仅仅是提供给该功能的音符(参见下面代码中图像中的m.2,3):
melody = \relative c' { \stemUp
\repeat unfold 4 { r8 b g b e' b, | }
\bar "|."
}
harmony = \relative c' { \stemDown
e,2. |
\harmonics { e } |
\harmonics { e4 e } s |
e2. |
}
\score {
\new Staff {
\time 3/4 \clef "treble_8"
\key g \major
<<
\new Voice { \melody} \new Voice { \harmony}
>>
}
}
我正在寻找一种方法来仅修改我想要的音符(在这种情况下,在\harmony
中),使其他音符保持不变。
编辑:我使用新的\temporary
命令尝试使用lilypond 2.17,但我得到的结果相同。
答案 0 :(得分:1)
您的问题是您的函数使用\override
命令,它会影响给定上下文中的所有同步grob,因此它会更改Staff上下文中的所有符头(包含旋律和和声音乐)。如果仅在语音环境中更改符头,则问题就解决了:
harmonics =
#(define-music-function
(parser location notes)
(ly:music?)
#{
%\harmonicsOn
\override Voice.NoteHead #'style = #'harmonic-mixed
$notes
\revert Voice.NoteHead #'style
%\harmonicsOff
#}
)