A work-in-progress minBLEP oscillator for Teensy's with FPU's.

deenigewouter

New member
Hello friends,

I expected to be up in the clouds with the ultimate DIY VA synth, but instead of ascension I fell into the bottomless pit of bandlimited oscillators. Dissatisfied with the dull high-ends and aliasing of several polyBLEP and BLIT methods I tried, I gravitated towards minBLEPS. The code is derived from VCV Rack and thus bears the GPL 3.0 license. It is a work in progress and is (currently!) missing some key features, but this seems like a solid foundation to build upon (from an amateur's perspective). Do with this code whatever you want.

I'm curious to your thoughts, and if this is worth pursuing further. Feedback, pull requests, suggestions, all is welcome! And please let me know if I messed up the licensing / copyright notices.

Github repository

oscilloscope.PNG

CPU usage on Teensy 4.0 (scales with pitch)
  • Sawtooth: C2: 0.58% - C7: 0.98%
  • Square: C2: 0.76% - C7: 1.58%
  • Triangle: an even 0.63%

Current features
  • Bandlimited sawtooth
  • Bandlimited square with pulsewidth
  • Triangle with seemingly low aliasing

Roadmap
  • Modulation inputs
  • Hardsync
  • Analog-ish waveshaping (if worth the additional processing)
  • Oscillator drift
  • Oversampling (maybe...)
  • Proper readme

Issues
  • DC offset on sawtooth due to stacked minBLEPS.
  • unequal output volume of waveforms.
  • bad / inefficient code (probably).
  • minBLEP table is larger than it needs to be.
  • ?
 
Thanks for this. Do you happen to have examples, either audio or FFT displays, of the improved harmonic content and aliasing for this versus the BLIT or polyBLEP approaches?
 
How does it compare with the bandlimited options of waveform for quality (those aren't minimum phase, simply sinc() bandlimited)?
The table .h file has about 20000 characters in one source line, which isn't very human friendly(!)
 
Back
Top