band limited oscillators

Tony Hardie-Bick EMAIL HIDDEN
Fri Feb 6 19:40:15 CET 2009


Chris Strellis wrote:
> I can offer some tips sent into the SDIY list recently from the great 
> Antti Huovilainen

Brilliantly explained, as always :)


> http://antti.smartelectronix.com/
> 
> also http://www.diy.synth.net/gallery/main.php?g2_itemId=1078  Synth DIY 
> UK 2006
> 
> Some DSP theory links here: 
> http://www.chameleon.synth.net/english/links.shtml
> 
>  > I'm curious, what approach are you using to get 'alias free' 
> oscillators?
> 
>  > Simply using a much higher internal sampling rate and then a low pass
>  > FIR filter?  Or something more sophisticated than this.
> 
> Since this question gets asked a lot, I'll list some of the common 
> methods. Roughly from easy to hard. Oversampling here means proper 
> oversampling with high quality lowpass filtering before decimating to 
> target samplerate. Simply averaging N samples will not work.
> 
> 1) Trivial saw with oversampling
> 
> Pros: Easy, can do any waveshape, allows simple sync and FM
> 
> Cons: Requires massive (64..256x) oversampling to sound good
> 
>  
> 
> 2) Sum of sines
> 
> Sum nyquist/freq number of sines to produce exactly bandlimited sawtooth.
> 
> Pros: No aliasing
> 
> Cons: Too slow to be of use in practise.
> 
>  
> 
> 3a) Differentiated parabole wave
> 
> Synthesize parabole (diff(phase^2)*1/freq for -1 <= phase < 1). Aliasing 
> falls at 12dB/oct (compared to 6dB/oct for trivial saw).
> 
>  
> 
> Pros: Almost as easy as trivial saw. 1/freq can be derived from 
> interpolated table lookup (store 1/freq for each note)
> 
> Cons: diff(phase^2) can get very small for low frequencies requiring 24 or
> 
> 32 bit resolution. Requires 1.5-2x oversampling to avoid annoying warble 
> between 10-20 kHz.
> 
>  
> 
> 3b) Slewrate limited saw
> 
> Use a trivial saw-tri pwm oscillator with the pulse width set to exactly 
> one sample. Can be shown to be equivalent to 2a.
> 
>  
> 
> Pros: Doesn't require frequency dependent scaling or high resolution 
> computations.
> 
> Cons: Same as 3a
> 
>  
> 
> 3c) Other waveshaping methods
> 
> Several other methods can be used to sample a smooth function and then 
> warp the spectrum to resemble saw. Generally slower and more complicated 
> than 2a or 2b.
> 
>  
> 
> 4) Mipmapped wavetables
> 
> Precalculate a version (mipmap) for each octave (or half octave) with 
> exact number of harmonics. Select nearest mipmap and interpolate the 
> stored waveform on playback.
> 
>  
> 
> Pros: Good quality with higher order interpolator or oversampling mipmaps.
> 
> Can do arbitrary waveforms. Easy FM. Easy phase distortion.
> 
> Cons: Needs lots of memory. Number of harmonics limited for low notes.
> 
> Requires oversampling the mipmaps (using longer table than strictly 
> required by the number of stored harmonics) or using high order (FIR) 
> interpolator. Requires oversampling or more mipmaps (half or quarter
> 
> octave) to avoid missing frequencies between 15-20 kHz.
> 
>  
> 
> 5a) BandLimited Impulse Trains (BLIT)
> 
> Synthesize bandlimited impulse train and integrate that to produce saw.
> 
>  
> 
> Pros: Good quality. No oversampling required.
> 
> Cons: Complicated, slow, has numerical issues. Difficult to do FM, PWM 
> or sync.
> 
>  
> 
> 5b) BandLimited StEps (BLEP)
> 
> For each oscillator reset, sum a bandlimited step with the trivial saw.
> 
> The steps are precalculated and stored in a table (can be quite short 
> when interpolation is used between two phases.
> 
>  
> 
> Pros: Very good quality. No oversampling required. Can do bandlimited 
> FM, PWM and sync. Probably the only method that can do audio rate PWM 
> and sync.
> 
> Cons: Requires a divide per cycle. Can be complicated: calculating 
> required table entry is not trivial when using sync or pwm.
> 
>  
> 
> HTH
> 
>  
> 
> Chris
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> music-bar mailing list
> music-bar at lists.music-bar.org
> http://lists.music-bar.org/cgi-bin/mailman/listinfo/music-bar




More information about the music-bar mailing list