Jan-Peter Voigt <jp.vo...@gmx.de> writes:

> Hi David and all,
>
> I [am] stuck with successfully sending override-events from an
> engraver. I created an example where I broadcast 3 events, one of them
> being an override, but the override is not applied while the other 2
> events are processed as expected.  All events are sent using the same
> procedure. What might be the error in this procedure. Is there
> something missing?

>      (ly:broadcast (ly:context-event-source context) ; broadcast to this 
> context
>        (ly:make-stream-event
>         (ly:assoc-get 'types evcls '()) ; get event class from attributes
>         (ly:music-mutable-properties music)) ; get properties for this 
> music-event
>        )

Well, here is your mistake.  The context modifying stream events are
_completely_ different from their originating music expressions.  Most
stream events are converted directly from music expressions in the
manner you do it here.

However, the stream events for modifying context properties are
generated by separate iterators and are basically ad-hoc (this seems
weirder these days than it may have been in the grey mists of time since
in olden times it was the responsibility of the iterator to implement
"\\once", something that it could not actually reliably do).

Check the source code in lily/property-iterator.cc to see what to
generate here for the various events (Push/Pop correspond to
override/revert).

-- 
David Kastrup

_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to