[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Issue difficulty tags

From: David Kastrup
Subject: Re: Issue difficulty tags
Date: Mon, 08 Nov 2021 00:19:55 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

Carl Sorensen <> writes:

> As far as I can see, this is desirable, but certainly not low-hanging
> fruit.  In fact, I think that defining the Right Thing is an extremely
> difficult task, let alone implementing it.
> If you have two voices to combine, there are three possible choices:
> Voice 1, Voice 2, or combined.
> If you go to three voices, you now have 7 choices: Voice 1, Voice 2,
> Voice 3, Voice 1+2, Voice 2+3, Voice 1+3, Voice 1+2+3.
> If you go three voices, you have 14 choices: Voices 1, 2, 3, 4, 1+2,
> 1+3, 1+4 2+3, 2+4, 3+4, 1+2+3, 1+3+4, 2+3+4, 1+2+3+4.  And then you
> have combinations of these: 1, 2, 3+4; 1, 2+3, 4; etc.
> I think this sounds like an easy problem, but once I looked into it, I
> decided there was nothing easy about it.
> If you could come up with a an algorithm that would allow me to Do The
> Right Thing given unlimited voice inputs, then I imagine it's
> implementable.  But I think coming up with the algorithm is very
> challenging.

I think the only reasonable approach here is to keep each voice in its
own continuing voice but juggle the listeners of the various engravers
around such that multiple noteheads can land on the same stem and
similar.  To me that seems the only feasible way for avoiding an
exponential explosion of contexts where you stand little chance of
finding a common Voice for drawing a slur from one moment to the next.

That's seriously non-beginner stuff.  It's actually architecture-level
stuff, diluting the Voice separation that turns ad-hoc polyphony (in
contrast to fixed polyphony determined by player separation or at least
instrument part separation) like that common in piano and other keyboard
music into a nuisance for typesetting with LilyPond.

David Kastrup

reply via email to

[Prev in Thread] Current Thread [Next in Thread]