// saw ( { sum( {|i| var j = i + 1; SinOsc.ar(300 * j, 0, 1/j) } ! 20) }.plot ) // inverse saw ( { sum( {|i| var j = i + 1 * 2; SinOsc.ar(300 * j, pi, 1/j) } ! 20) }.plot ) // pulse ( { sum( {|i| var j = i * 2 + 1; SinOsc.ar(300 * j, 0, 1/j) } ! 20) }.plot ) // triangle ( { sum( {|i| var j = i * 2 + 1; SinOsc.ar(300 * j, pi/2, 1 / j.squared) // cosine wave (phase shift) } ! 20) }.plot )