This is my first useful and nice sounding abstraction.
Its a special morphing oscilator with a special kind of FM capability built in.
You make two waveforms using the partial sliders and toggles.
You can morph between the two waveforms by sending -1 to 1 range (so you can use an oscillator or audio signal directly)
You can do FM the old fashioned way through the frequency input OR if you're brave enough via my special input.
This will route frequency changes to the individual oscilators that make up the partials: GASP!!
The fourth input can change how out of tune the partials go with each other
-1 they remain harmonic (modulation is multiplied by each partial), and you effectively just have bog-standard FM
+1 the modulation numbers are added directly to each partial
All inputs can take audio signal!
included is a helpfile and another abstraction [morph.pd] you will need to run it.
it should run in vanilla if you add morph to your libraries.
All morph does is linear interpolate between two values given an input between -1 and +1;
Again all inputs and outputs are audio.
I would like to make some improvements
1. Add buttons to set the waveforms to commonly used ones
2. somehow work out how to get the oscillators back in phase after detuning them
3. I'm not sure, but I dont think the gainstage of the oscilator is the best way to go, at the moment it simply takes the average of all the partials
4. It would be trivial to give it 16 voices/partials
5. I want to try to introduce some antialiasing provisions, some way of attenuating the higher partials when needed, but my math isn't the best
6. Some may find a table showing the waveforms useful,
7. Two more outputs which simultaneously send waveform A and waveform B read from a sinesum based wavetable.
8. Any other suggestions!