lilypond-user
[Top][All Lists]
Advanced

[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-.
  }
}




reply via email to

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