On Oct 28, 2011, at 7:30 AM, Keith OHara wrote:

> On Thu, 27 Oct 2011 01:34:00 -0700, m...@apollinemike.com 
> <m...@apollinemike.com> wrote:
> 
>>> What about the x_span_ of the Beam_scoring_problem ?
>> 
>> It represents two things at two different stages of Beam_scoring_problem.
> 
> Too bad you didn't use two different variables.

I've fixed the code so that x_span_ (and all variables containing x 
information) only ever represent one thing: the full x span of the beam.  The 
distinction between normal-stem to normal-stem versus left-extremity to 
right-extremity no longer exists.  This reduces the complexity (and size) of 
the code without altering the visual result.

> 
>> Starting at update_x_span_after_extremal_hangover_compensation (), the 
>> x_span_
>> becomes the real span of the beam, tacking on left and right overhang that 
>> may
>> come from stemlets or broken beams.  This is necessary for the quanting (we
>> always want edges quanted) but not possible for the slope calculations, which
>> are predicated on the idea that unquanted_y_ represents the beginning and end
>> of the beam (otherwise, we'd have to compensate for extremal hangover in each
>> function).
> 
> You are telling me _what_ happens, which I could see from the code.  Some 
> things
> looked strange, possibly accidental, so I wanted to know _why_.
> 
> I see that the slope-determining steps are influenced by note-heads, so the
> interval with normal stems is _slightly_ more convenient to use there.  I 
> notice
> that least_squares_positions() has a comment wishing it could see the 
> note-heads
> on the other portion(s) of a broken beam, for exactly your purposes.
> 

This comment is no longer relevant (my patch fixes this issue).  I didn't see 
it before & I'm removing it now.

> The interface through \override Beam 'positions used to control heights at the
> positions of the first- and last- normal stems, but that wasn't documented --
> or very convenient in case of overhangs.
> 

I discovered this by accident.
The real kicker is that this problem did not just plague broken beams - even 
unbroken ones have an overhang from the center of the extremal stem by half the 
stem width (usually 0.065 units).  This is non-negligible.  In 
beam-quanting-32nd.ly, for example, there were several too-low quantings that 
the correction of this minuscule overhang fixes.

> You make a good point that quanting should work with the ends of the full beam
> as printed including overhangs, but I assume that change is a separate commit.
> 

You don't need a separate commit: one of the benefits of standardizing x extent 
across functions is that this is automatically fixed.
Attached are the results from current master and from my patch:

\paper { ragged-right = ##t }
{
  d'8[ c' b e' r r r r r r r r r]
}

In the patch, the functions individual-slope and peters-prolongation guarantee 
quanted beams on both ends.  The only one that doesn't is strict-prolongation, 
as it is impossible to have beams strictly link up and quant their broken ends 
(or rather, the chances are infinitesimally small).

I've included this snippet as a regtest.

> 
>>> The difference between
>>> consistent_broken_slope_ and consistent_broken_slope is dangerous all by
>>> itself.
>> 
>> I'm not sure what you mean - how is this dangerous?
>> 
> Similar names (formerly also similar to the property 'consistent-broken-slope)
> with different values. Only dangerous if someone changing the code later is
> un-careful about distinguishing them.  The new patch is better about this.
> 

Good to hear!  Lemme know if you have any other comments, and many thanks for 
those you've given so far.

New patch-set up.

Cheers,
MS
_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to