In my implementation of minBLEP, overlapping minBLEPs result in a DC bias as the frequency increases. This is because each minBLEP correction (i.e. the minBLEP minus the aliased step) has a DC bias.

Here's a frequency sweep from 100Hz to 15kHz. The second signal shows the number of active BLEPs.

Blep sawtooth

Interestingly, the minBLEP paper (http://www.cs.cmu.edu/~eli/papers/icmc01-hardsync.pdf) acts as if the DC woes are all solved by switching from integrating impulses to placing BLEPs. There's no mention of correcting DC when lots of BLEPs overlap.

Should I just add a DC-blocker at the end? Is that what is generally done?

Also, why is it important that the BLEPs are minimum phase? Using linear phase BLEPs would alleviate the DC bias, at the cost of delaying the oscillator output by half the length of the BLEP.


1 Answer 1


If your oscillator is steadily accumulating DC over time, adding a DC blocker at the output may not be an elegant solution since your oscillator will keep getting more and more DC. For floating point this may or may not be a huge problem (I wouldn't do it), but for fixed point you will eventually start clipping or wrapping.

If the oscillator has a frequency dependent DC offset that doesn't creep up over time, a DC blocker is probably a good solution. If you've implemented the BLEPs correctly, this should be the case.

The original reason given for BLEPs to be minimum phase was to implement oscillator sync. To implement this correctly with linear phase BLEPs, you should use lookahead so you can start the BLEP before the aliased reset occurs.

However, apparently this author would rather not have any lookahead for some reason and therefore designed minBLEPs so that you would have to lookahead less far into the future. If I remember correctly, in the paper they say that it's okay to just forget about lookahead if you use minimum phase, but obviously this isn't perfectly true as minimum phase filters still have some delay. You should experiment yourself to see if the approximation works for you.

In my opinion, it's probably a good idea to use linear phase BLEPs and lookahead appropriately for sync. We're talking a few samples of latency here for reasonable BLEPs.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.