2013-09-30 2 views
1

자주 하모닉스 문자열이있어서 음악 기능을 사용하기로 결정했습니다 (이 기능은 접선입니다. 동일한 문제가있는 노트로 직접 재정의하면 문제가 재정의됩니다) :Staff.NoteHead 재정의를 어떻게 제한합니까?

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

     $notes 

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

\harmonicsOn\harmonicsOff 작동하지만, 항상 빈 노트이므로 사용하고 싶지 않습니다. 노트 헤드를 무시하면 4 분 음표에 단색 헤드가 표시됩니다.

내 문제는 노트 헤드가 함수에 공급뿐만 아니라 노트 (. 참조 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} 
    >> 
    } 
} 

enter image description here

내가 원하는 음표 (이 경우, \harmony) 만 수정하고 그 기간 내 다른 메모는 그대로 둡니다.

편집 : 새로운 \temporary 명령을 사용하여 lilypond 2.17을 시도했지만 동일한 결과가 나타납니다.

Full code | NoteHead Internals Documentation

답변

1

귀하의 문제는 주어진 컨텍스트에서 모든 동시 grobs에 영향을 미치는 \override 명령을 사용하므로 문제 (즉, 멜로디와 하모니 음악이 모두 포함 된)에서 모든 노트 헤드가 변경됩니다. 당신은 단지 음성 맥락에서 noteheads을 변경하는 경우, 다음 문제는 해결된다 : 또한

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

그것은 언급 할 가치 당신은 같은 맥락에서 다른 동시 grobs을 가지고 하나의 GROB에 대한 속성을 (변경해야 할 때 코드로), \ tweak 명령이 도움이 될 수 있습니다. 다음을보십시오 :'{ 1}'은 화음 내부에 단지 하나의 노트 헤드를 변경하는 반면'{e'1 - \ tweak # 'color #red \ pp ->}'는 역 동성의 색만 변경합니다. 또한 마지막 명령에서 명령에'-'이 필요하므로'- \ tweak'가됩니다. –

관련 문제