On Thu, Jun 4, 2015 at 11:35 AM, priosfilho <[email protected]>
wrote:

> Hey Nathan
>
> This is just the code developed in the thread plus more adjustable handles
> for curveto:


Unfortunately this code isn't compiling for me. There are a few extra )'s
in there.

I created this from code earlier in the thread; maybe it'll help you:

%%%%

arc = #(list 0 0) %<< global variable to bezier curve handle
glissWidth = #0.2 %<< global variable for glissando width

#(define (set-arc x y)
        (set! arc (list x y)))

#(define (get-arc)
        arc)

#(define (radians->degrees theta)
   (* theta (/ 180 PI)))

#(define (path-gliss grob)

        (if (ly:stencil? (ly:line-spanner::print grob))
    (let* ((stencil (ly:line-spanner::print grob))
                        (X-ext (ly:stencil-extent stencil X))
            (Y-ext (ly:stencil-extent stencil Y))
            (width (interval-length X-ext))
            (height (interval-length Y-ext))
            (lefty (cdr (assoc 'Y (ly:grob-property grob
'left-bound-info))))
          (righty (cdr (assoc 'Y (ly:grob-property grob
'right-bound-info))))
                        (deltay (- righty lefty))
                        (dir (if (> deltay 0) 1 -1))
                        (handle (get-arc))) ;<<------------- getting the
handle value here

       (ly:stencil-translate
         (ly:stencil-add
           (grob-interpret-markup grob
             (markup
             ;(#: tiny (format "~a" (ly:grob-properties grob)))
           ;(format "~a" (cdr (assoc 'Y (ly:grob-property grob
'left-bound-info))))
                           ;(#: tiny (format "~a" handle))
               (#:path glissWidth
                 (list (list 'moveto 0 0)
                                           (list 'curveto 0 0 (first
handle) (second handle) width (* height dir))))))
           (ly:stencil-translate
             ; the \rotate markup command doesn't let us pick a rotation
center, so we resort to the stencil command
             (ly:stencil-rotate
               (grob-interpret-markup grob
                 (markup #:arrow-head X RIGHT #t))
               (radians->degrees
                 ($atan2
                   (- (* height dir) (second handle))
                   (- width (first handle)))) 1 0)
             (cons width (* height dir))))
         (if (> dir 0)
          (cons (interval-start X-ext) (+ (interval-start Y-ext) 0.1))
          (cons (interval-start X-ext) (+ (interval-start Y-ext)
height)))))
      #f))

\new Staff \with {
        \override Glissando #'bound-details = #'((right (attach-dir . 0)
(end-on-accidental . #f) (padding . 2.)) (left (attach-dir . 0) (padding .
0.)))
        \override Glissando #'stencil = #path-gliss
}
\transpose c c' {
  #(set-arc 2 -4)
  c2\glissando c''2
}

%%%%

Regards,
Nathan
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to