Hi Harm,

On Sun, Sep 25, 2011 at 1:01 PM, Thomas Morley <
thomasmorle...@googlemail.com> wrote:


> 2011/9/24 David Nalesnik <david.nales...@gmail.com>
>
>>
>> I don't know if I've gotten at the name of the articulation in the best
>> way, but this works.  One drawback is that there can only be one override of
>> 'after-line-breaking at a time.
>>
>
> 'before-line-breaking works too (see code below).
>

Aha -- good to know!


> [ . . . ] I'd prefer to store several properties in an alist, but I
> couldn't figure out how to read-out and call.
>
> p.e.:
> #(define ls '(
>     ("staccato" . ((color . (1 0 0))))
>     ("accent" . ((font-size . 4)(color . (1 0 0))))
>     ("tenuto" . ((rotation . (45 0 0))))
>     ("staccatissimo" . ((padding . -10) (color . (1 0 0))))
>     ))
>
> Any idea?
>

You could change the function to map ly:grob-set-property! onto the alist if
a match is found:

 \version "2.14.2"

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

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


\relative c'' {
  f1--
  f1--
  \override  Script #'before-line-breaking =
      #(custom-script-tweaks '("staccato" "tenuto" "accent"
"staccatissimo"))

  f-. f-| f-> f-> f-- f-|

  \revert Script #'before-line-breaking
  f-> f-.
}

-David
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to