Band-limited oscillators in Core

Fully band-limited (ant-aliased) saw, square and pulse oscillators

(111 Votes)
6.3 (Updated 17 years ago)
190.6kB
July 23, 2006
Reaktor 5 or lower

DESCRIPTION

New in 6.3:
- Significant performance improvements (2 to 3x faster).
- Output is same amplitude regardless of sample rate
- Numerous minor rate bug fixes.
- Improved integrators, give more accurate high-frequency response.
- Triangle wave removed (can't figure out how to cure the DC problems).

Now the real sound of classic analog synths can be yours for the building.

This download contains a multi-oscillator primary macro which, in turn, contains reusable implementations of fully band-limited (anti-aliased) saw, square and pulse oscillators implemented in Core.

This macro generates pure, clean sounding waveforms with none of that annoying buzz in the high frequencies caused by foldover from aliased harmonics in the built-in oscillators. When instrument makers talk about "virtual analog", this is what they are using for oscillators.

Despite being built on a solid DSP foundation, these macros still impose a very reasonable CPU load.

Each oscillator has been verified to be properly band-limited with a spectroscope.

The implementation is based on the DSF Blit implementation in Stilson and Smith's classic paper "Alias free Digital Synthesis of Classic Analog Waveforms", http://ccrma.stanford.edu/~stilti/papers/blit.pdf but includes a number of innovations, including an effective solution to the problem of DC offsets in the original Stilson and Smith implementation, and a significant optimization to the procedure for generating square waves.

This update includes oscillators that are suitable for use in monophonic instruments, that support arbitrary glissando, while maintaing band-limited output.

Please read the macro info for important information on how to obtain the best results with these oscillators.

Good performance. Great sound. Great price. (Free). How can you not afford to download this file?

COMMENTS  (23)

ilias boufidis
8 years ago
awsome oscillators, for Poly PW, i kind of solved the PW pops with a 2pole after PW_in at the Bi_SincM module (it probably slews the thing and seems to work). the mono PW module doesn't pop here so no need for me to mess with that.
Sean Colletta
11 years ago
err two saws, one inverted and out of phase - sorry for the extensive commentary :)
Sean Colletta
11 years ago
Actually, my (somewhat) apologies to NI - there are actually some 'pseudo band-limited' oscillators in the core library - particularly the ones on the 4 waves master and slave pairs, though I believe the 4 wave osc uses the same algorithm as well. They still alias, but with a fallof of what looks like -12db at the sample rate. At 44.1kHz, the true bandlimited oscillators still sound better, but at 192kHz, the difference becomes kinda apple and orangey, even on very high sweeps. I've been digging into anti-alias theory for a bit, and am trying to make a new set of BL osc using a different algorithm. Will post if successful. Also, to avoid the PWM random pops on the BL pulse osc, you can make a pulse from two saws out phase - been doing that and it works great.
Sean Colletta
11 years ago
i've been using these oscillators alot, and the PWM does cause random clicks - however, no criticism intended. Many thanks to you for doing something that NI should have done themselves by now.
Peter Belfield
11 years ago
PWM mod seems to cause random clicks
Sean Colletta
11 years ago
absolutely wonderful - thank you very much for sharing your hard work. was always having unsolveable problems with the high end - these help greatly. again - your shared hard work is VERY appreciated!!!!
Justin Stevens
12 years ago
This is incredible. Thanks!
George Gyulatyan
14 years ago
These sound great! I will be using the saw wave in the Menace 2.0 upgrade I'm working on currently. Thanks for your time and the hard work you've put into this.
greg zifcak
15 years ago
yeah, no audio inputs? please can i have some FM?
Björn Böhmelmann
15 years ago
These are really much better than the built-in oscillators. The hard work you invested should be motivating for many users and also for Native Instruments. I would use even your oscillators if only there was a possibility to build in frequency modultion and Wavemodulation for all OSCs. Are you working on this?
Nicholas Rezmerski
16 years ago
Sounds very nice, but as a beginning builder I'm having trouble figuring out how to turn it on and off!
Jonathan Canupp
16 years ago
Absolutely essential. Thanks you!
Red Wierenga
16 years ago
Hey Robin, Thanks for the upload. In looking under hood I see that when F (freq) is changed, the oscillators are restarted. To avoid the glissando issues, couldn't you just get the current value of F at the start of each cycle rather than interrupting the cycle when F is changed? Also, I didn't see an immediate solution, but is there a way to make the PWM smoother?
john miller
16 years ago
Yes!! We NEED more top-shelf components like this - thank you!!
Douglas Powell
17 years ago
Great Stuff. Very educational and very much appreciated. Thanks.
Duncan Farmer
17 years ago
Thanks for the update Robin. Looking forward to the CPU improvements made
das wesen
17 years ago
This is amazing! Thank you very much, it really is interesting to dive into the DSP depths. The forum thread is great too.
Peter Dines
17 years ago
Fantastic and very much appreciated. Thank you.
James Clark
17 years ago
I'm a builder! This is good stuff! Thanks for sharing.
Jay Dizzle
17 years ago
I'm sitting here with a lifetime total of 121 downloads without leaving comments, but I'm going to comment on this one. This is great work, you are a credit to the Reaktor community.
Donovan Stringer
17 years ago
I'm surpised there are not more comments about these..Builders, what do you think about them?
Nicolas Noel
17 years ago
Just did a five minute comparison and yes indeed, it does sound great. Great to have a DSP expert around. nico
James Duffett-Smith
17 years ago
Very interesting - I'm looking forward to giving these a spin. James
now