1

我经常有一串泛音,所以我决定使用音乐函数(该函数是切线;如果我将覆盖直接与音符一起放置,我会遇到同样的问题。问题是覆盖本身):

harmonics =
#(define-music-function
    (parser location notes)
    (ly:music?)
    #{
        %\harmonicsOn
        \override Staff.NoteHead #'style = #'harmonic-mixed

        $notes

        \revert Staff.NoteHead #'style
        %\harmonicsOff
    #}
    )

\harmonicsOn并且\harmonicsOff有效,但它们总是空心的,所以我不想使用它们。覆盖符头可以让我在四分音符上有坚实的头。

我的问题是,持续时间中所有音符的音符头都被覆盖,而不仅仅是提供给函数的音符(参见以下代码下图中的 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,但得到相同的结果。

完整代码| NoteHead 内部文档

4

1 回答 1

1

您的问题是您的函数使用该\override命令,该命令会影响给定上下文中的所有同时 grobs,因此它正在更改 Staff 上下文中的所有音符头(其中包含旋律和和声音乐)。如果您仅在 Voice 上下文中更改符头,那么您的问题就解决了:

harmonics =
#(define-music-function
    (parser location notes)
    (ly:music?)
    #{
        %\harmonicsOn
        \override Voice.NoteHead #'style = #'harmonic-mixed
        $notes
        \revert Voice.NoteHead #'style
        %\harmonicsOff
    #}
    )
于 2013-10-01T02:02:41.603 回答