lilypond-devel
[Top][All Lists]
Advanced

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

Re: Approximates cross-staff slurs in VerticalAxisGroup vertical-skyline


From: address@hidden
Subject: Re: Approximates cross-staff slurs in VerticalAxisGroup vertical-skylines. (issue 6498077)
Date: Fri, 7 Sep 2012 18:23:08 +0200

On 7 sept. 2012, at 09:34, address@hidden wrote:

> On 2012/09/04 08:09:21, mike7 wrote:
> 
>> On 4 sept. 2012, at 09:45, mailto:address@hidden wrote:
> 
>> > It makes no change for the Chopin; can you give an
>> > example where it helps?
> 
>> In the Chopin, ragged-bottom is false so the difference can't
>> really be seen. The piece isn't a good test case for how the
>> patch changes engraving but it is an excellent test case for
>> efficiency.
> 
> Did you need me to type \paper{ ragged-bottom=##5 } for you?
>  <http://k-ohara.oco.net/Lilypond/>
> With ragged-bottoms, master allows about 8 collisions between slurs and
> the pedaling in the system above, of which the patch removes 4.  That's
> not good enough to be worth the extra %15 time for me, but I guess I can
> just turn it off.

In terms of sustainability, the most important question to ask at this point is 
"does this method seem like one that could eventually suppress 8/8 collisions?" 
I think it can, but I probably won't have the time to get it there as my summer 
of lily comes to a close in 2 weeks and I'll disappear back into a hole save 
bug fixes and occasional complaining.  So if we're gonna go w/ this, it's 
important to agree that grob "stubs" are a good solution to this problem.  I 
am, of course, open to other solutions.

The nice thing about this one is that it's easy to turn off.  Or, even better, 
it's easy to turn on and we can leave it off as default.  The same goes for my 
recent skyline work - I'm all for having different includable files in ly/ like

"fast.ly" % turns off tons of calculations to create an ugly score fast
"medium.ly" % does most calculations but avoids fine-tuned collision avoidance
"slow.ly" % the full monty

> 
>> SlurStubs run the control point calculations using not the
>> actual heights and coordinates (which would trigger a vertical
>> alignment) but rather pure heights and coordinates.
> 
> So SlurStubs have a different shape than slurs.  That would be an
> example of the different information that I was asking about.
> 

Ja.

> Having the invisible Grobs taking up space will confuse the innocent.

I tried to add comments about this in the source - perhaps the CG needs an 
invisible grob bit, as we have StemStubs and SpanBarStubs as well.

> 
> In measure 36 of my example, it seems I used a text script for custom
> fingering placement.  That "4" moves to avoid the SlurStub.  (How would
> you put it back where it belongs, as a user? )

\override TextScript #'avoid-slur = #'inside
\override TextScript #'outside-staff-priority = ##f

you may also have to set the Y-offset to something in 
side-position-interface.cc - I forget what the default Y-offset is.

> 
> Do you still think it possible to use just the real Slurs ?...
> 

No.  But, as I said above, I'm open to other suggestions.

> 1) setting tentative control points using pre-line-breaking estimates of
> heights (which are later replaced when the Slurs go through their
> post-line-breaking shaping-and-scoring cycle).

This doesn't work because all of this skyline stuff happens pre-line breaking 
but post-vertical spacing.  And furthermore, there needs to be a SlurStub for 
each axis group traversed.

> 
> 2) Determining their extremal-side-only skylines, either through
> callbacks on a property other than the real "vertical-skylines" , or not
> as a callback at all but through a direct function call.

Even if this were done, it couldn't be applied to the Slur proper.  For 
example, if you have slur S that cross staves X Y and Z from bottom to top, the 
SlurStub on X would only have a bottom skyline, the SlurStub on Y would have no 
skyline and the slur stub on Z would have an upper skyline.  If the Slur had 
these two skylines via some sort of pre-skyline callback, LilyPond would think 
that the VerticalAxisGroup were the height of the Slur and would space it way 
far apart from its upper or lower neighbor.  That's why separate stubs need to 
be in each axis group.

> 
>> http://codereview.appspot.com/6498077/
> 
> 
> http://codereview.appspot.com/6498077/




reply via email to

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