Reconciliating bar lines thickness when staves are of different sizes (TODO duplicates snippet in Documentation/en/notation/spacing.itely)

A regularly occurring problem in ensemble or chamber music scores, particularly with piano, is that when some of the staves are printed in a smaller size, their bar lines do not not match those of larger staves. This may become particularly egregious for closing double bar lines, as demonstrated here.

There are different solutions, which all involve correcting some of the properties overridden by the \magnifyStaff command: namely, kern thick-thickness and hair-thickness (the latter of which also governs ordinary bar lines). These are properties of the BarLine graphical object (“grob”), which resides in the Staff context.

This can be done by using either the \revert command, or more advanced commands such as revert-props. Alternatively, some effects of \magnifyStaff may be replicated on other staves through the scale-props command, which may be used to harmonize all bar lines either to their appearance on the smallest staves, or to some intermediate value.

%% This snippet relies on some internal commands that are not part of the
%% most common and stable syntax generally recommended to regular users.

\markup \fontsize #-3 {
  \center-column {
    \vspace #0.3
    Default:
    \vspace #1.7
    \score {
      \new StaffGroup <<
        \new Staff \with {
          \magnifyStaff #1/2
        } { b1 b \bar "|."}
        \new Staff { b b }
      >>
    }
  }
  \hspace #2
  \center-column {
    "Reverting only the"
    "final bar line:"
    \vspace #1.2
    \score {
      \new StaffGroup <<
        \new Staff \with {
          \magnifyStaff #1/2
        } {
          b1 b
          \revert Staff.BarLine.thick-thickness
          \revert Staff.BarLine.hair-thickness
          \revert Staff.BarLine.kern
          \bar "|."
        }
        \new Staff { b b }
      >>
    }
  }
  \hspace #2
  \center-column {
    \line {Cancelling \typewriter "\magnifyStaff"}
    "only for bar lines:"
    \vspace #1.1
    \score {
      \new StaffGroup <<
        \new Staff \with {
          \magnifyStaff #1/2
          #(revert-props 'magnifyStaff 0
                         '((BarLine thick-thickness)
                           (BarLine hair-thickness)
                           (BarLine kern)))
        } { b1 b \bar "|."}
        \new Staff { b b }
      >>
    }
  }
  \hspace #2
  \center-column {
    \line {Mimicking \typewriter "\magnifyStaff"}
    "on the other staves:"
    \vspace #1.3
    \score {
      \new StaffGroup <<
        \new Staff \with {
          \magnifyStaff #1/2
        } { b1 b \bar "|." }
        \new Staff \with {
          #(scale-props 'magnifyStaff 1/2 #t
                        '((BarLine thick-thickness)
                          (BarLine hair-thickness)
                          (BarLine kern)))
        } { b b }
      >>
    }
  }
  \hspace #2
  \center-column {
    "Applying an intermediate"
    "value to all staves:"
    \vspace #1.3
    \score {
      \new StaffGroup <<
        \new Staff \with {
          \magnifyStaff #1/2
          #(scale-props 'magnifyStaff 3/2 #t
                        '((BarLine thick-thickness)
                          (BarLine hair-thickness)
                          (BarLine kern)))
        } { b1 b \bar "|." }
        \new Staff \with {
          #(scale-props 'magnifyStaff 3/4 #t
                        '((BarLine thick-thickness)
                          (BarLine hair-thickness)
                          (BarLine kern)))
        } { b b }
      >>
    }
  }
}
\layout { indent = 0 }
[image of music]

Frammenti LilyPond v2.25.31 (development-branch).