DPW3Tri Triangle via 3rd order differerentiated polynomial waveform
DPW3Tri.ar(freq, mul, add )
Distortion creeps in for changes at low frequencies when under 200Hz. But very clean above that.
See also: DPW4Saw, BlitB3Tri
//distortion creeps in under 200Hz
{ DPW3Tri.ar(XLine.kr(2000, 20, 10)) }.play;
//very fast sweeps can have transient distortion effects
{ DPW3Tri.ar(MouseX.kr(200,12000,'exponential')) }.play;
//compare:
{LFTri.ar(MouseX.kr(200,12000,'exponential'))}.play
//less efficient than LFTri
{ Mix(DPW3Tri.ar(Array.rand(10,50,5000))*0.1) }.play;
{ Mix(LFTri.ar(Array.rand(10,50,5000))*0.1) }.play;
//triangle is integration of square wave; warning loud, not so kind
{Integrator.ar(Pulse.ar(MouseX.kr(440,8800),0.5),0.99)}.play
//differentiation of triangle is square
{HPZ1.ar(2.0*DPW3Tri.ar(MouseX.kr(440,8800)))}.play
//compare
{Pulse.ar(MouseX.kr(440,8800),0.5)}.play