Phase modulation with feedback can produce exquisite sawtooth, some alternatives here:
Here, the first two harmonics (or operators) feedback in the phase parameter:
(
SynthDef(\PM, {
arg freq=110;
var sig, index=1.5;
sig = SinOsc.ar(freq: freq, phase: index*LocalIn.ar(numChannels: 1, default: 1)) + (SinOsc.ar(freq: freq * 2, phase: index*LocalIn.ar(numChannels: 1, default: 1)).softclip);
LocalOut.ar(sig);
Out.ar(0, sig*0.1);
}).play
)
Going wild in the modulation can lead to some interesting aliasing effects:
(
SynthDef(\PM, {
arg freq=110;
var sig, index=SinOsc.ar(1/10,3pi/2).range(1.0,1.8);
sig = SinOsc.ar(freq: freq, phase: index*LocalIn.ar(numChannels: 1, default: 1)) + (SinOsc.ar(freq: freq * 0.001, phase: index*LocalIn.ar(numChannels: 1, default: 1)).softclip);
LocalOut.ar(sig);
Out.ar(0, sig*0.1);
}).play;
)