lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: "Ghost" trills


From: Rutger Hofman
Subject: Re: "Ghost" trills
Date: Thu, 6 Aug 2020 22:14:07 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0

I mean (sorry for the typo): if a spanner stops at the start of a new partCombine mode.

Rutger

On 8/6/20 10:11 PM, Rutger Hofman wrote:
I think you have stumbled into one of the (many) limitations of partCombine; it routinely messes up if a spanner stops at the end of a new partCombine mode. The problem is that these mode changes (partCombine "Chords" mode to partCombine "Apart" mode at bar 3, and back to partCombine "Chords" mode at bar 4) are implicit, and I haven't found a way to insert an extra explicit spanner end token (like \! for hairpins, or \stopTrillSpan for trills, etc. etc.).

However, in this case, it happens to be easy to fix by surrounding the second line of instOne with \partCombineApart .... \partCombineAutomatic:

instOne = \relative {
   a'1 | a | a |
   \partCombineApart a1 \startTrillSpan | a1 \stopTrillSpan |
   \partCombineAutomatic a | a | a | a | a | a | a |
}

If such a fix doesn't exist, one can revert to PMPChords and PMPApart as in my tutorial. These do allow insertion of an explicit spanner end token.

Rutger

P.S. When you wrote 'Vaughan', did you actually mean 'Rutger'?

On 8/6/20 7:11 PM, David Sumbler wrote:
\version "2.21.2"

instOne = \relative {
   a'1 | a | a |
   a1 \startTrillSpan | a1 \stopTrillSpan |
   a | a | a | a | a | a | a |
}

instTwo = \relative {
   f'1 | f | f |
   f2 \startTrillSpan f2 \startTrillSpan | f1 \stopTrillSpan |
   f | f | f | f | f | f | f |
}

targetStaff = #(define-scheme-function (ctx) (string?)
   #{
     \set Staff.keepAliveInterfaces = #'()
     \context Staff = #ctx { \unset Staff.keepAliveInterfaces }
   #})

instScorePlan = {
   \targetStaff clarinetI s1*4
   \targetStaff bothClarinets s1*3
   \break s1*5 \break s1*5
}

\score {
     \new StaffGroup \with {
     \consists "Keep_alive_together_engraver" }
   <<
     \new Staff = bothClarinets \with {
       \RemoveAllEmptyStaves
       \override VerticalAxisGroup.remove-layer = 40 }
     << \partCombine \instOne \instTwo \instScorePlan >>
     %% Clarinets on 2 staves:
     \new Staff = clarinetI \with {
       \RemoveAllEmptyStaves
       \override VerticalAxisGroup.remove-layer = 20 }
     << \instOne \instScorePlan >>
     \new Staff = clarinetII \with {
       \RemoveAllEmptyStaves
       \override VerticalAxisGroup.remove-layer = 20 }
      << \instTwo \instScorePlan >>
   >>
}



reply via email to

[Prev in Thread] Current Thread [Next in Thread]