Help understanding *~ in FM synth tutorial patch

Mauro Trotta's icon

I did the FM synth tutorial of max and everything is clear except the argument in the *~ object that multiply the Carrier frequency and Harmonicity, and then Harmonicity and Modulation index (highlited in the screenshoot). They both have a "0" on it, and I don´t understand why. My logic said that this number will multiply the incoming signals to "0" so you would´nt hear anything, but that´s not the case.

Christopher Dobrian's icon

In the simpleFM~ abstraction, those two 0s are actually changeable arguments #1 and #2, allowing default values to be specified as typed-in arguments in the parent patch (e.g. simpleFM~ 2. 10.). Since no arguments have been typed into the simpleFM~ object in the tutorial example, those values show up as (the default) 0 in the object's subpatcher window. But...

All of that math just gets added to the carrier frequency value before it goes into the cycle~ object, to modulate the frequency of the oscillator, so even if they equal 0, the sound will still be audible if the carrier frequency is some audible number of Hertz.

Try clicking on the different preset buttons in the preset object labeled, "FM tone settings", then click on the button labeled "Play a note", and you'll hear the effect of different harmonicities and modulation indices.