[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Multiple dots and tremolo
From: |
Jay Anderson |
Subject: |
Re: Multiple dots and tremolo |
Date: |
Mon, 5 Apr 2010 22:26:55 -0700 |
I have it centering the staccato marks fairly well. If there's already
a function sitting out there for this let me know. I couldn't figure
out how to get at the repeat count for the tremolo so I just make it a
music function parameter. Also the eval in the text function is
somewhat ugly. I wasn't able to figure out how to build up the markup
in pure scheme. This was good enough for now.
-----Jay
staccsOn = #(define-music-function (parser location dots) (number?)
#{
\override Script #'stencil = #ly:text-interface::print
\override Script #'text =
#(lambda (grob)
(define (build-lst count)
(let ((lst (list #:musicglyph "scripts.staccato")))
(if (> count 1) (append lst '(#:hspace 0.4) (build-lst (-
count 1))) lst)))
(eval (list markup #:concat (build-lst $dots)) (interaction-environment)))
\override Script #'X-offset =
#(lambda (grob)
(let* ((parent (ly:grob-parent grob X))
(parent-extent (ly:grob-property parent 'X-extent '(0 . 0)))
(parent-start (car parent-extent))
(parent-end (cdr parent-extent))
(parent-center (/ (+ parent-start parent-end) 2.0))
(extent (ly:grob-property grob 'X-extent '(0 . 0)))
(start (car extent))
(end (cdr extent))
(val (- parent-center (/ (- end start) 2.0))))
val))
#})
staccsOff =
{
\revert Script #'stencil
\revert Script #'text
\revert Script #'X-offset
}
\score
{
\relative c'
{
\staccsOn #4
\repeat tremolo 4 c8-.
}
}