Hi Kieren,

On Sat, Apr 11, 2015 at 4:03 PM, Kieren MacMillan <
kieren_macmil...@sympatico.ca> wrote:

> Hi Pierre,
>
> > I'm not sure you'll like it since it is no incantation but a workaround.
>
> I appreciate the work… but I have multiple instances of this issue, with
> different combinations of time signatures, so this isn’t sufficient to save
> much manual work.
> I’ll just use the \editionEngraver to throw an ‘extra-offset tweak on the
> smaller TimeSignature grob(s) — one day, maybe there’ll be an automated
> solution.
>
>
>
No promises, just something hacked together.  This only moves time
signatures belonging to the same paper column as a criteron of vertical
"relatedness."  Can't say if that's a valid assumption.

 \version "2.19.17"

#(define (callback grob)
   (let* ((my-col (ly:item-get-column grob))
          (elts (ly:grob-array->list (ly:grob-object my-col 'elements)))
          (ts (filter
               (lambda (x) (grob::has-interface x
'time-signature-interface))
               elts))
          (my-ext (ly:grob-property grob 'X-extent))
          (my-ext-len (interval-length my-ext))
          (total-ext
           (map (lambda (t) (ly:grob-property t 'X-extent))
             ts))
          (total-ext (reduce interval-union '() total-ext))
          (available-space (interval-length total-ext))
          (offset (/ (- available-space my-ext-len) 2.0))
          (stil (ly:grob-property grob 'stencil)))

     (set! (ly:grob-property grob 'stencil)
           (ly:stencil-translate-axis stil offset X))))

\layout {
  \context {
    \Score
    \remove "Timing_translator"
    \remove "Default_bar_line_engraver"
  }
  \context {
    \Staff
    \consists "Timing_translator"
    \consists "Default_bar_line_engraver"
    \override TimeSignature.after-line-breaking = #callback
  }
}

shortTSmusic = {
  \time 4/4 g'4 g' g' g'
  \time 3/4 g'4 g' g'
}

mediumTSmusic = {
  \time 12/8 g'4. g' g' g'
  \time 9/8 g'4. g' g'
}

longTSmusic = {
  \time 12345/4 g'4
}

\score {
  <<
    \new Staff \shortTSmusic
    \new Staff \mediumTSmusic
    \new Staff \longTSmusic
  >>
}
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to