Chainsaw Oscillator
Posted: Thu Mar 18, 2021 7:35 pm
Hey gang, here is something I've been working on lately. I call it the chainsaw oscillator .
The basic idea is to take a random sequence of samples (= a chunk of noise) and repeat it periodically. Like a random wavetable. The result is a tone with a funamental frequency according to the repetition rate and a random harmonic spectrum. (Cut the trebble if it sounds too harsh. ) The nice thing is that you can take a different random sequence and get a different random harmonic spectrum, so every note may sound slighlty different. It is very easy to generate a (pseudo-)random sequence.
Now if we slowly vary the random sequence, each sample individually while it is playing, we get a constant morphing between different timbres. At higher variation rates it sounds like many (hundreds) slightly detuned oscillators (phat! ). At still higher rates the sound gets more and more noisy.
You might think that it would be a tremendous CPU load to constantly update all samples of the random sequence. Like hundreds of simultaneous oscillators! The point is that you only need to update each sample once every cycle, not constantly. So the effective load is actually similar to one oscillator!
There are some details like what if the size of the sequence is not integer (which it never is), aliasing and so on. Perhaps the hardest part was to make the thing poly safe. Whatever.
Below is the chainsaw oscillator and a little demo synth. I imagine that it could be of use in EDM. However, with some proper filtering you can also create some very soft, evolving pad sounds.
The basic idea is to take a random sequence of samples (= a chunk of noise) and repeat it periodically. Like a random wavetable. The result is a tone with a funamental frequency according to the repetition rate and a random harmonic spectrum. (Cut the trebble if it sounds too harsh. ) The nice thing is that you can take a different random sequence and get a different random harmonic spectrum, so every note may sound slighlty different. It is very easy to generate a (pseudo-)random sequence.
Now if we slowly vary the random sequence, each sample individually while it is playing, we get a constant morphing between different timbres. At higher variation rates it sounds like many (hundreds) slightly detuned oscillators (phat! ). At still higher rates the sound gets more and more noisy.
You might think that it would be a tremendous CPU load to constantly update all samples of the random sequence. Like hundreds of simultaneous oscillators! The point is that you only need to update each sample once every cycle, not constantly. So the effective load is actually similar to one oscillator!
There are some details like what if the size of the sequence is not integer (which it never is), aliasing and so on. Perhaps the hardest part was to make the thing poly safe. Whatever.
Below is the chainsaw oscillator and a little demo synth. I imagine that it could be of use in EDM. However, with some proper filtering you can also create some very soft, evolving pad sounds.