[sdiy] BLEP, PolyBLEP, aliasing, etc

Richie Burnett rburnett at richieburnett.co.uk
Tue Feb 16 14:39:06 CET 2021

I've uploaded some audio examples of what you can expect from these 
different synthesis techniques if anyone is interested:


They all contain a Sawtooth waveform slowly swept from about 47Hz up to 
12kHz over a duration of 20 seconds...

File "Saw_Naive" contains what you get if you just output the oscillator's 
phase accumulator directly at 48kHz.  You get a Sawtooth with lots of 
aliasing.  Most noticeable at the higher pitches though.

File "Saw_PolyBLEP" contains what you get if you apply corrections to one 
sample before and one sample after each discontinuity using the PolyBLEP 
technique I mentioned, with 48kHz sample rate.  This clearly sounds way 
better than just outputting the raw phase accumulator!  But if you view the 
spectrum or spectrogram in something like Audacity or Goldwave you will see 
there's still plenty of aliasing going on at the top of the audio frequency 
range.  You can actually watch harmonics bounce off the Nyquist limit (right 
edge of spectrum) and reflect back down.  You can probably hear them too if 
you listen carefully.

File "Saw_PolyBLEPx2" contains what you get if you run the same basic 
PolyBLEP technique with x2 oversampling (i.e. 96kHz sample rate).  You still 
see some low-level aliasing right at the top end of the spectrum in 
Goldwave, but not much ventures into the region below the tone's 
fundamental.  You will likely struggle to hear the aliasing now at sensible 
volume levels.

File "Saw_BLEP16" contains a sawtooth synthesised using a full BLEP method 
correcting 16 samples around each discontinuity and running with x2 
oversampling (96kHz.)  Now you will see that the spectrum looks very clean 
everywhere right down to the noise-floor.  (If you can hear aliasing in this 
file, then your PC or audio interface is likely performing some sort of 
sample-rate conversion, and doing it badly!)

File "Saw_Aliases" contains just the corrections applied to the Naive Saw 
waveform around the discontinuities, just for fun.  It essentially contains 
all of the aliased rubbish that gets removed by the BLEP algorithm, but you 
can hear it more clearly without the main Sawtooth tone masking it!

As you can see the simple PolyBLEP method does a very good job of 
attenuating aliasing in the low-frequency region of the spectrum where it is 
most annoying,  but the full BLEP technique tweaking several samples around 
each discontinuity gets close to perfection across the full audio spectrum.


This email has been checked for viruses by AVG.

More information about the Synth-diy mailing list