Carl D. Sorensen wrote Sunday, April 05, 2009 7:33 PM
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.
It definitely has merit! Let's see if I understand it.
The current (ie in 2.13.1) beam-ending rules are used
only to prevent long beamed runs of 16th and 32nd beams.
Your suggestion easily accommodates all these. For example,
in 9/4 time there are 16 rules to do this. These could be
replaced by the far simpler
\set beatGrouping =
#'( 8 (3 3 3) ())
(16 (4 4 4 4 4 4) ())
(32 (8 8 8 8 8 8) ()))
or rather the equivalent in scm/music-functions.scm. We
could even improve the default by using sub-divided beams,
something we can't do at present.
I can't see anything this can't do. If by 3/32 beams you
mean beaming 32nd notes in threes, I think it can do this.
For example, in 9/4 you'd need to modify the above to
\set beatLength = #(ly:make-moment 1 32)
\set beatGrouping =
#'( 8 (12 12 12) ())
(16 (16 16 16 16 16 16) ())
(32 (3 3 3 3 3 3 3 3 3 3 3 3) ()))
There was a discussion some time ago about auto-
beaming east-European rhythms. See
http://lists.gnu.org/archive/html/lilypond-user/2007-12/msg00032.html
It's getting late now, so I'll leave this until tomorrow,
but I wonder if your scheme would handle this?
Trevor
_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel