Hi David
2011/9/24 David Nalesnik <[email protected]>
> Hi Harm,
>
>>
> Thanks for the insight!
>
> So then you could do something like this:
>
I tried, but without success. :)
\version "2.14.2"
>
> #(define (padding-for-tenuto x)
> (lambda (grob)
> (if (equal? "tenuto" (ly:prob-property (assoc-ref (ly:grob-properties
> grob) 'cause) 'articulation-type))
> (ly:grob-set-property! grob 'padding x)
> '())))
>
> #(define (custom-articulation-padding type x)
> (lambda (grob)
> (if (equal? type (ly:prob-property (assoc-ref (ly:grob-properties
> grob) 'cause) 'articulation-type))
> (ly:grob-set-property! grob 'padding x)
> '())))
>
> \relative c'' {
> \once \override Script #'after-line-breaking = #(padding-for-tenuto
> 0.75)
> f1--
> f1--
> \override Script #'after-line-breaking = #(custom-articulation-padding
> "accent" 1)
> f->
> f->
> \revert Script #'after-line-breaking
> f->
> }
>
> 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).
> So, if you want multiple changes to default values -- a change to tenuto, a
> change to accent, etc. -- these should be added as conditions to the
> function. The second function lets you plug in the name of the articulation
> you want to override.
>
I did it this way:
\version "2.14.2"
#(define my-script-alist '(
("staccato" . (font-size . 15))
("accent" . (font-size . 4))
("tenuto" . (rotation . (45 0 0)))
("staccatissimo" . (padding . 2))
))
#(define ((custom-script-tweaks type) grob)
(map (lambda (arg)
(let ((lst (assoc-ref my-script-alist arg)))
(if (equal? arg (ly:prob-property (assoc-ref (ly:grob-properties
grob) 'cause) 'articulation-type))
(ly:grob-set-property! grob (car lst) (cdr lst))
'())))
type))
#(define (custom-articulation-tweaks type property x)
(lambda (grob)
(if (equal? type (ly:prob-property (assoc-ref (ly:grob-properties grob)
'cause) 'articulation-type))
(ly:grob-set-property! grob property x)
'())))
\relative c'' {
f1--
f1--
\override Script #'after-line-breaking =
#(custom-articulation-tweaks "accent" 'color red)
\override Script #'before-line-breaking =
#(custom-script-tweaks '("staccato" "tenuto" "accent"
"staccatissimo"))
f-. f-| f-> f-> f-- f-|
\revert Script #'after-line-breaking
\revert Script #'before-line-breaking
f-> f-.
}
To override "accent" I used the second function with 'before-line-breaking.
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?
Best,
Harm
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user