Hi Leo,

Am 07.12.20 um 23:36 schrieb Leo Correia de Verdier:
I’m not sure if this is an interesting suggestion, but if you want this as the 
actual clef you could write
%%%%%%%%%%%%%%
\once \override Staff.Clef.stencil = #ly:text-interface::print
   \once \override Staff.Clef.text = \markup {
     \override #'(font-size . -6.5)
     \unit-height-column { First second third fourth fifth sixth seventh eighth 
ninth tenth eleventh } }
   \once \override Staff.Clef.Y-offset = #5
   \clef treble % or whatever
%%%%%%%%%%%%%%

That's an excellent suggestion - I remember when I read Michael's question I thought: If we want "a sort of clef", we should use a \clef for it. But of course that changes the layout (even though one might use a whiteout property to hide the staff lines).

I moved your logic into a function (and replaced your explicit Y-offset by 0 combined with Y-centering the markup):

\version "2.21.80"

#(define-markup-command (force-unit-height layout props arg) (markup?)
   (let* ((y-centered-arg (markup #:general-align 1 0 arg))
          (stil (interpret-markup layout props y-centered-arg))
          (x (ly:stencil-extent stil 0))
          (y (cons -1/2 1/2)))
     (ly:stencil-outline stil (make-filled-box-stencil x y))))

#(define-markup-command (unit-height-column layout props args) (markup-list?)
   (interpret-markup layout props #{
     \markup {
       \override #'(baseline-skip . 0)
       \center-column \force-unit-height #args
                     } #} ))

columnClef =
#(define-music-function (contents) (markup-list?)
   #{
     \once \override Staff.Clef.stencil = #ly:text-interface::print
     \once \override Staff.Clef.Y-offset = 0
     \once \override Staff.Clef.text = \markup {
       \override #'(font-size . -6.5)
       \general-align #Y #CENTER
       \unit-height-column #contents
     }
   #})

\new Staff {
  \columnClef \markuplist { first second third fourth }
  a'4
}

Lukas


Reply via email to