lilyp...@googlecode.com wrote:
Comment #7 on issue 638 by percival.music.ca: auto-beam-settings do not
take into account *all* durations covered by the beam
I think this is the autobeaming issue that Carl's working on.
Hi, Carl,
from what I understand from Graham's remark it is you who's working on
beaming?
If so, perhaps you can help me with the following and/or include it in
your thoughts and implementation.
I have a few pieces where I want use beams to denote melismata . On the
other hand, for some longer melismata - often also including quarter or
half notes - which I specify with slurs, I want the usual automatic
beaming take place inside.
Now, it's awkward to always write ([ ]), when essentially ( ) already
implies what I want. So, a straightforward idea was to leave auto
beaming activated, and try a function like this:
INPUT: music m
slurred = false
for each chord c in m {
if (c contains a "(" [slur-begin]) {
slurred = true
add forbid-beam-to-the-left to c
add allow-beam-to-the-right to c
} else if (c contains a ")") {
slurred = false
add allow-beam-to-the-left to c
add forbid-beam-to-the-right to c
} else {
if (slurred) {
add allow-beam-to-the-left to c
add allow-beam-to-the-right to c
} else {
add forbid-beam-to-the-left to c
add forbid-beam-to-the-right to c
}
}
}
Alas, the problem is: the allow-beam-* and forbid-beam-* are
nonexistent, AFAICS. \noBeam outside of the slurs destroys the auto
beaming from the last possible beam start position to this point, which
may influence notes in the surrounding melismata; and something like
just adding [ to ( and ] to ) gives stub beams also in cases like { c8([
c4 c8]) }, where I actually want flags.
So, my question is: how much effort would it take to have such a
allow-beam-* or forbid-beam-* functionality?
I also could imagine a \splitBeam command, which forbids a "bridge beam"
between the preceding and the following note:
{ c8 c c c c \splitBeam c c c }
========== | =======
| | | | |\ | | |
| | | | | | | |
Then, the code for my function would look like
slurred = false
for each chord c in m {
if (c contains a "(" [slur-begin]) {
slurred = true
insert \splitBeam before c
} else if (c contains a ")") {
slurred = false
} else {
if (! slurred) {
insert \splitBeam before c
}
}
}
Hell, even simpler. But - as I said - I have no idea of the work
involved in this. It'd be great if you think about it, though.
Thanks,
Alexander
_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel