lilypond-devel
[Top][All Lists]
Advanced

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

Re: cadenza followed by a MMR is buggy


From: Thomas Morley
Subject: Re: cadenza followed by a MMR is buggy
Date: Sat, 16 Jan 2021 00:58:19 +0100

Am Fr., 15. Jan. 2021 um 02:36 Uhr schrieb Dan Eble <dan@faithful.be>:
>
> On Jan 14, 2021, at 19:13, Dan Eble <dan@faithful.be> wrote:
> >
> > On Jan 14, 2021, at 18:33, Dan Eble <dan@faithful.be> wrote:
> >>
> >> Alas, all is not well with earlier versions.  Consider the confusing bar 
> >> numbers in the following elaboration of your example.  How would you 
> >> resolve it?
> >
> > My thoughts:
> >
> > Measure 1 is complete, so the first "2" is not incorrect, though it might 
> > not be what a user expects.
> >
> > No measure can start twice.
> >
> > The second "2" should either be "(2)", or it should be "3" and the "3" 
> > should be "4".
>
> Add issue #3640 to this discussion.  Accidentals, bar numbers, and (now) 
> multi-measure rests are all impacted by the fact that \bar "|" does not 
> create a new measure.
>
> \new Score \with {
>   barNumberVisibility = #(every-nth-bar-number-visible 1)
>   \override BarNumber.break-visibility = #all-visible
> } {
>   f'1
>   \cadenzaOn
>   bes2
>   \cadenzaOff
>   %\partial 1024 s1024 %<<< try this
>   \bar "|"
>   << R1 bes1 >>
> }
>
> I don't think that merely restoring the previous behavior of 
> Multi_measure_rest_engraver would be the right thing to do, because acting as 
> if a measure begins at \bar "|" is inconsistent with other engravers.
>
> Dan
>

For now I'll ignore #3640, especially the accidentals...

Though, I think
(1) a manual \bar "whatever" should just print the specified bar-line,
but not start or end a measure.
(2) if the BarNumber of the starting cadenza is x, the following newly
started measure should have BarNumber (1+ x) and a BarLine should be
printed at the end of the cadenza.
(3) if the cadenza has inner bar-lines, we should provide a simple
method to increase BarNumbers. Not sure, if we could implement this as
an automtism...
(4) obviously a MMR after a cadenza should be spanned between
appropriate BarLines, at least as default.

Thus, why not implement some new commands at the lines of:

increaseBarNumber =
  \context Timing
  \applyContext
    #(lambda (ctx)
       (ly:context-set-property! ctx 'currentBarNumber
         (1+ (ly:context-property ctx 'currentBarNumber))))

endCadenza = {
  \set Timing.timing = ##t
  \context Timing
  \applyContext
    #(lambda (ctx)
       (ly:context-set-property! ctx 'measureStartNow #t)
       (ly:context-set-property! ctx 'currentBarNumber
         (1+ (ly:context-property ctx 'currentBarNumber))))
  \bar "|"
}

\new Score
  \with { \override BarNumber #'break-visibility = ##(#t #t #t) }
  {
    R1
    \cadenzaOn
    \set fontSize = #-3
    b4b b
    \increaseBarNumber
    \bar "|"
    b b b
    \unset fontSize
    \endCadenza
    \bar "||" %% BarLine of endCadenza can be tweaked
    R1
  }

Cheers,
  Harm



reply via email to

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