"Keith OHara" <[email protected]> writes:

> I wasn't very clear with fragmented codereview comments below.
>
> There is one new problem, with slurs silently dropped in
>   \partcombine {c''2^( d'')} {c'2( d')}
>

I used

{ \partcombine {c''2^( d'')} {c'2( d')} }
\layout {
  \context {
    \Voice
    \consists
    #(make-engraver
      (listeners ((slur-event eng ev)
                  (format #t "~a:~a~a\n"
                   (ly:context-id (ly:translator-context eng))
                   (assoc-ref
                    '((-1 . "_") (1 . "^") (0 . "") (() . ""))
                     (ly:event-property ev 'direction))
                   (assoc-ref
                    '((-1 . "(") (1 . ")"))
                    (ly:event-property ev 'span-direction))))))
  } }

to verify that the slurs arrive more or less as expected.

> The problem is avoided if get_property("direction") is replaced with
> get_pure_property(), but I don't like the idea of having even more
> code require understanding of "pure".  Better might be to cache the
> first explicit direction on a slur-start-event this time-step.

Sounds quite like the easiest solution.  A Drul array of booleans for
registering when an explicit direction has been seen.  Or simply up_seen
and down_seen.  Or something.

> Another solution is to do what version 2.14 did and ignore all but the
> first slur-start-event we see (but keep the new more intelligent
> filter for warnings).

That would mean that the direction of the resulting slur would depend on
the order of events, basically making it more random than desirable.

-- 
David Kastrup


_______________________________________________
lilypond-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to