I'm using M4L on Live version 8.3.3 with Max6 version 6.0.5 with the Gen~ option (not sure what version - where do I look?).
I made two sample synths to try to figure out why Gen~ is not working as efficiently for me as using MSP objects.
The first sample (synth4) uses standard MSP objects to implement a filter with resonance. It uses an array of onepole~ objects and a selector~ to chose a 1 pole, 2 pole, 4 pole, or 8 pole configuration. A reson~ object is used for the resonance and a balance control fades between the onepole~ array and the reson~. The synth part is very basic - just enough to make a noise. It is implemented using poly~ with 64 voices. Note that my implementation purposely allows all 64 voices to remain runnnig so I can see the performance numbers. I'm working on a much larger synth that uses only 6 voices and it is having some serious performance issues, so I had hoped to use Gen~ to improve things.
The second sample (synth5) uses the same synth parts, but the filter is constructed using gen~. I found some example code for the onepole and the reson in the examples folder and modified it make what I think is the equivalent configuration as the one in synth4.
I run the synths in M4L. For Synth4, Live shows 28% CPU. For Synth5, Live shows 62% CPU.
I'm new to Max/MSP and very new to using Gen~. I will appreciate any comments on anything I might be doing wrong that is causing the 62% CPU. I was hoping to use Gen~ to cut my CPU to make it a lot smaller that 28%, but I'm afraid I don't understand enough to know what I'm doing wrong. I have another filter design using MSP lores~ and Gen~ (again from the examples) and the MSP version uses 22% CPU while the Gen~ version uses 60%. I can post that one too if need be.
I'm not sure whether the copy compressed gets everything copied, so I'll copy all of the separate pieces.
SBT_TestGen5.maxpat (for the poly~):
And, the three Gen~ parts: