Sebastien, incredible! Looking forward to see you dynamic patching thing! Wishing to help soon.
Keep rocking!
Thanks ! I was kind of afraid that you were upset by me raping your code ...
I think what I did really made the whole thing easier to maintain and easier to test. The new architecture is as uncoupled as possible and so allows for more hardcore testing (for example, I wrote full unit-tests for [cos~] : https://github.com/sebpiq/WebPd/blob/master/test/objects.js#L60).
I'll continue refactoring in the same direction, and I expect that in ~ 1 month, I'll arrive to a point where it will be about stable.
Also, I finished yesterday to implement an API for complete dynamic patching. For example, you can now do :
var patch = new Pd.Patch();
var osc440 = new Pd.objects['osc~'](patch, [440]);
var dac = new Pd.objects['dac~'](patch);
patch.connect(osc440.getId(), 0, dac.getId(), 0);
patch.connect(osc440.getId(), 0, dac.getId(), 1);
There's still a bunch of stuff I'm not fully satisfied of, but overall that's the idea.
Also, I am moving slowly all the objects from the old system to new system (implementing full unit-testing at the same time), so many objects are not available yet, because not yet migrated.
Cheers,
Sébastien