Am Mo., 21. Juli 2025 um 23:06 Uhr schrieb Stu McKenzie via LilyPond
User List <[email protected]>:
>
>
> On 2025-07-18 00:20, Thomas Morley wrote:
> > Am Fr., 18. Juli 2025 um 06:39 Uhr schrieb Stu McKenzie via LilyPond
> > User List<[email protected]>:
> >> On 2025-07-17 07:50, Magnus Svenson wrote:
> >>
> >> Music = {
> >>   b'1
> >>   \break % to show colored bar line
> >>   \ColorRepeatBegSpecialBar
> >>   \repeat volta 2 {
> >>    c''1 |
> >>
> >>   \alternative {
> >>    \volta 1 {
> >>     d''1 |
> >>     \ColorRepeatEndSpecialBar
> >>    }
> >>
> >>    \volta 2 {
> >>     e''1 |
> >>    }
> >>   }
> >>   }
> >> }
> >>
> >> Thank you Magnus, for your reply.  Your new structure certainly clears all 
> >> of the warnings.
> >>
> >> I removed the "\break" before the color change and it proved your theory 
> >> that "lilypond considers them to be the same barline" is correct.
> >>
> >> I read somewhere that any repeat should start on a new line if possible, 
> >> so I would like to ask others if this feature could be changed by 
> >> specifying that a bar line before a "\break" can somehow be left in the 
> >> default color.
> >>
> >> For anyone interested, the full MWE is now:
> >>
> >> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> >>
> >> \version "2.24.0"
> >>
> >> ColorRepeatBegSpecialBar = {
> >>   \once \override Score.BarLine.color = #(x11-color 'orange)
> >>   \once \set Score.startRepeatBarType = #"[|:"
> >> }
> >> ColorRepeatEndSpecialBar = {
> >>   \once \override Score.BarLine.color = #(x11-color 'orange)
> >>   \once \set Score.endRepeatBarType = #":|]"
> >> }
> >>
> >> Music = {
> >>   b'1
> >>   \break % to show colored bar line
> >>   \ColorRepeatBegSpecialBar
> >>   \repeat volta 2 {
> >>    c''1 |
> >>    \alternative {
> >>     \volta 1 {
> >>      d''1 |
> >>      \ColorRepeatEndSpecialBar
> >>     } % END volta 1
> >>     \volta 2 {
> >>      e''1 |
> >>     } % END volta 2
> >>    }  % END alternative
> >>   } % END repeat volta 2
> >> } % END Music
> >>
> >> \score {
> >>    \new Staff { \Music }
> >> }
> >>
> >> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> >>
> > Have a look athttps://lsr.di.unimi.it/LSR/Item?id=775
> > Does it help?
> >
> > Cheers,
> >    Harm
>
> Thanks for the feedback, Thomas.
> I've been trying to use some of the Scheme code from that LSR, but
> haven't found a solution yet.
> I'll keep trying and let others know if I come up with a solution.
>
>

>From your posts it is not clear, what color a mid-line repeat-bar
should have. The specified one or default?
Below I code for every "special" BarLine.

The LSR-snippet identifies whether an item is end-of-line, mid-line or
begin-of-line and modifies a grob-property relying on the result.

On a second look, this is possible here as well. Though, it's easier
to rely on the actual 'glyph-name as condition for the color.
Makes for:

\version "2.24.0"

#(define (color-certain-bar-lines color . barlines)
  (lambda (grob)
   (let ((glyph-name (ly:grob-property grob 'glyph-name)))
     (if (member glyph-name barlines)
         (ly:grob-set-property! grob 'color color)))))

colorRepeatBegSpecialBar = \once \set Score.startRepeatBarType = "[|:"
colorRepeatEndSpecialBar = \once \set Score.endRepeatBarType = ":|]"

music = {
 b'1
 \break % to show colored bar line
 \colorRepeatBegSpecialBar
 \repeat volta 2 {
  c''1 |
  \alternative {
   { d''1 | \colorRepeatEndSpecialBar }
   { e''1 | }
  }
 }
}

\score {
  \new Staff \music
  \layout {
      \context {
      \Staff
      \override BarLine.after-line-breaking =
        #(color-certain-bar-lines (x11-color 'orange) "[|:" ":|]")
    }
  }
}

HTH,
  Harm

Reply via email to