lilypond-user
[Top][All Lists]
Advanced

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

Re: can you globally set different padding values for different Script g


From: Thomas Morley
Subject: Re: can you globally set different padding values for different Script grobs?
Date: Wed, 3 Jul 2013 23:11:06 +0200

2013/7/3 Kieren MacMillan <address@hidden>:
> Hi all,
>
> I want to redefine the way certain Script grobs are padded, independently — 
> e.g., I might want
>
>     staccato.padding = #0.5
>     tenuto.padding = #0.6
>     fermata.padding = #1.1
>     etc.
>
> Is there an elegant way of doing this?
>
> Thanks,
> Kieren.
> _______________________________________________
> lilypond-user mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/lilypond-user

Hi Kieran,

sometime ago David Nalesnik and I were working on it.
Originally, it was 2.14.2-code but still works with 2.17.21.

\version "2.17.21"

#(define ((custom-script-tweaks ls) grob)
   (let* ((type (ly:prob-property (assoc-ref (ly:grob-properties grob)
'cause) 'articulation-type))
          (tweaks (assoc-ref ls type)))
     (if tweaks
         (for-each (lambda (x) (ly:grob-set-property! grob (car x)
(cdr x))) tweaks)
         '())))

% Examples:

#(define ls-1 '(
    ("staccato" . ((color . (0 1 0))(padding . 0.5)))
    ("accent" . ((font-size . 4)(color . (1 0 0))))
    ("tenuto" . ((rotation . (45 0 0)) (padding . 2)(font-size . 10)))
    ("staccatissimo" . ((padding . -10) (color . (0 0 1))))
    ))

#(define ls-2 '(
    ("staccato" . ((color . (0 1 0))))
    ("accent" . ((font-size . 4)(color . (0 1 0))(padding . 1.5)))
    ("tenuto" . ((rotation . (-45 0 0)) (padding . 2)(font-size . 10)))

    ("staccatissimo" . ((padding . -10) (color . (0 0 1))))
    ("coda" . ((color . (0 0 1))))
    ))

% Kieran's list:
#(define ls-3 '(
    ("staccato" . ((padding . 0.5)))
    ("tenuto" . ((padding . 0.6)))
    ("fermata" . ((padding . 1.1)))
    ))


one =
\relative c'' {
  f1--
  f1--
  \override  Voice.Script #'before-line-breaking = #(custom-script-tweaks ls-1)
  f-. f-| f-> f-> f-- f-|
  \revert Script #'before-line-breaking
  f-> f-.
}

two =
\relative c' {
  f1--->
  f1--
  \override  Voice.Script #'before-line-breaking = #(custom-script-tweaks ls-2)
  f-. f-| f-> f-> f---> f-|
  %\revert Script #'before-line-breaking
  f-> f-.\coda
}

three =
\relative c' {
  \override  Voice.Script #'before-line-breaking = #(custom-script-tweaks ls-3)
  f1-. f-. f\fermata f \bar "||"
  \revert Script #'before-line-breaking
  <>^\markup "reverted"
  f1-. f-. f\fermata f
}



\new Staff <<
   \new Voice { \voiceOne \one }
   \new Voice { \voiceTwo \two }
   >>

\new Staff = "Kieran" \three



HTH,
  Harm



reply via email to

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