I'm not sound coder or synth architect, however I would like to quickly explain something about a DSP issue that many of us amateurs have faced with at least once while doing this kind of fun programming. It's about frequency modulation - something very easy in conception yet something most people don't really understand, I believe.

Let's start with a well known example of a simple cosine of constant frequency, for example 440 hz:

y(t) = cos( 2π*440*t )

where

Now, imagine we want this tone to change frequency with time. Like, we want that after three seconds the frequency has completely decreased to zero hertz, in a linear manner. Then, many people will make the following mistake:

y(t) = cos( 2π*440*t*(1-t/3) )

hoping that at

Another example, we all have one day tried to do

y(t) = cos( 2π*(440+40*cos(2π*t))*t )

in the believe it would create a nice vibrato effect or something. But we get an explosion of beeps instead.

So, what's wrong again?

The big misconception is that

y(t) = cos( 2π*440*t )

actually sounds at 440 hz because that thing in front of "t" reads "2π*440", and that therefore anything in front of "t" will give the appropriate pitch to our tone, what obviously probes to be false. The truth is that the pitch of a cosine is given by

So, let's write the tone above as

y(t) = cos(p(t)), p(t) = 2π*440*t

dp(t)/dt = p'(t) = 2π*440

thus it's sound is 2764.6 radians per second, or 440 cycles per second (hertz). Let's take the example of the fading sound he wanted to achieve: we were using

p(t) = 2π*440*t*(1-t/3)

meaning the pitch was

p'(t) = 2π*440*( 1-2*t/3 )

so we were clearly starting at a pitch of 440 hz (

p'(t) = 2π*440*(1-t/3), therefore

p(t) = 2π*440*(t-t*t/6) = 2π*440*t*(1-t/6),

so

y(t) = cos( 2π*440*t*(1-t/6) )

For the tremolo effect, we want

p'(t) = 2π*(440 + 40*cos(2pit) )

and therefore

p(t) = 2π*( 440*t + 40*sin(2π*t)/2π )

and this one does not explode but do what it's supposed to do.

So, remember,

### The big misconception

Let's start with a well known example of a simple cosine of constant frequency, for example 440 hz:

y(t) = cos( 2π*440*t )

where

**is normally the "time" and can be expressed for example as***t***where***t=n/fs***is the current sample number and***n***is the sampling frequency, say 44100 hz.***fs*Now, imagine we want this tone to change frequency with time. Like, we want that after three seconds the frequency has completely decreased to zero hertz, in a linear manner. Then, many people will make the following mistake:

y(t) = cos( 2π*440*t*(1-t/3) )

hoping that at

**the 440 is cancelled out.***t=3***Wrong!!!**If you listen to it (or draw the graph) you will see that the signal actually has zero frequency at time**and that at***t=1.5***is has completely recover its original frequency (although it's vertically mirrored).***t=3*Another example, we all have one day tried to do

y(t) = cos( 2π*(440+40*cos(2π*t))*t )

in the believe it would create a nice vibrato effect or something. But we get an explosion of beeps instead.

So, what's wrong again?

### The explanation

The big misconception is that

y(t) = cos( 2π*440*t )

actually sounds at 440 hz because that thing in front of "t" reads "2π*440", and that therefore anything in front of "t" will give the appropriate pitch to our tone, what obviously probes to be false. The truth is that the pitch of a cosine is given by

**the derivative of its argument**.So, let's write the tone above as

y(t) = cos(p(t)), p(t) = 2π*440*t

**is the argument of the cosine, and its derivative is***p(t)*dp(t)/dt = p'(t) = 2π*440

thus it's sound is 2764.6 radians per second, or 440 cycles per second (hertz). Let's take the example of the fading sound he wanted to achieve: we were using

p(t) = 2π*440*t*(1-t/3)

meaning the pitch was

p'(t) = 2π*440*( 1-2*t/3 )

so we were clearly starting at a pitch of 440 hz (

**), geting 0 at***t=0***and going back to -440 at***t=1.5***. What we wanted instead was more***t=3*p'(t) = 2π*440*(1-t/3), therefore

p(t) = 2π*440*(t-t*t/6) = 2π*440*t*(1-t/6),

so

y(t) = cos( 2π*440*t*(1-t/6) )

For the tremolo effect, we want

p'(t) = 2π*(440 + 40*cos(2pit) )

and therefore

p(t) = 2π*( 440*t + 40*sin(2π*t)/2π )

and this one does not explode but do what it's supposed to do.

### Conclusion

So, remember,

**the pitch of a cosine is given by the derivative of its argument**, not by the expression in front of "t" of the argument. Some people*know*this as the famous "additive fm is better than multiplicative fm", what tells me they don't really know what's going on. Here you have the right interpretation of that sentence.