Hi Kieren,

On Thu, Oct 23, 2014 at 8:31 AM, Kieren MacMillan <
kieren_macmil...@sympatico.ca> wrote:

> Hi David,
>
> > I think that if you want automation your best approach would be to look
> at modifying the position of BarNumber.
>
> I thought of that at first, but rather hoped the InstrumentName thing
> would work out…  =\
>
> Question: Can the BarNumber *position* be set from the “expected position”
> of InstrumentName?
> If so, maybe you could apply an after-line-break callback function to move
> system-initiating BarNumbers to where the InstrumentName would normally be?
>
>
Querying Y-position of objects tends to have disastrous results.

The following routine gets at the InstrumentName grob from BarNumber, and
asking for details of Y-positioning (relative to System) gives answers, but
destroys the layout:

\version "2.19.15"

#(define (Y-pos-of-InstrumentName-from-BarLine grob)
   (let* ((refp (ly:grob-system grob))
          (all-grobs (ly:grob-array->list (ly:grob-object refp
'all-elements)))
          (grob-name (lambda (x) (assq-ref (ly:grob-property x 'meta)
'name)))
          (IN (filter (lambda (x) (eq? (grob-name x) 'InstrumentName))
all-grobs)))
     (if (pair? IN)
         (begin
          (format #t "~a Y-coord: ~a Y-offset: ~a~%"
            (grob-name (car IN))
            (ly:grob-relative-coordinate (car IN) refp Y) ; destroys
vertical spacing
            (ly:grob-property (car IN) 'Y-offset) ; destroys vertical
spacing
            )))))

music = \repeat unfold 20 {
  c4 d e f
}

\score {
  \new PianoStaff \with { shortInstrumentName = "pno." } <<
    \new Staff {
      \relative c'' {
        \music
      }
    }
    \new Staff {
      \clef bass
      \music
    }
  >>
  \layout {
    \context {
      \Score
      \override BarNumber.after-line-breaking =
#Y-pos-of-InstrumentName-from-BarLine
    }
  }
}

[Currently pursuing another line of inquiry suggested to me--will report
back.]

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

Reply via email to