2013/7/6 Rachael Thomas Carlson <[email protected]>:
> Hello:
>
> I am attempting to change the TabNoteHead through what the
> documentation calls 'Modifying stencils' (chp. 5.5.3).  I can't seem to
> get the stencil override to work.  I have been able to change the
> TabNoteHead through the use of postscript like in one of the snippets
> (http://lsr.dsi.unimi.it/LSR/Item?id=516) but I would rather use the
> musicglyphs in the Feta font than have to manually create each object.
>
> With that being said, I would love to be able to change the
> TabNoteHead by any means.  \deadNotes looks great but I need more
> options.
>
> I have attached a png of what I am attempting.
>
> Here is the code that does not work for me:
>
> \version "2.16.2"
>
> tick = {
>         \once \override TabNoteHead #'stencil = #ly:text-interface::print
>         \once \override TabNoteHead #'text = \markup { \musicglyph
> #"noteheads.s0la" }
> }
>
> \new TabStaff {
>         c8 \tick c8 c8 c8 }
>
> Thank you kindly,
> Rachael

Hi Rachael,

the TabNoteHead already supports the text-interface.
\override TabNoteHead #'stencil = #ly:text-interface::print is needless than.

\override TabNoteHead #'text = \markup {...}
doesn't work, because a new text needs to be inserted very early in
the compiling-process, afaik.

You could use:

\version "2.16.2"

tick = {
        \once \override TabNoteHead #'before-line-breaking =
        #(lambda (grob)
          (ly:grob-set-property!
            grob
            'text
            #{ \markup { \musicglyph #"noteheads.s0la" } #} ))
}

\new TabStaff {
        c8 \tick c8 c8 c8 }

Though, I'd prefer one of the following codings
(I recommend the second if you want to do more frequently)

\version "2.16.2"

%%%
% First possibility.
%%%

tick¹ = {
        \once \override TabNoteHead #'stencil =
        #(lambda (grob)
          (grob-interpret-markup grob
          #{
                  \markup { \musicglyph #"noteheads.s0la" }
          #}))
}

%%%
% Second possibility.
%%%

#(define (new-stil markup)
;; Creates a stencil
  (lambda (grob)
    (grob-interpret-markup grob markup)))

newTabNoteHead =
#(define-music-function (parser location mrkp)(markup?)
;; Uses @code{new-stil} in a music-function.
;; Ofcourse it's possible to use:
;; @samp{\\once \\override TabNoteHead #'stencil =
;;         #(new-stil #{ \\markup { \musicglyph #"noteheads.s0la" } #})}
;; directly.
#{
  \once \override TabNoteHead #'stencil = #(new-stil mrkp)
#})

% creating a variable as sort of schortcut.
tick² = \newTabNoteHead \markup { \musicglyph #"noteheads.s0la" }

\new TabStaff {
        \tabFullNotation
        c8 \tick¹ c8 c8 \tick² c8 }

HTH,
  Harm

_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to