[PD-dev] Calling a method periodically
Frank Barknecht
fbar at footils.org
Mon Mar 17 23:17:38 CET 2008
Hallo,
Greg Surges hat gesagt: // Greg Surges wrote:
> It looks like this is the right track...
>
> Looking at the metro code, I'm a little confused as to how the object
> continues to output bangs after the first. What does it mean that
> clock_delay "calls back"?
When you create a new clock with clock_new, you pass it a method "fn":
EXTERN t_clock *clock_new(void *owner, t_method fn);
"fn" is the callback method, that gets called, if you later run
"clock_delay" with your clock and the delaytime. It gets "owner"
passed as argument, so it's called as: "fn(owner)"
In the metro-code, the clock is created in metro_new:
x->x_clock = clock_new(x, (t_method)metro_tick);
Here "metro_tick" get registered as the callback method of clock
"x->c_clock". Then "metro_float" is responsible to start the metro,
which is made by calling "metro_tick(x)" directly once, if the
incoming float is not 0.
After that, "metro_tick" kind of calls itself over and over again
using "clock_delay(x->x_clock, x->x_deltime);": Each time,
"clock_delay" is called, it waits for x->x_deltime to then call the
registered method, "metro_tick(x)", again.
You use clock_unset to stop the clock, and clock_free to destroy and
free it completely.
It may be easier to first understand how [delay] works, as it's a bit
simpler. And for a more complicated object, try to figure out how
[pipe] works. ;)
Ciao
--
Frank Barknecht _ ______footils.org__
More information about the Pd-dev
mailing list