DPW4Saw Sawtooth via 4th order differerentiated polynomial waveform

DPW4Saw.ar(freq, mul, add )

Differentiated polynomial waveforms described in their technicalities here:

Vesa Valimaki, Juhan Nam, Julius O. Smith and Jonathan S. Abel

Alias-Suppressed Oscillators Based on Differentiated Polynomial Waveforms

IEEE Transactions on Audio, Speech, and Language Processing 18(4) May 2010, pp 786--798

Internally, uses DPW2 (quadratic polynomial) for frequencies below 400Hz, with a crossfade in the 400-600Hz region to DPW4. DPW4 behaves well then for higher frequencies.

Slightly less efficient than Saw when lots of UGens running, very slightly duller sound.

See also: BlitB3Saw, DPW3Tri

{ DPW4Saw.ar(XLine.kr(2000, 20, 10)) }.play;

{ DPW4Saw.ar(MouseX.kr(20,12000,'exponential'))*0.5 }.play;

{Saw.ar(MouseX.kr(20,12000,'exponential'))}.play

//DPW4Saw less efficient than the already band limited Saw UGen

{ Mix(DPW4Saw.ar(Array.rand(100,50,5000))*0.01) }.play;

{ Mix(Saw.ar(Array.rand(100,50,5000))*0.01) }.play;