trogluddite wrote:From my experience, I'd agree that any kind of re-routing (busses, selectors etc.) makes a big difference.
It's not just the preset changing time that is affected either, it's also noticable in the severity of CPU spikes when changing presets. I've had problems with a couple of my VST exports causing audio pops in my sequencer when changing modulation routing because of this - happens sometimes even if the GUI is hidden and I use MIDI to make the change (I always block re-draws when the plugin editor is not open). I don't mean the plugin itself 'popping', but a CPU spike that I can see clearly on unrelated tracks.
After some more testing i still guess a slow preset change is the result of different happenings at one moment.
I didn't dig deeper into the routing issue but i think you pointed out what the cause is here.
I had a short email exchange with malc and he said that it's not the preset change itself what is slow but rather lots of calculations afterwards especially creating big wavetables etc. I think he's right at this point. The question is how to prevent calculations which are obviously necessary to invoke changing parameters correctly? Even if there IS a lot of things to process SM still is far far away from being on par with native plugIns. I tested some PlugIns whith huge amount of parameters but i couldn't find anything which comes near SMs "relaxed" attitude.
Another big issue seems to be the amount of gui elements. E.g. my KnobMaker osm contains only drawing elements and not much calcultions nor any streams. But that's so incredibly slow that it's almost unuseable. I suspect the drawing implementation inside SM to cause that huge delay. I found that it's not possible to prevent any drawing element from being (re)drawn at a preset change if it's wired to a triggered preset parameter prim. That was at least new to me and explains pretty well what's going on if a osm contains lots of them.
Even a complete missing of a redraw prim or a disconnected view doesn't affect that behaviour. So the more draw elements are used the slower a preset change runs.
This also would explain why there're CPU spikes even though the editor is closed.
After discovering that i changed my current project from various copied gui elements which are visible one at a time to only one "master knob" and a redirecting of parameters instead. That at least seems to speed up preset change more than 50%!
Another method could be to trigger parameters to a gui element only if it becomes visible. I'll try that on the KnobMaker project...
I attached an explaining osm...