[PD-dev] Creating delayed functions in Pd external?

Christof Ressi info at christofressi.com
Mon Jun 7 03:37:17 CEST 2021


You can (ab)use Pd's own symbol table by storing the clocks in a "fake" 
Pd object and bind it to a symbol. But I wouldn't really recommend this...

Alternatively, you can use one of the existing hash table 
implementations in C, e. g. the hash table from the "stb" library: 
https://github.com/nothings/stb/blob/master/stb_ds.h.

Or use C++ :-)

Christof

On 07.06.2021 03:22, Iain Duncan wrote:
> Thanks Miller. That brings up one more question.. ;-)
>
> In Scheme for Max, the way I do it is I keep a hash-table in C going 
> with keys that are created on Scheme delay calls, so that one can 
> cancel clocks by fetching them from the hashtable. In Max, there's a 
> cross-platform hash-table implementation that I'm using. Is there 
> something similar for Pd, or if not, is there an approach you would 
> recommend for keeping a key-value store in C for the clocks by a 
> symbolic key? I guess a good question might be if this is even 
> necessary, given there can't be *that* many clocks scheduled for the 
> future. And association list type thing might do just as well.
>
> thanks for the help, it's going well, now that I can finally work on 
> it! ought to have a first alpha folks can play with in the next couple 
> of weeks.
> iain
>
>
>
> On Sun, Jun 6, 2021 at 5:36 PM Miller Puckette <msp at ucsd.edu 
> <mailto:msp at ucsd.edu>> wrote:
>
>     clock() is the only mechanism - for repeats, the easiest thing is
>     often
>     to just re-use a clock() and re-set it each time it goes off (as in
>     the metro obejct).  You can indeed create clock obejcts on the fly -
>     that's what pipe does.  But you'll want to keep track of them so
>     you can
>     cancel them if the owning object goes away.
>
>     cheers
>     M
>
>     On Sun, Jun 06, 2021 at 05:16:09PM -0700, Iain Duncan wrote:
>     > Ah fantastic, thanks. I was looking in pipe and not seeing it,
>     but was
>     > probably just lost in other new details and not seeing the
>     forest for the
>     > trees. :-)
>     >
>     > Couple of follow ups:
>     > - is there a separate facility for making a repeated callback
>     (ie not
>     > one-shot), or does one just do both with clock?
>     > - is it safe to make clocks as we need them (ie during a method
>     call, not
>     > necessarily at object instantiation time), or is this the kind
>     of thing
>     > where for real time use one needs to make a clock pool and a
>     pool manager
>     > and all that?
>     >
>     > thanks!
>     > iain
>     >
>     > On Sun, Jun 6, 2021 at 5:12 PM Miller Puckette <msp at ucsd.edu
>     <mailto:msp at ucsd.edu>> wrote:
>     >
>     > > Yep, clock_delay() .  Simples example is in Pd's "delay"
>     object, x_time.c
>     > >
>     > > cheers
>     > > Miller
>     > >
>     > > On Sun, Jun 06, 2021 at 04:21:46PM -0700, Iain Duncan wrote:
>     > > > Hi folks, I'm hoping someone can point me in the right
>     direction here.
>     > > I'm
>     > > > porting Scheme for Max to pure data and I'm stuck figuring
>     out how to get
>     > > > delayed functions going. In Max, the SDK has a facility to
>     make register
>     > > a
>     > > > callback to executed at some point in the future, a few
>     different ways.
>     > > Is
>     > > > there a Pd equivalent, and if so, could anyone point me at
>     resources or
>     > > > code for it?  I basically just need to be able to have a
>     callback fire
>     > > off
>     > > > at the right time with one argument, which can be void
>     pointer to the
>     > > rest
>     > > > of the stuff i want to get.
>     > > >
>     > > > thanks!
>     > > > iain
>     > >
>     > > > _______________________________________________
>     > > > Pd-dev mailing list
>     > > > Pd-dev at lists.iem.at <mailto:Pd-dev at lists.iem.at>
>     > > >
>     > >
>     https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.puredata.info_listinfo_pd-2Ddev&d=DwICAg&c=-35OiAkTchMrZOngvJPOeA&r=XprZV3Fxus2L1LCw80hE4Q&m=uekrR-wLMB9CDNku0beRkRmoSJoExinRbBSlb0UQknQ&s=98jkGlO1FFE0Ea5fhSopCbZt6bmZH580Y0IUfgX4Rwk&e=
>     <https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.puredata.info_listinfo_pd-2Ddev&d=DwICAg&c=-35OiAkTchMrZOngvJPOeA&r=XprZV3Fxus2L1LCw80hE4Q&m=uekrR-wLMB9CDNku0beRkRmoSJoExinRbBSlb0UQknQ&s=98jkGlO1FFE0Ea5fhSopCbZt6bmZH580Y0IUfgX4Rwk&e=>
>     > >
>     > >
>     > > --
>     > >
>
>     -- 
>
>
> _______________________________________________
> Pd-dev mailing list
> Pd-dev at lists.iem.at
> https://lists.puredata.info/listinfo/pd-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-dev/attachments/20210607/8151f163/attachment-0001.htm>


More information about the Pd-dev mailing list