A colleague and I are currently building a patch that is meant to take a large number of descriptors from the real time audio input and use this dynamically. In the patch there should be an option to activate or deactivate which descriptors are being channeled to the rest of the patch. Most of the descriptors are from ircamdescriptors, but also from yin and descr.
We are wondering what could be the most economic way of doing this in terms of CPU load.
One way we have tried is to have one pipo~ per descriptor, and gate the signal being fed to each one (off if the descriptor is not chosen). However, this didn’t seem to make a difference in the CPU load, even when there is no signal into all the pipos, the CPU is at the same level. So it seems pipo is doing something even with no input?
Another option is to dynamically add or take away descriptors from one pipo object (e.g. only one pipo~ ircamdescriptor object but activating/deactivating descriptor arguments through message triggers). However, we haven’t tried this yet because this will make the output vary and we’re not sure how to route date from the descriptors when the output is changing all the time (though I’m sure there is a workaround for this).
A third option is to use poly~ objects, and have one pipo~ process in each poly~ patch. This would mean that processing would stop if the poly~ patch is switched off (controlled by which descriptors are activated). This actually seems to make a difference, but it seems like a very cumbersome workaround to have a poly~ patch for each descriptor.
What would be the best approach?