Keith OHara <k-ohara5...@oco.net> writes: > 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.
At the time of the discussion, the presence of \accepts implied a \defaultchild. This is no longer the case. Consequently, tricking around with optional subvoices is better possible. > The thing you want to change is the "outlet" of the sequential > iterator. That's just \context Voice = "xxx". However, it does not take engravers and properties along, as opposed to \change ... -- David Kastrup _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel