So I've been trying to solve the autobeaming bug. The bug is as follows:
In 4/4 time, you'd like to beam 8th notes as 4 4. But if there are 16 notes present, you don't want to cross the beat. So the proper beaming would be something like: c8[ c] c8[ c16 c] c8[ c c c] The problem is that by the time you bring a 16th note into the beam, you're past the desired break time so you can't break the beam. I've written a new function, recheck_beam, that goes through an existing beam and checks to see if there's a break point when the shortest duration in the beam is reduced. In order to do so, I needed to add a test_moment argument to the beam ending code, instead of just using measure_position as the test moment. Everything compiles OK. And it runs fine until I get into recheck_beam. Recheck_beam actually executes successfully, but an exception is thrown later, and the exception doesn't make sense to me when I use gdb. Values are changed between the calling procedure and the called procedure in a way that makes no sense to me (see <http://lists.gnu.org/archive/html/lilypond-devel/2009-12/msg00283.html> for more info). After spending several unfruitful hours trying to track things down, I decided to post a patch and see if anybody could give me ideas as to what I'm doing wrong. So I've uploaded a patch to Rietveld: <http://codereview.appspot.com/179046> Any help would most gratefully appreciated. Thanks, Carl _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel