lilypond-user
[Top][All Lists]
Advanced

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

Re: How to read out the slope of a beam?


From: David Nalesnik
Subject: Re: How to read out the slope of a beam?
Date: Tue, 11 Oct 2011 21:12:05 -0500

Hi Harm,

On Sat, Oct 8, 2011 at 6:38 PM, harm6 <address@hidden> wrote:

Hi,

trying to hack Beam stencil, I need to read out the slope of the original
Beam. I thought reading out the y-extent, the x-extent and using the
quotient would do the job. But I was wrong: this quotient can't be negativ.


All the additional beams should be parallel to the originals.

How to do?


Hi Harm,

I'm not sure what the best way is to determine a beam's slope, but you might incorporate the 'position property in your function to determine whether the slope is positive or negative:

#(define (test grob)
    (let* ((beam (ly:beam::print grob))
           (dir (ly:beam::calc-direction grob))
           (beam-extent-x (ly:stencil-extent beam X))
           (beam-length-x (interval-length beam-extent-x))
           (beam-extent-y (ly:stencil-extent beam Y))
           (beam-length-y (interval-length beam-extent-y))
           (beam-thickness (* 0.48 (ly:output-def-lookup (ly:grob-layout grob) 'staff-space)))
  (beam-positions (ly:grob-property grob 'positions))
  (beam-slant (if (> (car beam-positions) (cdr beam-positions)) -1 1))
           (orig-slope (* beam-slant (/ (- beam-length-y beam-thickness) beam-length-x)))

           (markup-a (markup #:with-color red
                             #:beam beam-length-x
                                           orig-slope
                                           beam-thickness))
           )   ;; end of defs in let*
           
  (ly:stencil-add
      beam
    (ly:stencil-translate-axis
      (grob-interpret-markup grob markup-a)
      (* dir 4) Y))
      ))
 
Hope this helps!

David

reply via email to

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