Mathieu Bouchard wrote:
On Mon, 7 Jul 2008, mescalinum@gmail.com wrote:
btw such "range" is very feasible with only pd language and dynamic patching.
It can't be used in practice. Try putting it in a patch, save the patch, reload the patch. All connections from the outlets of this [range] will fail. This is because it uses [loadbang] instead of [initbang], and because [initbang] does not exist. This proves one of my points.
Then this patch can't be edited with plain pd because this changes the object numbering, which is not written anywhere in a patch, and changing the object numbering breaks the dynamic patching. This is the sort of problem that was solved with the introduction of assembly language as a replacement to machine language... and frankly I'd rather program in C than in either of those. This proves another one of my points. But on top of that, you can't edit that abstraction and resave it while pd is not running in -noloadbang mode.
Thanks for providing the example that illustrates the two main problems that I see with what is about the best that one can do with normal pd (even with externals).
The third issue is that your version lacks the dynamic inlets, but that's a detail, and I know you can do it, and it's not worth fixing it until your abstraction can be used in practice.
The workaround for the lack of [initbang] is to set an arbitrary limit on number of dynamic inlets/outlets, have them created in advance, and delete the extraneous inlets/outlets at [loadbang] time so that the object looks nice. Sort of underwhelming, but it would work for most purposes.
thanks for your argument. I just filed a feature request for pd [1] and I hope someone finds the time to implement it. I could do it perhaps, but I'm really busy with school right now.
Best regards, Federico Ferri
1: http://sourceforge.net/tracker/index.php?func=detail&aid=2013658&gro...