[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:11:56 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 |
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 >>
>>
}