M7 Docs Multi-Form Oscillator   

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:

Setup

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.

Source

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 or Ogg. 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.

Transform

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.

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.

Harmonic Filter

Will apply a filter on the harmonic spectrum of the waveform. The Envelope defines the filter shape over that harmonic spectrum. The horizontal time is expressed in harmonics. The full spectrum target point is around the 1000th harmonic because the human hearing range is commonly defined as from 20 Hz to 20 kHz. So assuming the lowest fundamental is 20 Hz (MIDI note number 16), then the 1000th harmonic is at 20 x 1000 = 20 kHz.

It's a lowpass filter behaviour as the filter envelope is squeezed to the left during the rendering steps. The filter will evolve within the From To range which is expressed in percentage. So if From = 0 and To = 100 then the last resulting waveforms step will apply the filter as you designed it on screen (i.e. the speed factor to read the envelope is 1:1) the very first waveform step will use a speed factor of 1000:1, so the first harmonic will use the envelope level at harmonic 1000 on screen. By setting From and To to the same value you can apply the same static harmonic filter on all waveforms in the wavetable. As the envelope can be simple but also more complex, you can design resonant peaks and spectral wobbles in the filter envelope, resulting in all kinds of different filtering and phasing effects.

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.

Render

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.

RAM Usage

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".

Notes

  • 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.

Table Of Contents