Hello Kieren,

If you want to have such overrides for large parts of a score you can consider 
this solution I created for Paolo Prete some time ago which allows to override 
grob properties using details and a key function, so you can say
\override Script.details.stencil.fermata = ##f

But if you want this in only one place you should consider using something 
like
  c1-\tweak stencil ##f ^\fermata _\espressivo
Instead.

If you want a omit like command you can do
twomit = \tweak stencil ##f \etc
And then
  c1-\twomit^\fermata _\espressivo

Cheers,
Valentin
%%%  SNIPPET BEGINS


%%% if proc is a procedure evaluate (proc grob), else return proc as value
#(define (eval-if-proc proc grob)
   (if (procedure? proc)
       (proc grob)
       proc))


%%% retrieves overrides from grob.details.path.key where key is some key function or else from
%%% grob.path.default or default parameter if not exists
#(define (override-by-details tag path)
   (grob-transformer path
      (lambda (grob orig)
         (let* ((key (tag grob))
                (tweak (ly:assoc-get key
                                     (ly:assoc-get path
                                                   (ly:grob-property grob 'details)
                                                   '())
                                     'pass))
                (default (ly:assoc-get 'default
                                       (ly:assoc-get path (ly:grob-property grob 'details) '())
                                       orig)))
           (if (equal? tweak 'pass) default tweak)))))
     

%%% articulation type as tag
#(define (articulation-type grob)
   (string->symbol (ly:prob-property (ly:grob-property grob 'cause) 'articulation-type)))


\layout {
  \context {
    \Score
    \override Script.font-size = #(override-by-details articulation-type 'font-size)
    \override Script.color = #(override-by-details articulation-type 'color)
    
    % This override is only nescessary as somehow if font-size is a procedure it is not evaluated automatically,
    % so we need to manually call (ly:grob-property grob 'font-size) once.
    \override Script.stencil = #(lambda (grob)
                                  (ly:grob-property grob 'font-size)
                                  (ly:script-interface::print grob))
    
    \override Script.stencil = #(override-by-details articulation-type 'stencil)
  }
}

\score
{
  {
    \textLengthOn
    \override Script.details.font-size.tenuto = #2
    \override Script.details.font-size.accent = #-5
    \override Script.details.color.tenuto = #red
    \override Script.details.color.marcato = #blue
    c'4->^"-5" c'4--^"+2,red" c'4-\tweak #'font-size #-2 -- ^"manual tweak -2" c'-^^"blue" c'-\tweak #'color #green -^^"manual tweak green"
    s4*3 |
    c'8-- c'-> c'-! c'-^
    \temporary\override Script.details.font-size.default = #4
    c'8-- c'-> c'-! c'-^
    \temporary\override Script.details.color.default = #yellow
    c'8-- c'-> c'-! c'-^
    \revert Script.details.font-size.default
    \revert Script.details.color.default
    c'8-- c'-> c'-! c'-^
    \override Script.details.color.tenuto = #green
    c'8-- c'-> c'-! c'-^
    
    \override Script.details.stencil.fermata = ##f
    c2\fermata\espressivo
  }
}
%%%  SNIPPET ENDS

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to