The Multi-Form Oscillator basically is the same as the standard oscillator but with one essential difference:
While the standard oscillator only plays a single waveform, the multi-form oscillator can play a wavetable of up to 1024 waveforms!
A wavetable is like a list of different waveforms and using the Wave Index parameter the actual waveform is selected.
This Wave Index parameter can be modulated by eg an ADSR, LFO which will result in a very dynamic sound.
And if the Wave Index parameter points in between 2 waveforms in the wavetable it plays a crossfaded version of those 2 waveforms.
So even a wavetable with only 10 waveforms will have a smooth sound when sweeping Wave Index thru the wavetable.
The multi-form oscillator can import existing wavetables from other creators as long as they're in a supported audio file format like AIFF, WAVE, ...
But on top of that the multi-form oscillator also has a fantastic mechanism to create new wavetables on the fly.
That's done by defining a list of source waveforms and/or sample grains and apply transform algorithms on them.
For example lets say we start with a sine waveform and let it evolve into a square waveform, and then apply a phase distortion on that evolution.
That will result in a rich sounding wavetable even with only defining a couple of elements.
Note that a multi-waveform definition needs to be rendered in order to hear it.
Rendering means that the sources and transforms that you have defined will be calculated and stored in the wavetable.
On the Multi-Form Oscillator editor there is a button "MULTI FORM". Click that button to open the Multi-Form Editor:
On the Setup pane you can define the number of steps i.e. the number of waveforms in the wavetable. Currently up to 1024 waveforms are supported.
If you set Num Steps to a low number the crossfading between the individual waveforms in the wavetable will be more prominent.
Whether that's good or bad depends on the sound.
Note that higher Num Steps will result in an increased RAM usage.
A good starting point for a smooth sounding table is the default 100.
On the Source pane you can add waveforms and sample grains in a sequence.
Upon rendering the resulting wavetable, it will render the sources from left to right, crossfading between them when necessary.
For example if you have set Num Steps to 50 and you have 3 sources, then the first 25 steps will crossfade between source 1 and 2, the last 25 steps will crossfade between source 2 and 3.
By using sample grains you can also import and use existing wavetables from other synths, if they're in a supported audio file format i.e. Aiff, Wave, Mp3, Ogg or Flac.
To do so click the [+] button on the source pane and choose "Insert Wavetable Audio File".
Alternatively you could also import a sample yourself and split it up by defining markers.
Note the audio editor's "Add Recurring Markers" function which can create multiple markers with a fixed time interval (eg. 2048 samples, or 1/32 note, ...) in one step.
These samples with markers can then be inserted in a multi-waveform definition with the "Import Multiple Sample Grains" function in the [+] menu.
On the Transform pane you can add algorithms that will transform the source waveform using "From - To" parameters, where From is the first step, To is the last step.
These algorithms combine very well and let you create a rich palette of wavetables.
All transformations are applied serial to each step of the rendering process, the leftmost transformation first.
Some algorithms have a "AA PreFilter" switch which will apply an anti-aliasing filter while rendering the waveforms so that the resulting waveform is as 'correct' as possible, but in some cases switching this AA PreFilter off could result in interesting artifacts in the waveform.
Note however that the Multi-Form Oscillator's realtime sound engine always uses anti-aliasing so even dirty wavetables will play crystal clear even at high pitches!
If this sounds too technical to you then remember this: The Multi-Form Oscillator has a top sound quality. The AA PreFilter transform parameter rather is a creative parameter.
Dynamically transforms the amplitude of the waveform.
Dynamically transforms the start and end of the waveform.
Can also be used to smooth the edges in case a previous transform would result in rough non-matching edges.
Normalizes the waveform.
Note that using this transform each individual waveform in the wavetable will be normalized individually.
Dynamically transforms the peaks of the waveform.
A peak is the part of a waveform between two zero-crosses.
There are positive peaks and negative peaks.
Will dynamically change the playback phase of the waveform.
The Smoothing parameter is very useful to ensure that the edges of the waveform match as in the original waveform.
The PWM transform will divide the waveform in 2 sections defined by the start->end point, which is expressed in percentage.
Then the first half of the original waveform is mapped to the first section, the second half to the second section.
The Process Curve defines how the sections are mapped, and using more special curves will result in even more transformed waveforms.
Dynamically quantizes the time and/or levels of the waveform.
Dynamically pitches up the original waveform.
The Smoothing parameter will make sure that the start and end of the waveform do match.
Will apply a filter on the harmonic spectrum of the waveform.
There are 2 identical filter definitions: The left one defines the start positions, the right one defines the end positions.
So the filter evolves from start to end in the number of steps you have indicated in the Setup pane.
Bends the harmonic spectrum according to the Bend Curve.
The Self Convolution switch defines whether the waveform is to be convolved with itself generally resulting in softer waveforms at the start of the wavetable.
Not that the self convolution is done gradually from start to end in the rendering process with full self convolution at the start and no self convolution at the end.
The Render function is necessary to effectively process the sources and transformations and put the rendered results in the wavetable.
After any change in Setup, Source or Transform, you need to click the Render button to hear the changes.
You can also press [R] to trigger rendering and this update the wavetable to the latest changes in the multi-waveform definition.
Note that the Multi-Form Oscillator really needs some RAM.
Just to give a rough idea, it typically varies between 8 to 64 MB per Multi-Form Oscillator, depending on the parameters you defined.
First of all the more waveforms in the wavetable, the more RAM is used.
This is defined by the Num Steps on the setup pane.
The higher this value the smoother the transitions between the waveforms in the wavetable, but the more time the rendering takes, and the more RAM is used.
Then the larger the waveform size for each individual waveform in the wavetbale, the better the sound-quality, but also the more RAM is used.
The waveform size is defined as a global preference called "Multi-Waveform Size".
It's best set to 2048, as that's the very best balance between sound quality and RAM usage.
But when using projects with many multi-form oscillators on systems with little RAM,
it may be useful to lower this preference value, though that will result in a lower quality sound.
If you're concerned about the RAM usage of a certain multi-form oscillator, then right-click the background of the multi-form definition editor an choose "Show RAM Usage".
- In the Super Layers editor there is an extra property "Wv Idx" which defines the offset to the Multi-Form Wave Index for each layer.
- The "Consolidate" function replaces all current sources and transforms by the currently rendered waveforms.
- The "Export" function only fully works when you have inserted a User Key. Otherwise, thus in the free/demo version, the export will be a crossfade from pure sine to octaved sine, just to test the technical aspect of the export i.e. whether it fits the format of the target app/plugin you want to use.
- Via the Multi-Form Oscillator's options menu (not the Definitions' options menu) -> Properties, you can change the Key Follow property. For example when Key Follow is set to 0, the pitch is independent from the key.