On 3/5/2012 4:41 PM, David Kastrup wrote:
James<pkx1...@gmail.com> writes:
Hello,
On 5 March 2012 15:20, David Kastrup<d...@gnu.org> wrote:
Neil Thornock<neilthorn...@gmail.com> writes:
In my mind, the real bug is that \cadenzaOff does not seem to turn the
cadenza off immediately, but rather one measure later. I'm not sure
why it behaves as it does.
It resets timing to normal, and "normal" does not mean the end of a
measure.
Normal from what perspective? Where it left off before \cadenzaOn or
simply that it starts back at '0' immediately \cadenzaOff
I'm wondering if we need something (a sentence of two) in the NR to
avoid what is obviously something that does confuse people.
I still have not figured out the exact reasoning behind this. But it
does not seem to be much more than "stop advancing time in measure"
"start advancing time in measure again". If there is no material left
to fill the bar, the measure will not get full.
I've tried a couple things:
The first example uses Neil T's idea of setting \cadenzaOff a measure
before it ends. It is intentionally awkward timing-wise. Note that it
was necessary to used \cadenzaOff one note later than \cadenzaOn and
that I also had to add a skip to be sure the barline was in the right
place. It seems kludgy/ugly to me:
%%%
\version "2.14.2"
{
\time 4/4
c1
\cadenzaOn
c4 ~ \cadenzaOff c8 s32
c16-[ c c c-] c4 c32-[ c c c c c c-] c8
\bar "|"
c4 c4 c
}
%% This one tests David K's comment regarding
%% time stops/time starts
\relative c'
{
c1
c2 \cadenzaOn \teeny f32-[ a c f, a c f, a c-] \cadenzaOff
\normalsize c2
c1
}
%%%
The result I get from the second one strongly indicates that \cadenzaOn
means time stops but that \cadenzaOff means, "Once a full measure has
passed *from this point* the next one starts." If it was as simple as
time stops/starts (the way I'm intepreting it) then the first part of
measure two of the second example would be counted and the last half
would be counted and nothing inside the cadenza would be counted. This
is not what happens, though. It would be necessary to use 'c2*2' at the
end of that bar as David K suggested earlier. It works and is much less
ugly than the top example but strikes me as less than satisfactory.
I'm trying to avoid being a choosy beggar here as I certainly don't have
the programming chops to dig in and fix this myself. I suspect,
however, that "remembering" the portion of a measure preceding
\cadenzaOn and then adding it to what comes after \cadenzaOff could be
complicated. I can also easily imagine a situation where that approach
would fail. Instead, would it not be useful to have some way to signal
that the measure is over and a new measure is to begin, complete with
barline and accidental behavior? I can also well imagine a scenario
where having \cadenzaOff doing this would also fail. I'm thinking
something like '\endMeasure' to accomplish this. I know that's only
syntax and not a solution. I'm just wondering if leaving \cadenzaOn
\cadenzaOff as they are and having another mechanism take care of
initiating the next measure would be the solution.
In the meantime, I'll just have to remember these workarounds.
-David
_______________________________________________
bug-lilypond mailing list
bug-lilypond@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-lilypond