Dan Eble <dan <at> faithful.be> writes:
>
> Would it be hard to make \change Voice work as below without relying on
> the extra “NoteSequence” context?
>
> \layout {
> \context {
> \name "Thread"
> \type "Engraver_group"
> }
> \context {
> \Voice
> \accepts "Thread"
> \defaultchild "Thread"
> }
> }
>
I think it would be hard.
The code uses the concept that \change... takes a context from one enclosing
context into another. Usually there is no context like NoteSequence that
lives inside a Voice.
(The code in change-iterator.cc is written in a general way, so that \change
GrandStaff="b" finds the highest context below the enclosing GrandStaff and
moves that context to GrandStaff "b", but I don't think anything other than
\change Staff works in a useful way.)
We probably don't want Thread to be created by default, because then
all \overrides for the Voice need an explicit 'Voice'.
Once I read old old mailing list message about contexts called "threads"
that would live inside Voice, which might be a similar idea. I think
people decided the idea caused too much complication.
The thing you want to change is the "outlet" of the sequential iterator.
So rather than a \change event that is acted upon by change-iterator.cc
you might want a partCombineStatus event that is acted upon by sequential-
iterator.cc.
That, though, would look similar to the current part-combine iterator.
_______________________________________________
lilypond-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-devel