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
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to