[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Help with Scheme engraver please
From: |
Trevor Daniels |
Subject: |
Re: Help with Scheme engraver please |
Date: |
Wed, 24 Aug 2016 10:51:26 +0100 |
David Kastrup wrote Wednesday, August 24, 2016 7:48 AM
> "Trevor Daniels" <address@hidden> writes:
>
>> Prompted by the recent discussion on lute tablature, I tried coding a
>> Scheme engraver to create the duration grobs but quickly ran into a
>> problem. I need to collect information from both a Listener and an
>> Acknowledger so the obvious place to build the grob is in
>> stop-translator-timestep,
>
> No, no, no. stop-translator-timestep really is only for cleanup work.
> Stuff is no longer in working order then. You want process-acknowledged
> here I think.
>
> There will always be a call to process-acknowledged whenever grobs have
> been created, and _reading_ stuff from grobs should be delayed until
> then since other acknowledgers might _write_ stuff into a grob even
> after your personal acknowledger has been called. So the basic workflow
> is to use the various acknowledgers to _record_ the grobs you are
> interested in and _write_ stuff into them (or do read/write stuff that
> more or less is accumulative and/or really unrelated to other
> engravers), and then use the process-acknowledged hook for processing
> (including _reading_) the grobs you had recorded.
>
> You can create new grobs in process-acknowledged. That will lead to a
> new cycle of acknowledger calls followed by process-acknowledged. Only
> when all those cycles are over is stop-translator-timestep called, and
> then creating grobs is no longer an option.
Thanks David. That's beautifully clear, and much better than the rather
terse sentence in the CG which misled me:
"If useful things are to be done to the acknowledged grobs, this should be
deferred until all the acknowledging has finished, i.e., store the acknowledged
grobs and process the information in a process-acknowledged () or
stop-translation-timestep () function."
I took what appeared to be the stop-translation-timestep option.
I'll take a time-out and prepare a patch for the CG based on your mail.
Trevor