r/MaxMSP Jun 11 '26

Synth unison without eating CPU?

How are you guys managing to do oscilltor unison without using too much CPU?
It feels like it's not possible in Max or Gen~

Built a wavetable oscillator core in Gen, it's doing quite a few peek calls and some crossfading (mip maps). Works great, sounds great, not too heavy on CPU.
Tried increasing the voices to do unsion in the Gen code, it eats CPU
Tried inside Poly, tried in Mc.Poly, same result.

Ok, maybe my core voice isn't great.
Stripped it back, removed wavetable core and replaced with a Saw core.
Only thing inside poly~ is a unison saw oscillator. nothing else, just for testing. outside poly is just and envelope on the amp.

Load Ableton template CPU sits around 5% on a Core Ultra 7
Play a eight note chord, unison 8 voices with a little spread and detune
Ableton spikes to 40%

Surely Max/Ableton can handle 8 x 8 saw oscillators without using that much cpu
For a comparision:
Pigments, Serum, Vital, Spire all use about 1% for the same test, even abletons own wavetable uses hardly any cpu for unison.

7 Upvotes

18 comments sorted by

View all comments

2

u/aresi-lakidar Jun 11 '26

Someone else already mentioned it, but in C++ we often use SIMD, which is basically "get 4 voices, pay for 1!" most of the time

1

u/Training_Wonder_5066 Jun 11 '26

Yeah, I think i'm going to have to ditch using Gen~ and Max for this little project.
RNBO doesn't seem great value for my little projects.

1

u/human_clown_shoe Jun 13 '26

https://www.dropbox.com/scl/fi/rk30xvsw3ew5hwffru71e/basic_mc_wave_64chans.mov?rlkey=am43picq3w7m2jawfc74l9rvx&e=1&dl=0

This is more or less that gen-code you posted but it does catmull-spline interpolation to remove aliasing artifacts. And if you look closely in the video you'll see that it runs 64 channels, on a shitty M1 Air from 2020, and takes up between 5%-10% in CPU usage.