Hello everyone. I'm relatively interested in making an organ B3 emulation patch with Axoloti. Basically, it would have 91 oscillators (multiply by two as organ have 2 keyboards) with other stuff (filter, mux, LFO, etc). I was wandering whether the Axoloti hardware will support my needs.
Hardware limits for heavy emulator
It depends...
It's worth noting that digital synths typically limit the number of concurrent notes/voices to, say 16, and then re-use them as it goes along- so you wouldn't be trying to emulate 2 x 91 notes playing at the same time- only 16 or 32 or whatever the appropriate degree of polyphony is.
Can the hardware handle it? The CPU runs at 168 MHz. You are producing samples at 48000 samples/sec, so you have 3500 clock cycles to generate each sample of audio data. Can you get the job done? How good is the emulation? How efficient is the code?
My general feeling is that it's do-able, but I don't know how complex Hammond B3 emulation is.
The design goal would be to have a single note use up say 5% of the CPU, then you can have 16 notes at a time using a maximum of 80%. That gives you some margin so you don't end up with DSP under-runs.
Electronic organs do generate the full 91 waves - by a divider architecture, so they only have twelve oscillators plus the dividers and wave shapers, and just a switch each for envelope. That is much less effort than a polyphonic synth (bottom end full poly electronic organs built from a few dozen TTL chips were $300 back when the cheapest eight-voice polysynths were $5000) - and that should go for a emulation as well, provided you directly emulate a organ, and not a synthesizer sounding like a organ.
You can have a look at this thread.
To obtain full polyphony on the axoloti you will have to code some dedicated objects.
In the case of software synthesis you have to use optimizations quite different from the hardware optimizations.
Each kind of optimization has its own advantages and drawbacks.
In the case of a drawbar organ, if you consider that the signals produced by the tone wheels are sine waves, you can use a multi-rate algorithm as firstsuggested by @johannes.
As far as i experimented it is the most efficient method on the Axoloti for hammondish sounds with full polyphony (and charges only 15% of the Axoloti CPU).
(see the patch with custom object at the end of the thread here)