I use debug print statements when developing scheme music functions. I
have this evening noticed for the first time that my complete
perplexity regarding various properties may actually come from the
following problem. When I run a function several times in a row, the
print output comes out in backwards order to the score note order. [No
wonder I have been confused.] The MWE here shows this.

Have I fundamentally misunderstood the essence of lilypond? Is the
engraving laid out backwards? Is there something intrinsically
non-linear about the engraving engine that means that the way I debug
and develop is in principle disallowed? I ask in all seriousness.
Otherwise, how to explain the results of the MWE?

[The function is purposely cut down so as to be a MWE, and
consequently is only a toy that does nothing but print the property of
interest to me, by way of explanation.]

Andrew

== snip

\version "2.19.45"

slashDbg =
#(define-music-function (ang stem-fraction protrusion)
   (number? number? number?)
   #{
     \once \override Stem #'stencil =
     #(lambda (grob)
        (let* (
               (beam (ly:grob-object grob 'beam))
               (beam-X-pos (ly:grob-property beam 'X-positions))
               (beam-Y-pos (ly:grob-property beam 'positions))

               (stil (ly:stem::print grob)))

          (display beam-Y-pos) (newline)
          stil))
   #})

{
  \voiceOne

  \once \override Beam.positions = #'(6 . 9)
  \slashDbg 50 0.8 0.7
  b''8 [ b' b' c' c'] s8

  \slashDbg 50 0.8 0.7
  d''8[ b' b' c' c'''] s8

  \once \override Beam.positions = #'(8 . 5)
  \slashDbg 50 0.8 0.7
  d''8[ b' b' c' c''] s8
}

== snip

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

Reply via email to