{ var drive = 2; // change this to see effect var x = Line.kr(-1, 1, 0.01); // simulate signal range tanh(x * drive) / tanh(drive) }.play; ( { var drive = 20; // Try values like 1, 5, 10, etc. var sig = SinOsc.ar(220); // Your basic oscillator var shaped = tanh(sig * drive) / tanh(drive); // Dividing normalizes it for some reason I don't understand shaped * 0.1 // scale output to prevent clipping }.plot; )