[sdiy] BLEP, PolyBLEP, aliasing, etc

Brian Willoughby brianw at audiobanshee.com
Tue Feb 16 21:01:21 CET 2021


Thanks so much for putting this together!

I'll be listening after work today.

In the interim, I wonder if you're able to compare the minimum-phase "MinBLEP" to these other options, especially the 32-sample Saw_BLEP16 (or is that only 8 samples on each side?). If I had to place my bets, I'd expect that there'd be no audible difference between minimum-phase and textbook step, even though the waveform would be different. I'd also expect that the harmonic and aliasing content would be the same. I'm just curious what the real-world results are.

Brian Willoughby


On Feb 16, 2021, at 05:39, Richie Burnett wrote:
> I've uploaded some audio examples of what you can expect from these different synthesis techniques if anyone is interested:
> 
> http://www.richieburnett.co.uk/temp/blep/
> 
> 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.
> 





More information about the Synth-diy mailing list