lilypond-user
[Top][All Lists]
Advanced

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

Re: Are these triple-dots of augmentation possible?


From: Nathan Ho
Subject: Re: Are these triple-dots of augmentation possible?
Date: Sat, 14 Feb 2015 00:17:27 -0800

On Mon, Jan 19, 2015 at 2:59 PM, Graham King <address@hidden> wrote:
> Here's a little thing that has got me stumped.
>
> Is it possible to add three dots to a note glyph, thus:
>
> O:.
>
> to signify that the duration of the note is to be multiplied by 9/4 ?
> And can this be done in such a way
> (i) that the dots avoid clashing with staff lines, and
> (ii) that the note glyph changes correctly under \shiftDurations ? i.e. so
> that, say:
>
> c1\wierdDots                            % displays the note above,
>
> \shiftDurations #1  #0 { c1\wierdDots } % displays a 3-dotted minim, and
>
> \shiftDurations #-1 #0 { c1\wierdDots } % displays a 3-dotted breve.
>
> (For "simplicity" it is safe to assume that the second argument to
> \shiftDurations will always be zero).
>
> Grateful, as always, for any insight, even if on this occasion it is just
> expert advice to give up!
>
> -- Graham

Don't know if you still want to do this, but it's pretty easily
achieved by modifying the earlier code that Mark posted (itself
adapted from my SMuFL implementation):

%%%

\version "2.19.8"

#(define (draw-l-dots grob)
   (let* ((count (ly:grob-property grob 'dot-count))
          (dot (grob-interpret-markup grob (markup #:musicglyph "dots.dot")))
          (dot-width ((lambda (ext) (- (cdr ext) (car ext)))
(ly:stencil-extent dot X))))
     (ly:stencil-translate
       (ly:stencil-combine-at-edge
         (ly:stencil-combine-at-edge
           (ly:stencil-combine-at-edge '() X RIGHT dot)
           X RIGHT dot dot-width)
         Y UP dot (- 1 dot-width))
       (cons dot-width 0))))

lDots = #(define-music-function (parser location music) (ly:music?)
             #{
               \temporary \override Staff.Dots.stencil = #draw-l-dots
               % we use shiftDurations to "add a dot" to the note
               % 2/3 * 9/4 = 3/2
               \scaleDurations #'(3 . 2) \shiftDurations #0 #1 $music
               \revert Staff.Dots.stencil
             #})

\new Staff {
  \time 2/2
  \lDots c'4 d'4..
  \time 4/2
  \shiftDurations #-1 #0 { \lDots c'4 d'4.. }
}

%%%

Regards,
Nathan



reply via email to

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