lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: \change Voice


From: David Kastrup
Subject: Re: \change Voice
Date: Sat, 25 Apr 2015 07:04:28 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux)

Keith OHara <address@hidden> 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]