After reading this article
http://en.flossmanuals.net/PureData/Antialiasing
I decided to create my own bandlimited signal generator.
This external generates square, triangle saw, reverse saw and saw-triangle waves band limited to the nyquist limit.
In order to conserve CPU usage it uses a series of wavetables. Because of this it might take a little while (a few seconds) to load up the first instance.
The easiest way to use it is to add the bandlimited folder to your path. But you can also use it like this:
[bandlimited/bandlimited~ square]
[bandlimited/bl.sq~]
as long as the bandlimited folder is placed into a folder already in the path (ex: ~/Library/Pd on OS X)
...
There are wrapper abstractions for each waveform type (bl.saw~, bl.tri~, bl.rsaw~, bl.sawtri~, bl.sq~]
Start by taking a look at bandlimited~-help.pd
The object should act a lot like [osc~] and [phasor~]. The first signal inlet controls the frequency while the second float inlet sets the phase and it takes a creation argument for the starting frequency. There are three methods but I'll let the help file explain.
There should already be a win32 dll build and an OS 10.5 build. I'm sure linux folk can take care of themselves in this regard. Tested on PD-Extended 0.41
There's a repository here
http://gitorious.org/bandlimited/bandlimited
I plan on adding more waveforms and am taking suggestions.
v0.92
EDIT:
Version v0.92 includes a new waveform, pulse. This wave form is a lot like a square wave but with a variable duty cycle (it's not symmetric). This new parameter is set by a third signal inlet whose value should be between 0 and 1. 0.5 would give you a square wave.
Version v0.91 includes new method "approximate" which uses the CPU a little less for a close enough waveform.