M10 Docs
Multi-Form Oscillator
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:
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.
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.
The Vector Waveform is drawn using curves, just like LFO shapes.
The MFO renders a vector waveform by crossfading from the start shape to the end shape.
If the start and end shapes have the same number of points then that's easy to crossfade.
If the start and end shapes have a different number of points, MuLab will map the different points as good as possible.
Note that if a corresponding vector segment has a different curve type in the start and end shapes then it's the start curve type that is used, but still the curve parameters crossfade from start to end, so if curve types differ this might lead to unexpected (maybe interesting?) results.
Amplitude Distortion
Dynamically transforms the amplitude of the waveform.
Fade In-Out
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.
Normalize
Normalizes the waveform. Note that using this transform each individual waveform in the wavetable will be normalized individually.
Peak Shaper
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.
Phase Distortion
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.
PWM
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.
Quantize
Dynamically quantizes the time and/or levels of the waveform.
Resync
Dynamically pitches up the original waveform. The Smoothing parameter will make sure that the start and end of the waveform do match.
Harmonics Filter
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.
Spectral Bend
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.
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".