d3 $ note ((scaleP scalePattern $ (rotR 4) $ (+ slow 8 "x" <~> ((0.25 ~>) generateMelodicSeed)) -- $ slow 4 \n $ generateMelodicSeed ))#s "[pe-gtr:8,midi]" #gain 1.2 #orbit 2 #midichan 3 hush d1 $ note ((scaleP scalePattern $ off 4 ((+ 2 ).slow 2) $ off 1 (inversion.slow 2) $ off 3 (inversion.slow 3) $ off 1.5 ((+ 2).rev.slow 2) $ generateMelodicSeed ))#s "[pe-gtr:10,midi]" #gain 1 #orbit 0 #midichan 1 let melody = slow 6 $ "0 2 [4 8 .] [3 4 3] 8 4 9"

Bandlimited Oscillator

Within digital audio, a band limited oscillator is any oscillator algorithm that refrains from producing harmonics above the 1/2 sample rate limit. It produces no aliasing artifacts. (see: Bandlimiting)

Consider the Fourier expansion a perfect sawtooth wave:

\[y(t) = \frac {1} {2} - \sum_{n=0}^\infty \frac {1} {n\pi} sin(2\pi nt)\]

It requires an infinite number of harmonics to create. Even for low frequency waves, some of those harmonics will alias. As the fundamental frequency increases the aliasing distortion will get worse as more and more harmonics fold over.

This kind of aliasing can occur for most complex waveforms, even those that can be represented with a finite number of harmonics. At some point on the keyboard they may begin to alias and distort.

The effect is typically not very pleasing for an oscillator. (it sounds like crap)

In order to create musically useful complex waves care has to be taken to ensure that no harmonic content will alias.

Here are some algorithms for generating bandlimited waves:

  1. BLIT
  2. [[ BLEP ]]
  3. minBLEP
  4. DSF
  5. [[ Additive Synthesis ]]

Sometimes it is not possible or not feasible to band-limit an oscillator algorithm. (eq. FM Synthesis) In those circumstances Quasi-Bandlimited techniques are useful.

Other times bandlimiting is not necessary as the generated sound is noisy and chaotic enough that the aliased harmonics blend in with the noise. (eg. White Noise)

Notes mentioning this note

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.