>
>
>
> From: David Sumbler <[email protected]>
> To: [email protected]
> Date: Thu, 06 Aug 2020 18:11:43 +0100
> Subject: "Ghost" trills
> Having implemented some of the methods shown in Vaughan's marvellous
> tutorial at
> https://lists.gnu.org/archive/html/lilypond-user/2020-06/msg00114.html
> I have been making rapid progress in setting the orchestral piece which
> is my latest project.
>
> But suddenly I came across a problem which, try as I might, I can't
> figure out or solve. I have managed to work around it. Despite that
> I should very much like to understand what is going on here so that I
> will be better able to deal with similar or related problems in future.
> Also the work-around makes my input code considerably more complex, and
> may not work well if line breaks get moved around.
>
> The problem is that, after using trillspanners, sometimes the trill
> reappears later on after a change of staff setup. The code below
> reproduces this problem. I have also attached a pdf file containing
> the output.
>
> In this example, it is quite easy to get rid of the unwanted
> trillspanners in the second line by making small, apparently random,
> alterations in the input. For instance, if the 4th bar in the upper
> instrument is changed to 2 minims, or the same bar in the lower
> instrument is changed to a semibreve, the rogue trillspanners
> disappear. However, it is not true to say that the trillspanners
> always disappear whenever the rhythms in the two instruments are
> exactly the same, and of course it wouldn't be a useful solution to the
> problem even if it were true. In fact, in my actual score the 2
> instruments do have identical rhythms, but I still get these unwanted
> trills in the next system.
>
> My work-around, incidentally, involves creating another pair of staves
> with a different VerticalAxisGroup.remove-layer value, and changing
> \instScorePlan to use the first pair up to and including the trills,
> and the replacement pair thereafter. Not very elegant, and if there
> were many trill passages it would quickly become unwieldy in the
> extreme.
>
> Can anyone figure out why these spare trills are appearing, and how one
> can get rid of them reasonably simply?
>
> David
>
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> \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 >>
> >>
> }
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>
I'm still on 2.19, but this reproduced there, too.
I'm surprised this syntax works, since it seems like it would be
introducing unbalanced start/stop:
f2 \startTrillSpan f2 \startTrillSpan | f1 \stopTrillSpan |
But even adjusting that to stop the first trill, the problem was still
there.
f2 \startTrillSpan f2 \stopTrillSpan \startTrillSpan | f1
\stopTrillSpan |
I'm not sure what the purpose of the targetStaff is, but seems like you get
the desired output if you just comment it out.
Must be there for some other reason. I guess you need a less minimal MWE
to show why you need that.
\version "2.19.81"
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 \stopTrillSpan \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 >>
>>
}
HTH,
Elaine Alt
415 . 341 .4954 "*Confusion is
highly underrated*"
[email protected]
Producer ~ Composer ~ Instrumentalist ~ Educator
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-