lilypond-devel
[Top][All Lists]
Advanced

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

Re: Implements beam collision rest avoidance. (issue4465049)


From: address@hidden
Subject: Re: Implements beam collision rest avoidance. (issue4465049)
Date: Tue, 10 May 2011 09:48:12 -0400

On May 5, 2011, at 7:51 PM, address@hidden wrote:

> On May 5, 2011, at 1:50 PM, address@hidden wrote:
> 
>> On 2011/05/05 20:44:36, Neil Puttock wrote:
>>> On 2011/05/05 16:30:28, MikeSol wrote:
>> 
>>>> (a) People to confirm that the circular dependency I fear (beam
>> placement
>>>> relying on rest placement relying on beam placement relying on...)
>> does not
>>>> exist.
>> 
>>> Did you do a regtest run with an unoptimised binary?
>> 
>>> I get cyclic dependency errors in three tests.  Here's an example from
>>> beam-collision-basic.ly:
>> 
>>> @@ -4,6 +4,48 @@
>>> Preprocessing graphical objects...
>>> Calculating line breaks...
>>> Drawing systems...
>>> +beam-collision-basic.ly:16:25: programming error: cyclic dependency:
>>> calculation-in-progress encountered for #'quantized-positions (Beam)
>>> +    \repeat unfold 8 { c8
>>> +                         [ c] }
>>> +beam-collision-basic.ly:16:25: programming error: cyclic dependency:
>>> calculation-in-progress encountered for #'quantized-positions (Beam)
>>> +    \repeat unfold 8 { c8
>>> +                         [ c] }
>>> +beam-collision-basic.ly:16:27: programming error: cyclic dependency:
>>> calculation-in-progress encountered for #'stem-end-position (Stem)
>>> +    \repeat unfold 8 { c8[
>>> +                           c] }
>>> +beam-collision-basic.ly:16:25: programming error: cyclic dependency:
>>> calculation-in-progress encountered for #'quantized-positions (Beam)
>>> +    \repeat unfold 8 { c8
>>> +                         [ c] }
>>> +beam-collision-basic.ly:16:25: programming error: cyclic dependency:
>>> calculation-in-progress encountered for #'quantized-positions (Beam)
>>> +    \repeat unfold 8 { c8
>>> +                         [ c] }
>>> +beam-collision-basic.ly:16:27: programming error: cyclic dependency:
>>> calculation-in-progress encountered for #'stem-end-position (Stem)
>>> +    \repeat unfold 8 { c8[
>>> +                           c] }
>>> +beam-collision-basic.ly:16:27: programming error: cyclic dependency:
>>> calculation-in-progress encountered for #'Y-extent (Stem)
>>> +    \repeat unfold 8 { c8[
>>> +                           c] }
>>> +beam-collision-basic.ly:16:27: programming error: cyclic dependency:
>>> calculation-in-progress encountered for #'Y-extent (Stem)
>>> +    \repeat unfold 8 { c8[
>>> +                           c] }
>>> +beam-collision-basic.ly:16:25: programming error: cyclic dependency:
>>> calculation-in-progress encountered for #'quantized-positions (Beam)
>>> +    \repeat unfold 8 { c8
>>> +                         [ c] }
>>> +beam-collision-basic.ly:16:25: programming error: cyclic dependency:
>>> calculation-in-progress encountered for #'quantized-positions (Beam)
>>> +    \repeat unfold 8 { c8
>>> +                         [ c] }
>>> +beam-collision-basic.ly:16:27: programming error: cyclic dependency:
>>> calculation-in-progress encountered for #'stem-end-position (Stem)
>>> +    \repeat unfold 8 { c8[
>>> +                           c] }
>>> +beam-collision-basic.ly:16:25: programming error: cyclic dependency:
>>> calculation-in-progress encountered for #'quantized-positions (Beam)
>>> +    \repeat unfold 8 { c8
>>> +                         [ c] }
>>> +beam-collision-basic.ly:16:25: programming error: cyclic dependency:
>>> calculation-in-progress encountered for #'quantized-positions (Beam)
>>> +    \repeat unfold 8 { c8
>>> +                         [ c] }
>>> +beam-collision-basic.ly:16:27: programming error: cyclic dependency:
>>> calculation-in-progress encountered for #'stem-end-position (Stem)
>>> +    \repeat unfold 8 { c8[
>>> +                           c] }
>>> Writing header field `texidoc' to `./53/lily-2d77f62d.texidoc'...
>>> Writing ./53/lily-2d77f62d-1.signature
>>> Writing ./53/lily-2d77f62d-2.signature
>> 
>>> This is probably related to the existing rest translation code which
>> chains a
>>> Y-offset callback (ly:beam::rest-collision-callback) for Rest when
>> there's a
>>> rest under a manual beam.
>> 
>> Actually, that's not the case for this snippet, though it is probably
>> responsible for a similar warning in dot-rest-beam-trigger.ly:
>> 
>> +dot-rest-beam-trigger.ly:13:21: programming error: cyclic dependency:
>> calculation-in-progress encountered for #'positions (Beam)
>> +    { \time 12/16 c16
>> +                     [ b a r  b g] }
>> 
>> http://codereview.appspot.com/4465049/
>> 
> 
> I see on line 1682 of beam.cc:
> 
>  Drul_array<Real> pos (robust_scm2drul (beam->get_property ("positions"),
>                                         Drul_array<Real> (0,0)));
> 
> My question is: in the old code sans rest collision avoidance, why does the 
> rest not get the correct quantized positions of the beam and shift 
> accordingly?
> 
> 

OK - after reading more, my old question is answered but I have a new one.

It seems like rests are only moved with respect to the beam to which their stem 
is attached (line 1672, bem.cc).  However, in the beam collision engraver, 
lines 114-117 in this patch would have in theory skipped over this type of 
rest, which means it would never be part of the covered grobs list.

Any guesses as to where else the cyclic dependency (dependencies) may be coming 
from?  Or am I reading the code wrong?

Cheers,
MS


reply via email to

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