frequency modulation synthesis

part of sound/synthesis



  • modulating the frequency of one signal by another
  • vibrato is slow frequency modulation below 20 hz
  • easy way to create time-varying spectra
  • the modulator frequency defines the location of spectral components
  • the modulator amplitude defines the amplitudes, number of spectral components, and bandwidth
  • because only the frequency changes, the waveform looks level and not spikey. it looks distinctly different from a waveform created by summing the corresponding partials
  • the overall amplitude stays practically the same regardless of bandwidth
  • partials with negative frequencies are possible, which in this context means they will have an inverted phase. these partials may interfere with the positive frequency partials
  • there can be multiple carriers and modulators, and the general name for each is operator
  • modulation depth: frequency deviation from the carrier frequency
  • modulation index or index of modulation

    • carrier-deviation-frq / mod-frq
    • example: carrier 200, modulator 100, modulator peak amplitude 300 (-300 to 300), modulation index 6 (600 / 100)
  • if the modulation were not be around the center then the center frequency would vary with the modulation index

operator configurations

  • feedback: has a more even partial number and amplitude as index changes
  • multiple carrier

    • superimposes the spectra of each carrier
    • can create formant regions, additionally with differing decay times per formant region
  • multiple modulator

    • parallel

      • sidebands: c +- (i * m1) +- (k * m2)

      • like each produced sideband is modulated as a carrier by the other modulator

      • wave equation: a * sin(c(t) + i1 sin(m1 t) + i2 * sin(m2 t)) series In series MM FM the modulating sine wave M1 is itself modulated by M2 amplitude SMMFMt = A × sin {Ct + [I1 × sin(M1t + [I2 × sin(M2t)])]}.

partial frequencies

carrier-frequency - partial-index * modulator-frequency
carrier-frequency + partial-index * modulator-frequency

partial amplitudes

bessel(partial-index, modulator-amplitude / modulator-frequency)

the first parameter is the order of the bessel function and the second argument is the modulation index

online calculator

time domain waveform

fm(t) = carrier-amplitude * sin(t * carrier-frequency + modulator-amplitude * sin(t * modulator-frequency))


fm(t) = sum(n, -infinity, infinity, bessel(n, modulator-amplitude / modulator-frequency) * sin(t * carrier-frequency + n * t * modulator-frequency))