Thank you very much, Lukas! Well, I didn't want to bother so much with more
conditions. They are namely: only sharp accidentals and only notes starting
from the fourth line and higher when the stem is down. For my use case I
would just add those extra conditions in abjad. The reason why we have now
a default fermata padding of 0.4 and not 0.5, for example, is that the
padding should ideally be intelligent enough to cater for these special
conditions. 0.4 is for now a universal compromise.

Am Do., 8. Sept. 2022 um 12:30 Uhr schrieb Lukas-Fabian Moser <[email protected]>:

> Hi Martín,
> Am 08.09.22 um 10:52 schrieb Martín Rincón Botero:
>
> I would like to have less padding for a fermata when a note has an
> accidental. Say, if the fermata has a padding of x, I would like it be
> x-0.1 or so when the note in question has an accidental. I would be
> thankful for a snippet :-).
>
> Scripts (like a fermata) can be added to a chord (instead of a single note
> head); which note's accidentals should then be considered?
>
> Anyway, the following snippet changes the padding of a fermata if _any_ of
> the note heads in the fermata's note column has an accidental:
>
> \version "2.23.10"
>
> mus = \relative {
>   f''4 fis fis <fis cis>
>   <fis cis> <fis cis>
> }
>
> {
>   \override Script.before-line-breaking =
>   #(lambda (script-grob)
>      (let*
>       ((script-cause (ly:grob-property script-grob 'cause))
>        (articulation-type (ly:event-property script-cause
> 'articulation-type))
>        (default-padding (ly:grob-property script-grob 'padding))
>        (note-column (ly:grob-parent script-grob X))
>        (note-heads (ly:grob-array->list
>                     (ly:grob-object note-column 'note-heads)))
>        (accidentals
>         (map
>          (lambda (note-head) (ly:grob-object note-head 'accidental-grob))
>          note-heads)))
>       (if (and (eq? articulation-type 'fermata)
>                (any ly:grob? accidentals))
>           (ly:grob-set-property! script-grob 'padding
>                                  (+ default-padding 2)))))
>
>   \time 2/4
>   << \mus \repeat unfold 6 s4\fermata >>
>   % tenuto (and staccato, ...) should not be changed
>   << \mus \repeat unfold 6 s4\tenuto >>
>
> }
>
> Note that this needs a fairly recent LilyPond version, since we changed
> the 'articulation-type from a string to a symbol at the end of 2021.
>
> Lukas
>


-- 
www.martinrinconbotero.com

Reply via email to