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

Reply via email to