[phasor~] ([osc~], and probably other objects too) seems to be aware of
signals being connected to its left-most inlet. Providing an argument to
[phasor~], if there's no signal coming in its inlet, it will use its
argument for the frequency. As soon as a signal is connected, it will
use that signal for its frequency. As soon as this signal gets
disconnected (even if the signal is 0), [phasor~] will go back to using
its argument for its frequency.
Reading [phasor~]'s code in d_osc.c, I can't understand how this is
achieved. I thought of looking into canvasconnections.c from the iemguts
library, but it's a bit too complicated for me. Still, there's this
comment in that file:
/* as Pd does not have any information about connections to inlets,
* we have to find out ourselves
* this is done by traversing all objects in the canvas and try
* to find out, whether they are connected to us!
*/
Does this have to do with control inlets only? How can [phasor~] know if
it's receiving a singal in its frequency inlet?