Hi,
thanks for your thoughts!
Example: If for some reason, the manuscript I'm copying has exceptional
beams of 4+2+2 instead of the usual 4+4 as in the second bar of
from Scarlatti's Partimenti (and I want to reproduce that beaming
faithfully), I have do to:
c8 c' b a e[ e'] cis'[ d']
If this beaming is a consistent pattern you can do
%%%
{
\set beatStructure = 2,1,1
\set beamExceptions = #'()
8 8 8 8 8 8 8 8
}
%%%
Yes, I know - what I meant is a situation (which I encounter quite
frequently) where such a bar is an exception in a piece.
So basically I have to enter redundant information: I have to tell
LilyPond to
1) start a beam on e,
2) end a beam on e',
3) start another beam on cis',
4) end that beam on d'.
You are not entering redundant information. Just some of that infomation
happens to align with the automatic behaviour. Should the automatic beaming
behaviour change at any point that information may be missing.
Well, one the one hand you're obviously right. But this is a very
pessimistic point of view, because your argument essentially means that
if I want to copy the beaming of a source manuscript faithfully, I must
not use automatic beaming at all, since the automatic beaming behaviour
might change at any point in the future.
But since auto-beaming rules are quite well defined (and can be given
using beatStructure etc.), I think we can be a little more optimistic
and assume that automatic beaming is not that much of a black box with
behaviour liable to change significantly any time soon; I'd rather
propose that automatic beaming means: LilyPond uses per-measure beaming
rules supplied by the user (or, most often, supplied by LilyPond in a
well-documented manner).
I think there is a niche application where this a reasonable thing, which is
when you want to specify beaming deviations that are independent of the
surrounding beaming. E.g. if you use beaming to designate a new phrase that
will require a certain beaming in 4/4:
{ c'8 e' g' a' g'\noBeam e' d' f' e' d' c' d' }
but a different one in 6/8:
{ \time 6/8 c'8 e' g' a'[ g'] e' d' f' e' d' c' d' }
(But note that this usecase already works out using `\breathe`)
It's true that the \| operator I proposed should essentially amount to
something like \tweak stencil ##f \breathe. I hadn't thought of that in
spite of spotting the \breathe handler in the Auto_beam_engraver - thanks!
(But I think, _if_ I want to implement a beam-separation command, an
implementation from scratch is cleaner than abusing the \breathe
functionality.)
Or say you do vocal music where beams are used to give melisma, but you still
want to break up long beams. Then it might be useful to specify melima breaks,
rather than the full beaming.
Well, vocal music is a different, yet related matter: It's been a
long-standing wish (there's an issue about this I think) to support true
melisma-beaming in vocal music, namely automatic grouping of beams (as
in auto-beaming) for melismata inside \autoBeamOff, ideally
automatically complemented by slurs.
But I suppose essentially your commands take the role of a `\forceBeamBreak`
and `\forbidBeamBreak`. Which I think is fine to have, but I think when you
want to be explicit with your beaming you should be explicit in beaming.
I like the names you invented for those commands! They might be superior
to what I proposed, even though they are significantly longer ...
Anyway: I still think your arguments basically imply (contrary to what
you stated) that if it's fine to use automatic beaming at all in, e.g.,
a scientific edition, then it should/could be useful to have \| /
\forceBeamBreak and the like - don't they?
Lukas