How would I calculate the amplitudes, phases, and frequencies of the harmonic peaks resulting from frequency modulating (and/or phase modulating) a waveform stored in frequency domain representation?

(In my case it is enough to only be able to deal with integer multiples of the waveform's fundamental frequency)

2 Answers 2


Not entirely sure what you mean with the following phrase?

a waveform stored in frequency domain representation?

However, with FM the frequencies of the partials can be easily calculated as a function of the carriers frequency and the modulators frequency, such that C, C+M, C+2M, C+3M, etc. and C-M, C-2M, C-3M, etc. give the partials.

Calculating the amplitudes of the partials is more complicated and requires a Bessel function based on the modulation index. Probably not calculations you want to do by hand.

  • This is exactly the type of lead I am looking for. I do want to calculate it explicitly as I would like my additive synth (in-development) to support FM.
    – MickLH
    Oct 4, 2013 at 15:43
  • Bessel is exactly what I wanted, learned that concept and it's all easy now :)
    – MickLH
    Oct 4, 2013 at 16:13
  • @MickLH no problem. I'm not sure exactly what you are trying to do, but implementing FM with an additive engine will not be very efficient. The beauty of FM is that with only two oscillators you can achieve many partial frequencies (harmonic and inharmonic).
    – Bit Depth
    Oct 4, 2013 at 18:22
  • Yeah I agree it will be horrible slow ;) but the whole synth exploits operating in frequency domain (perfect filters, arbitraty spectrum morphs, etc). Being an EDM/Dubstep focused synth though, the characteristic FM sound is required in some cases.
    – MickLH
    Oct 4, 2013 at 18:32

By using a good spectrum analyzer and reading the values before and after is probably the easiest. I have no suggestions for an analyzer, but there are lots, so you might find something that's suitable, if you do a bit of searching.

I don't know if an automatic solution exists, but it would be a simple program (and can be done in e.g. Matlab and such as well).

Depending on what kind of frequency modulation, there ought to be mathematics as well for finding the information. Although the solution would need to be computed.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.