On Thu, 2007-10-25 at 16:22 -0400, Mathieu Bouchard wrote:
On Tue, 23 Oct 2007, Roman Haefeli wrote:
the main problem with dynamic patching is, that it is very likely, that it causes audio drop-outs.
It wouldn't take much code to introduce something that can wrap dynamic patching in a way that prevents any DSP recompilation at the wrong moment.
E.g. If I have a patch that has 40 DSP objects, and then I instantiate an abstraction that has 10 dsp objects, 20 times, this recompiles DSP 20 times, taking a total of 10*(40+(10+10*20)/2) = 1450 dsp_add calls. If the dynamic creations dominate, the time increases quadratically, which is one kind of "gets bad quite quickly".
Bracketing a bunch of dynamic object creations with a dsp-disable / dsp-enable pair, you just recompile once at the end, in the above example totalling to 40+10*20 = 240 dsp_add calls, which is exactly the size of the dsp graph you have at the end.
that is what i do in netpd since last change. whenever a patch is loaded, it is not openen per message anymore but created dynamically as an abstraction. i found out, that it takes _much_ less time, if dsp is turned off before and turned on after creating it. this is probably the difference between what you describe as linear and quadratic increase.
Getting any better than linear time is somewhat harder, especially for pd, but linear is already much better than quadratic.
especially when creating ~-objects, the dsp graph needs to be recompiled, which requires some cpu power.
... uninterruptible cpu power.
but if patches don't expect the dsp to be updated immediately, the job could be spread over several logical time blocks.
don't know how to do that. there is no way in pd to tell how much behind schedule pd is with computing, or is there? anyway, in the case of netpd it wouldn't help anyway, since complete patches are created as single abstractions. i wouldn't know how to break that into smaller chunks.
___________________________________________________________ Der frühe Vogel fängt den Wurm. Hier gelangen Sie zum neuen Yahoo! Mail: http://mail.yahoo.de