On Nov 6, 2011, at 4:56 AM, harm6 wrote:

> 
> Hi,
> 
> using a beam-stencil-override, I'd wish to adjust the stem-length within the
> beam-stencil-override. The following (boiled down) function works fine in
> most cases, even with kneed-beams. But when using it in a cross-staff
> example with kneed-beams, I've noticed a problem: Some stems are affected
> some not. Oddly enough, when changing the global-staff-size, I retrieve
> different results.
> 
> 

I love how that looks!!
I need to find a way to work it into a piece...

The function will be consistent if you hijack a different property.  To wit, 
quantized-positions.  By the time you call ly:beam::print, the stencil values 
for the stem may have already been cached, in which case they will not be 
recalculated for length.

Cheers,
MS

\version "2.15.16"


#(set-global-staff-size 20)

#(define ((stem-change y) grob)
  (let ((pos (ly:beam::set-stem-lengths grob)))
     (begin
       (ly:grob-set-property! grob 'color red)
       (map 
         (lambda (n)
           (ly:grob-set-property! n 'length y))
             (ly:grob-array->list (ly:grob-object grob 'stems))))
  pos))

%---- Test

top = \change Staff = "1"
bottom = \change Staff = "2"

music = \relative c {

       \override Beam #'auto-knee-gap = #0

       \override Beam #'quantized-positions = #(stem-change 20)

        \bottom c32[ g' \top eis'']
        c[ b \bottom  g,]
        \top e''[ \bottom c,, \top  g'']
        \bottom c,,64[ \top g'' e' \bottom c,, \top  c'']
        f,,32 [f''' f,,, f''']
}

\score {
 \new PianoStaff <<
   \new Staff = "1" {
     s4 s8 s16
   }
   \new Staff = "2" {
     \clef bass
     \music
   }
  >>
}


_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to