I was thinking maybe a low-quality mode or something. Just wondering though, why does some setups in KarmaFX take so much CPU compared to many other synths?
They are easier to optimize, simply because they are fixed.
That said, I believe there still is stuff that can be done to speed up the synth.... and I promise to take a look at it
If you have a specific setup that you think takes excessive amounts of CPU, please do send me a patch so I can take a look and perhaps remove or optimize the bottleneck.
Please note however that the power you are given with a modular synth has a price. This power is freedom to let you patch modules together in endless ways, but that freedom also allows you create setups that will bring even a modern PC to its knees. If you for instance route an OSC into a reverb module then into a 16xunison module and finally into a 8x polyphony notepitch module, that is like asking for trouble, but that setup is of course also far from optimal.
Some general patch performance tips are:
* Try using as few modules as possible to get the desired result.
Remember, every module will eat a tiny chunk of your CPU.
* If you use polyphony, place all modules that don't need polyphony after the notepitch module.
Typically this means effect modules. If you place a reverb _before_ an 8x polyphonic notepitch module the synth will worstcase internally run 8 instances of the reverb. Expensive stuff, and you won't really hear the difference.
* Place any unison module as close to the osc as possible in the signal chain.
* Only use stereo where it counts.
* Be aware that some modules are more expensive to use than others.
Simplified, Osc's, simple filters and Modulators are fast, while Effects, EQ filters and unison/polyphony is slow.
The code in KarmaFX Synth is highly optimized, in many cases by writing inner loops by hand in FPU/SSE assembler. While this is all fine, things could be made even faster by cutting corners at the cost of a slight quality loss. For instance, modulation doesn't really have to be updated every sample, but could be updated at a lower frequency, like say every fourth sample, in many cases without you would hear a difference.
However, KarmaFX Synth has never walked down that path. I truly believe that quality matters and is far more important than speed. I don't think anyone would choose to use a software synthesizer, if they can get better quality out of their old hardware synthesizers. If you think differently, let me know.
Yes, in terms of looking at certain specific setups for optimization, I think some of the patches I have created can "reveal" features that should be implemented in KarmaFX. A real-world example:
I need velocity to have a greater effect on volume than the amp module can do on its own, therefor I connect 3 amp modules and set velocity control 100% before I get the desired effect. If you increased the range of one amp module it would help a lot.
I usually find the distortion to be a bit weak. Slapping on 3 compressors and turning up the gain really gets things powerful! If the distortion unit instead had a pre-gain with a big range, that would help in that situation.
Here's an optimization example:
To get the desired tone of the osc, I need the distortion effect to be before the NotePitch module so that playing two notes doesn't create dishormonic screams. Not sure if this could be optimized, but it takes my whole core at 6 polyphony.
When a note isn't being played, there's still a lot of CPU usage because somehow the modules are still oscillating. Turning the NotePitch polyphony down helps, but I'm wondering why the CPU is being used during silence. It's possible you could look at this and optimize it.
Edit: I would have showed you these very presets but I'm waiting for the contest!!!!
Eventually I would want to be able to type in values as well as turning knobs and be able to tell the keytracking how much each semi-note step value is so I can easily create self-oscillating tuned filters in KarmaFX. Right now, no setting seems to be able to get it perfectly in tune.
Considering the CPU usage yes is indeed massive even on a fairly moderate-end PC/laptop, I have to say though that despite the really high quality output of KarmaFX Synth, have you considered adding (not as default, but as an optional setting) an "Eco" setting to compensate speed in sacrifice of such quality?
It's understandable to the intentions of the design of the synth, however I still feel at 16 poly with the NotePitch module, the CPU usage is excessive and makes it slightly difficult to work with, without fearing the computer will hang. (Course it doesn't matter too much with monosynth lead patches, though that Rudess Lead one I've made a while back IS pushing it for 1 poly.)
Just me 2 cents. Regards.