Macro oscillator: ideas/wishes anyone?


#1

I'm planning to code a high precision macro oscillator with lots of synthesis modes. So you'll only need one main oscillator for all your waveshapes.
If anyone has a wish or idea for it.. just name it. Though keep in mind that I want to keep the amount of controls as small as possible, like three parameter controls max (besides FM, PM, AM and multiple sync modes, which I will make selectable->max two audio-rate modulations which can be changed with external controls/sequencers).

So I'll just start off with a starting list, so I don't forget possibilities:

core
-64bit (or higher if it's possible) phase generators going from 20000hz down to minutes-long cycles. Internally usable as modulation.

basic audiorate modulations:
-2 mods max
-frequency modulations: exponential and linear
-phase modulation
-amplitude modulation
-PLL
-sync (hard, soft, playdirection, wave-inverter, low/high position sync(soft backwards/forwards), step-offset sync.
-selectable parameters of modes.

modes' parameter control:
-3 external krate controls max (mode dedicated controls). For modes with more parameters, destination can be chosen.
-internally updated to 64bit audiorate&interpolated if controlling audio-rate settings.

MODES:
-sine:
-bezier
-3x FM
-morphable->tri/saw/square
-simple 3-oscillator additive
-dual-sync +phasemod
-vosim
-bezier
-3 osc FM
-......can't hold myself.. need to start.. haha


#2

Sounds like just what i am waiting for!
Doesnt seem like pwm is on the list? but that could be one thing i would personally like.
One more thing:
-No aliasing!:wink:


#3

well, just put anything on the list here what you would like to see, I thought it would be more useful if I just started coding instead of writing about coding :wink:
and of course PWM will be in there.. multiple times I think.. pulse-width modulation is just one special case of modulating a waveform.

I prefer to leave the glide externally as it will need controls for glide time and make the module even bigger then it's gonna be.. as for the glide module.. that glide time should be able to be easily fixed..

as for CPU, that's the reason I want to keep modulations limited. I just put all the different codes into a switch-algorithm, this way it just skips all the unneeded code. So theoretically, you could make it as big as you like, while still being able to select 3% using synthesis modes. (though of course, it's limited by the uploading time to the axoloti and it's internal memory size)


#4

Coolness! I dont know if it should be built in... but maybe portamento/glide? the glide modules we have, go from "a tiny bit of glide" to "a lot of glide". Even when the glide is turned all the way down there is still a small amount of glide.... but meh.. Would probably be cooler to have in a seperate module.

Keep on keeping on:)


#5

If the oscillator takes up a lot of cpu, maybe, in the long run, you could make seperate "cheaper" versions that are essentially the macro osc split up, and then one "master version".


#6

My two cents: a lot of the stuff you want to put into your object already exist (there are also bandlimited versions of such objects, which will win in favor of aliased versions)

The pll thing however is very interesting, if you have the knowledge you definitely should concentrate on that!

Also, remember the minimal interface for objects. Too much stuff inside only one object can become really hard to decypher


#7

-I know lots of the stuff is already there, but all in seperate modules, each taking their share in cpu load. BUT if you put them all together under a "switch" function, it will only read the oscillator function you have chosen, leaving more cpu for other stuff, though still allowing you to be able to use all of the oscillator waveforms/synthesis functions.
next to this, I just made up a small list here with the first things which came into mind, going from very easy to a bit more complicated, though I have enough ideas for far more advanced oscillators, including several types of plll.

-about the aliasing, I'm already been busy experimenting with functions for anti-aliasing/band-filtering.

-I know of the complications of lots of parameters, but that's why I've also already concentrated on controller objects with memory presets which will minimise knob/button use. (my old creations always had tons of parameters and last years I've been focusing on creating understandable, minimalistic, but most of all, usable controls.
So the module itself will just have some internal parameters like pitch and basic synthesizer/mod mode selection (which are taken over when the inlets are used) and next to that there will be several controller modules (so they can be stacked next to each other for easier visual feedback) with internal modulation recording and presets (table)

I've already done all this stuff in synthedit.. it's just a matter of translation.