On alias free oscillators – the holy grail of wavetable synthesis implemented in Vaporizer2

Being able to synthesize any arbitrary waveform without aliasing – audible or not – is considered the holy grail of wavetable synthesis. But what does aliasing mean in that context?

If you are familiar with the Nyquist Theorem (https://en.wikipedia.org/wiki/Nyquist_frequency), then you know that in digital audio synthesis we can successfully sample and play back frequency components up to one-half the sampling frequency (fs). Aliasing is the term used to describe what happens when we try to record and play back frequencies higher than one-half the sampling rate. In that case frequencies above Nyquist fold over into the audible spectrum as aliasing distortion. Aliasing audio signals must be considered as absolutely unwanted and non-musical so they have to be avoided by all means in a soft synth.

So why not just generating only frequencies up to Nyquist, e.g. fs / 2?

Well, that’s not so easy as it sounds. It can be done with sine waves. But other waveforms like sawtooth or square generate a rich overtone spectrum that always exceeds Nyquist to some extent (audible or not). While a square wave is constructed from only odd harmonics, a sawtooth wave's sound is harsh and clear and its spectrum contains both even and odd harmonics of the fundamental frequency. So a sawtooth wave contains all integer harmonics – even those above fs / 2. Generating a naive, non-bandlimited sawtooth wave leads to a distorted sound especially at higher frequencies that is unusable for music productions.

So why not just low pass filter the oscillator to get rid of the frequencies above fs / 2?

Well, nice idea. But unfortunately the fold-over frequencies already inherently exist in the naive waveform and generate a distorted signal while computing the oscillation for a certain sampling frequency. Not a lot can be done to remove it afterwards since it is intermingled with the wanted part of the harmonics. A low pass filter at 20 kHz in the above example would cut away the wanted harmonics above 20 kHz and the fold-overs above 20 kHz – but it would leave the distorted harmonics below 20 kHz in the signal.

So what to do to avoid aliasing?

There are many techniques discussed and used to avoid aliasing in waveform generation. A common technique is oversampling. Oversampling means calculating the synthesis with a higher sampling frequency as actually needed for playback. I consider this a workaround since it actually does not remove aliasing. It only helps to reduce it. Remember that a naive sawtooth wave contains all (up to infinity) integer harmonics. Besides that oversampling is very CPU heavy of course. Research revealed other more efficient techniques that were commonly used over the past decades including BLITS and BLEPS / minBLEP that aim at “repairing” a waveform at its sharp edges with so called “minimal bandlimited steps” so that it does not generate harmonics above Nyquist. Those are effective mechanisms when it comes to the “standard” waveforms of subtractive synthesis. So you can easily add BLEPs to a sawtooth, square or triangle wave.

But what about synthesis of arbitrarily shaped waveforms?

Vaporizer2 implements the holy grail of wavetable synthesis. It supports the creation and playback of arbitrarily alias-free wavetables that can be morphed and even be altered in real-time during playback. The secret sauce is that during wavetable editing and generation, Vaporizer2 transitions between the time-domain representation and the frequency domain representation of all waveforms in a wavetable. Vaporizer2 does not store a single wavetable cycle per waveform. Instead it generates frequency dependent cycles – in fact multiple cycles per octave. In the frequency domain these wavetable cycles are bandlimited by using Fourier Analysis – so it is guaranteed that they do not contain any harmonics above Nyquist. Due to the efficient implementation of the sound engine in Vaporizer2 these computations are done in real-time during the design-time of a wavetable in the wavetable editor.

What is special about Vaporizer2 is that these wavetable changes can also be done during playback in real-time. The sound engine guarantees, that whatever shape of waveform you create –

It will be played without any aliasing!

Want to learn more about Vaporizer2? Visit the product page.

Being able to synthesize any arbitrary waveform without aliasing – audible or not – is considered the holy grail of wavetable synthesis. But what does aliasing mean in that context?

If you are familiar with the Nyquist Theorem (https://en.wikipedia.org/wiki/Nyquist_frequency), then you know that in digital audio synthesis we can successfully sample and play back frequency components up to one-half the sampling frequency (fs). Aliasing is the term used to describe what happens when we try to record and play back frequencies higher than one-half the sampling rate. In that case frequencies above Nyquist fold over into the audible spectrum as aliasing distortion. Aliasing audio signals must be considered as absolutely unwanted and non-musical so they have to be avoided by all means in a soft synth.

So why not just generating only frequencies up to Nyquist, e.g. fs / 2?Well, that’s not so easy as it sounds. It can be done with sine waves. But other waveforms like sawtooth or square generate a rich overtone spectrum that always exceeds Nyquist to some extent (audible or not). While a square wave is constructed from only odd harmonics, a sawtooth wave's sound is harsh and clear and its spectrum contains both even and odd harmonics of the fundamental frequency. So a sawtooth wave contains all integer harmonics – even those above fs / 2. Generating a naive, non-bandlimited sawtooth wave leads to a distorted sound especially at higher frequencies that is unusable for music productions.

So why not just low pass filter the oscillator to get rid of the frequencies above fs / 2?Well, nice idea. But unfortunately the fold-over frequencies already inherently exist in the naive waveform and generate a distorted signal while computing the oscillation for a certain sampling frequency. Not a lot can be done to remove it afterwards since it is intermingled with the wanted part of the harmonics. A low pass filter at 20 kHz in the above example would cut away the wanted harmonics above 20 kHz and the fold-overs above 20 kHz – but it would leave the distorted harmonics below 20 kHz in the signal.

So what to do to avoid aliasing?There are many techniques discussed and used to avoid aliasing in waveform generation. A common technique is oversampling. Oversampling means calculating the synthesis with a higher sampling frequency as actually needed for playback. I consider this a workaround since it actually does not remove aliasing. It only helps to reduce it. Remember that a naive sawtooth wave contains all (up to infinity) integer harmonics. Besides that oversampling is very CPU heavy of course. Research revealed other more efficient techniques that were commonly used over the past decades including BLITS and BLEPS / minBLEP that aim at “repairing” a waveform at its sharp edges with so called “minimal bandlimited steps” so that it does not generate harmonics above Nyquist. Those are effective mechanisms when it comes to the “standard” waveforms of subtractive synthesis. So you can easily add BLEPs to a sawtooth, square or triangle wave.

But what about synthesis of arbitrarily shaped waveforms?Vaporizer2 implements the holy grail of wavetable synthesis. It supports the creation and playback of arbitrarily alias-free wavetables that can be morphed and even be altered in real-time during playback. The secret sauce is that during wavetable editing and generation, Vaporizer2 transitions between the time-domain representation and the frequency domain representation of all waveforms in a wavetable. Vaporizer2 does not store a single wavetable cycle per waveform. Instead it generates frequency dependent cycles – in fact multiple cycles per octave. In the frequency domain these wavetable cycles are bandlimited by using Fourier Analysis – so it is guaranteed that they do not contain any harmonics above Nyquist. Due to the efficient implementation of the sound engine in Vaporizer2 these computations are done in real-time during the design-time of a wavetable in the wavetable editor.

What is special about Vaporizer2 is that these wavetable changes can also be done during playback in real-time. The sound engine guarantees, that whatever shape of waveform you create –

It will be played without any aliasing!Want to learn more about Vaporizer2? Visit the product page.