What if we scrapped the current auto-beam code completely, and
replaced it
with a structured beatGrouping, something like
((denominator (ending-beatGroupings) (subdivide-beatGroupings))
(denominator2 (ending-beatGroupings) (subdivide-beatGroupings)))
We might then have something like the following in 6/8 time:
((8 (3 3) ())
(16 (6 6) (6 6))
(32 (4 4 4 4 4 4) (8 8 8)))
Then, if subdivideBeams were set to #t, we could reduce the beam
count for
a given level of beaming at the appropriate point.
I don't know if this is a better solution, but it might improve
what
currently seems to me to be a very awkward system.
One weakness in this approach is that it provides no way to have
an
auto-beam-ending rule for 3/32 beams (but I don't know of any 3/32
beams, so
I don't think that's a real limitation).
David Brobroff's request
<http://thread.gmane.org/gmane.comp.gnu.lilypond.general/46316/focus=46323>
could then be met by
((8 (4) ())
(16 (4 4) ())
(32 (8 8) (4 4 4 4)))
This would have the downside of requiring a complete redefinition
every time
you changed the time signature, but it would get rid of the
current problem
where you have to revert rules before you can add new ones. It
would also
put all automatic definitions of autobeam rules in one location in
the
source tree, rather than having them spread across two files.
I don't know if this proposal has merit or not, but it seems like
we really
ought to get to *some* combination of syntax and functionality
that we think
really works.