2023-04-05

# frequency modulation synthesis

part of sound/synthesis

# notes

• 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))

alternative:

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