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