簡體   English   中英

如何限制Staff.NoteHead覆蓋?

[英]How do I limit the Staff.NoteHead overrides?

我經常會產生一連串諧波,因此決定使用音樂功能(該功能是切線;如果直接將覆蓋放置在音符上,則會遇到相同的問題。問題是覆蓋本身):

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內部文檔

您的問題是您的函數使用\\override命令,該命令會影響給定上下文中的所有同時發生的雜音,因此它將更改Staff上下文中的所有音符(包含旋律和和聲音樂)。 如果僅在“語音”上下文中更改記事頭,則可以解決您的問題:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM