Am Mo., 7. Okt. 2024 um 02:42 Uhr schrieb <msk...@ansuz.sooke.bc.ca>:
>
> I have a volta repeat with two endings.  There is a clef change during the
> first ending; so at the start of the second ending it's necessary to print
> another clef to indicate the clef in force at the start of the ending.
>
> Lilypond by default will print the new clef before the repeat barline that
> separates the first from the second ending.  I want it, instead, to print
> the clef for the start of the second ending after the barline, so it's
> more clearly associated with the second ending.
>
> This LSR snippet seems to solve that problem:
>   https://lsr.di.unimi.it/LSR/Item?id=1119
>
> It works by putting a grace-note spacer rest at the start of the alternate
> ending, putting the clef after the spacer, and then overriding the clef's
> extra-spacing-width to make the spacing look right.
>
> However, I also want to set voltaSpannerDuration (or achieve its effect in
> some other way, if necessary), and the grace spacer breaks that; the
> ending with the grace spacer seems to ignore voltaSpannerDuration.
>
> Code showing the problem:
>
> \new Staff {
>   \clef bass
>   e1 | e1 |
>   \repeat volta 2 {
>     f1 | f1 |
>     \set Score.voltaSpannerDuration = #(ly:make-moment 1/1)
>     \alternative {
>       \volta 1 {
>         g1 | \clef treble g'1 |
>       }
>       \volta 2 {
>         \grace s4
>         \once \override Staff.Clef.extra-spacing-width = #'(-1.5 . 0)
>         \clef bass a1 |
>         \clef treble a'1 |
>       }
>     }
>   }
>   \fine
> }
>
> With this code the bracket for the first ending covers only one measure,
> but the bracket for the second ending covers the entire second ending, two
> measures.  Commenting out the \grace s4 returns both brackets to the
> expected length (one measure), but puts the clef before the barline.
>
> So, how can I get a clef after the barline and limit the length of the
> volta bracket, on the same alternate ending?
>
> --
> Matthew Skala
> msk...@ansuz.sooke.bc.ca                 People before tribes.
> https://ansuz.sooke.bc.ca/
>

\new Staff {
  \clef bass
  e1 | e1 |
  \repeat volta 2 {
    f1 | f1 |
    \set Score.voltaSpannerDuration = #(ly:make-moment 1/1)
    \alternative {
      \volta 1 {
        g1 | \clef treble g'1 |
      }
      \volta 2 {
        %\grace s4
        \once\override Score.BreakAlignment.break-align-orders =
           #(make-vector 3 '(left-edge
                             cue-end-clef
                             ambitus
                             breathing-sign
                             staff-bar
                             clef
                             cue-clef
                             key-cancellation
                             key-signature
                             time-signature
                             custos))
        \once \override Staff.Clef.extra-spacing-width = #'(-1.5 . 0)
        \clef bass a1 |
        \clef treble a'1 |
      }
    }
  }
  \fine
}


Cheers,
  Harm

Reply via email to