|
|
Created:
12 years, 11 months ago by MikeSol Modified:
12 years, 7 months ago CC:
lilypond-devel_gnu.org Visibility:
Public. |
DescriptionImplements beam collision rest avoidance.
Patch Set 1 #
MessagesTotal messages: 6
I can already see that this may lead to circular dependencies, but (miraculously) it passes the regtests and actually improves all but one collision, whose results were bad before and are worse now (it squashes the beam into a notehead). Obviously, this patch is rather simple, so I'm looking for: (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. (b) Confirmation that this does exist with suggestions for how to handle it. Thanks! ~Mike
Sign in to reply to this message.
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. Cheers, Neil
Sign in to reply to this message.
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] }
Sign in to reply to this message.
On May 5, 2011, at 1:50 PM, n.puttock@gmail.com 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? Cheers, MS
Sign in to reply to this message.
On Thu, May 5, 2011 at 5:44 PM, <n.puttock@gmail.com> wrote: > > 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: > we should add a note to always use the unoptimized debug binary for the regtests. It has more internal checking and error reporting. It compiles faster to boot -- Han-Wen Nienhuys - hanwen@xs4all.nl - http://www.xs4all.nl/~hanwen
Sign in to reply to this message.
On May 5, 2011, at 7:51 PM, mike@apollinemike.com wrote: > On May 5, 2011, at 1:50 PM, n.puttock@gmail.com 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
Sign in to reply to this message.
|