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