On 24/11/12 13:34, Keith OHara wrote:
barre = #(define-music-function (parser location
    strg music) (number? ly:music?)
    #{
      \set TabStaff.minimumFret = $strg
      \set TabStaff.restrainOpenStrings = ##t
      \once\override TextSpanner #'(bound-details left text)
            = #(format #f "B ~@r" strg)
       %{ ... Nick's other style settings ...%}
      <>\startTextSpan
      $music
      <>\stopTextSpan
      \unset TabStaff.minimumFret
      \unset TabStaff.restrainOpenStrings
    #})

I was testing this barre function without the tabstaff stuff for use with scores in standard notation, and added a few extra TextSpanner settings to get the output that I want. One problem that I can't fathom is that if I add \override TextSpanner.bound-details.right-broken.text = ##f, so that the small vertical line at the RH end of the spanner is not drawn at the end of a staff when the barre wraps to the following staff, then the line also doesn't get drawn if the barre ends at the right hand end of a staff, without being broken. Why is lilypond thinking that the TextSpanner is breaking across staves when it isn't? In the example below, the end of the second TextSpanner is missing the vertical line unless the override of TextSpanner.bound-details.right-broken.text = ##f is commented out.

\version "2.17.6"

% Function contributed by Thomas Morley:
% http://lsr.dsi.unimi.it/LSR/Item?id=857
barre =
#(define-music-function (parser location strg music)(number? ly:music?)
#{
%    \set TabStaff.minimumFret = $strg
%    \set TabStaff.restrainOpenStrings = ##t
\once\override TextSpanner.bound-details.left.text = #(format #f "~@r" strg)
  \once\override TextSpanner.font-shape = #'upright
\once\override TextSpanner.bound-details.left.stencil-align-dir-y = #CENTER
  \once\override TextSpanner.style = #'line
\once\override TextSpanner.bound-details.right.text = \markup \draw-line #'(0 . -1)
  \once\override TextSpanner.to-barline = ##t
  \once\override TextSpanner.bound-details.right.padding = #1.5
  \once\override TextSpanner.bound-details.right-broken.padding = #0.5
  \once\override TextSpanner.bound-details.left-broken.padding = #2
  \once\override TextSpanner.bound-details.left-broken.text = ##f
  \once\override TextSpanner.bound-details.right-broken.text = ##f
  <>\startTextSpan
  $music
  <>\stopTextSpan
%    \unset TabStaff.minimumFret
%    \unset TabStaff.restrainOpenStrings
#})

\relative c'' {
  \key c \major
  \barre3 { \repeat unfold 48 { d4 } }
  \barre3 { \repeat unfold 20 { d4 } }
  \break
  \repeat unfold 20 { d4 }
}


_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to