lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Markup on clef possible


From: Ben
Subject: Re: Markup on clef possible
Date: Sun, 10 Feb 2019 20:45:34 -0500
User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.5.0

On 2/10/2019 8:19 PM, Andrew Bernard wrote:
I want to have markup such as ST over the clefs at the start of each page in a section of the string quartet I am doing. This is to indicate ongoing ST technique over extended sections, as a reminder to the player. Clefs don't appear to support markup. Rehearsal marks would be fine, but I only get one on the first staff of the four.

You can see the sort of thing in the picture here.

Any suggestions?

Andrew


(sorry my attachment didn't go through on my last email)

\version "2.19.82"

annotateClef =
#(define-music-function (padding text-above text-below) ((number? 1) markup? markup?)
   #{
     \once \override Staff.Clef.after-line-breaking =
     #(lambda (grob)
        (let*
         ((stencil (ly:clef::print grob))
          ;; miniml distance between center staff line and markup
          (padding-threshold 5)
          ;; reference point of the original clef
          (vpos (/ (ly:grob-property grob 'staff-position) 2))
          ;; upper and lower edges of the clef
          (vextent (ly:stencil-extent stencil Y))
          (clef-top (+ vpos (cdr vextent)))
          (clef-bottom (+ vpos (car vextent)))
          ;; calculate padding acknowledging distance to clef *and* to staff
          (padding-top (max padding (- padding-threshold clef-top)))
          (padding-bottom (max padding (+ padding-threshold clef-bottom)))
          ;; create stencil for upper text and horizontal shift for centering
          (markup-stencil-above (grob-interpret-markup grob text-above))
          (shift-above (- (interval-center (ly:stencil-extent stencil X))
                         (interval-center (ly:stencil-extent markup-stencil-above X))))
          ;; create stencil for lower text
          (markup-stencil-below (grob-interpret-markup grob text-below))
          (shift-below (- (interval-center (ly:stencil-extent stencil X))
                         (interval-center (ly:stencil-extent markup-stencil-below X))))
          ;; combine the three stencils
          (new-stencil
           (ly:stencil-combine-at-edge
            (ly:stencil-combine-at-edge
             stencil Y DOWN
             (ly:stencil-translate-axis markup-stencil-below shift-below X)
             padding-bottom)
            Y UP
            (ly:stencil-translate-axis markup-stencil-above shift-above X)
            padding-top)))
         (ly:grob-set-property! grob 'stencil new-stencil)))
   #})

\relative {
  \annotateClef "Markup" ""
  \clef treble
  c'1
  \annotateClef "A.B.C." ""
  \clef tenor
  c1
  \annotateClef "D.E" ""
  \clef soprano
  c1
}

Attachment: clef markup.png
Description: PNG image


reply via email to

[Prev in Thread] Current Thread [Next in Thread]