2017-06-04 0:47 GMT-03:00 Jean Menezes da Rocha
I managed to install SuperCollider and run your example of Phase Modulation. I could achieve the exact same sound with the following ChucK code:
SinOsc mod => SinOsc car => dac;
400 => car.freq; 201 => mod.freq; mod.freq() * Math.PI => float ind => mod.gain; // this bugger works with much greater values as standard gain... 2 => car.sync; // FM instead of syncing to phase. don't know why...
while ( true ) { 1::second => now; }
It might sound the same, or similar, but this is still frequency modulation and not phase modulation.
The weird thing is that I had to use 2 (FM) as a value for .sync, contrary to my intuition of syncing to phase.
Again, not weird, just a fact that Frequency and Phase modulation are related
Another oddity is the way to calculate the modulation index, which I admit was a wild guess that turned out to be correct. I am also curious if anyone can explain this.
It's not easy to explain, but you found the magic number/formula that makes Frequency modulation sound like Phase Modulation.
However, I am now the one struggling to figure out the difference between this phase modulation and FM
In short, they behave differently with the same parameters, but the parameters can be "converted"/"adjusted" to sound the same.
syncing to phase, as was my first intuition, yields a rather different sound (much harsher) and does not respond to changes to the carrier's frequency.
Yep, as I noted, and it is not actually doing phase modulation Hence, a working phase modulation code still remains mysterious to me. It seems that when you have a phase input to SinOsc, it'll only consider that input and disregard any frequency input, is that possible? Perhaps you can just feed a phase input to SinOsc and then modulate that signal. Like, send it a phasor input and modulate it. That's gotta work. cheers