On Feb 4, 2011, at 10:19 AM, Han-Wen Nienhuys wrote: > On Fri, Feb 4, 2011 at 10:08 AM, <mts...@gmail.com> wrote: >> LGTM, but I can't do a regtest today :( >> >> >> http://codereview.appspot.com/4129050/diff/1/lily/beam-quanting.cc >> File lily/beam-quanting.cc (right): >> >> http://codereview.appspot.com/4129050/diff/1/lily/beam-quanting.cc#newcode215 >> lily/beam-quanting.cc:215: } >> Very cool stuff! >> I won't have time to do a regtest today, but I see what you're doing and >> it makes a lot of sense. >> One suggestion: perhaps we should create an enum: >> enum Stem_dir_scenarios { ALL_UP, ALL_DOWN, DOWN_TO_UP, UP_TO_DOWN, >> WACKY } that provides a tag for the beam which is then used in this >> function. My rationale is as follows: > > It's for dealing with UP/UP and DOWN/DOWN configs for the outer stems. > Collisions that fall below (for UP/UP) the edges of quant_range will > never really collide. UP/UP and DOWN/DOWN are the normal > configurations, so they would account for 99% of the beam cases. > True, although I think it's important to account for all beaming cases if possible. My old collision code used to work with first_normal_stem and last_normal_stem, but the problem I ran into is that if there are stems in the interior that go in directions other than these (for example, if the beam stems are down [ up up up up up up up down ], which happens a lot in Debussy), looking at just these stems does not reflect what's actually going on w/ the beam. I don't think accounting for all beam cases adds significant overhead to the code: if anything, difficult beaming can simply revert to the old non-optimized behavior (or a variant of it).
Cheers, MS _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel