home/ atoms/ sc-fm-synthesis-pm

SuperCollider's PMOsc implements phase modulation synthesis, producing FM-like timbres with modulator-as-ratio control

PMOsc is SC’s phase-modulation oscillator. Like classic FM, it produces sidebands but expresses the modulator as a ratio of the carrier frequency, so the harmonic relationship is preserved across pitch changes. The pmindex argument controls modulation depth: higher index = more sidebands = brighter timbre. EnvGen applied to pmindex creates a brightness envelope (typically decaying for metallic, bell, or percussion sounds). The figure 1.7 PMCrotale SynthDef is a canonical worked example: perc envelope on both pmindex and amplitude, with a randomised modulator ratio for organic variation.

Examples

SynthDef(“PMCrotale”, { arg midi = 60, tone = 3, art = 1; var freq = midi.midicps; var mod = 5 + (1/IRand(2, 6)); Out.ar(0, PMOsc.ar(freq, mod*freq, pmindex: EnvGen.kr(Env.perc(0, art), levelScale: tone), mul: EnvGen.kr(Env.perc(0, art), levelScale: 0.3))) }).add;

Assessment

Implement a PMOsc-based bell patch with a decaying brightness index envelope. Describe the spectral change as pmindex decays from 8 to 0. How does changing the modulator ratio shift the harmonic series?

“out = PMOsc.ar(freq, mod*freq, pmindex: EnvGen.kr(env, timeScale: art, levelScale: tone), mul: EnvGen.kr(env, timeScale: art, levelScale: 0.3));”
corpus · the-supercollider-book-official-code-examples-scbookcode-gpl · chunk 1