Back to examples

FM sound designer

Original four-operator patches. Start from a recipe, hold C4 or Space, and edit. Begin with low device volume. Host gain defaults to 0.15, capped at 0.3. No listening endorsement or physical-device certification.


  
No audio created. Click Start.

Signal graph

Arrows point from phase modulator to recipient; carrier arrows reach output. Feedback is the two-sample averaged operator-1 loop. Topology, selective targets, level, detune, waveform and modulation-index changes retrigger a held gate; ratio, feedback, ADSR and LFO depth/rate use native live controls.

LFO

Envelope in dB / seconds

ADSR times are seconds, sustain is linear amplitude; straight segments in dB imply exponential amplitude. −96 dB is the engine floor; start/release end become exact zero. Preview is a fresh note, not an oscilloscope: live ADSR edits re-anchor from current dB; key-rate scaling, pitch envelopes, velocity and LFO may alter the actual note.

Canonical patch JSON

Single patch, maximum 16 KiB. Strict validation rejects unknown fields, invalid numbers and non-data objects; legacy input is normalized to version 7. Each operator supports periodic shapes or deterministic held noise. Noise rate is ignored for other waveforms; ratio/fixed-Hz/pitch controls do not pitch noise. Waveform/rate changes retrigger held notes. Square, saw and noise can alias despite oversampling. Export can be passed directly to opm.playNote({ voice: patch, note: 60 }).