Hi @janifr it's great to see this project evolve so fast.
About the sinewave generation, i've just tested an old trick:
cos(2*x) = 2 * (cos(x)^2 - 0.5)
this is frequency doubling by waveshaping.
The direct application consists in generating the 12 lowest tones and to create the higher octaves by iterating this simple formula.
Here is the code for the frequency doubling of "y" a q30 sinewave:
y = __SMMLA(y, y, 0xF8000000 ) << 3;
q30 q30 q30 - 0.5_q28 * 2 and q28->q30
Here is a small patch with a 91 osc object :
FreqDoublerTest.axp (6.0 KB) 35% CPU