audioJS

@audio/synth-fm

Status pending calibration

npm0.2.1licenseMIT

FM synthesis — Chowning phase modulation, single-op or serial op stack, bell/epiano presets

Overview

Install
Updated
Family
synth, 20 packages under it
Tags
make

FM (phase modulation) — Chowning 1973, single-op or serial ops stack, per-op feedback + index decay; bell/epiano presets; FFT sidebands match Bessel J_k to 0.00%

import fm, { bell, epiano } from '@audio/synth-fm'

Chowning 1973 FM synthesis ("The Synthesis of Complex Audio Spectra by Means of Frequency Modulation," JAES 21(7)), implemented as DX7-style phase modulation. Single operator by default, or a serial ops stack (innermost-first, each op's output phase-modulates the next, last modulates the carrier) — per-op ratio/index/feedback/indexDecay. bell and epiano are FM-classic presets built on the same kernel.

fm(440, { ratio: 1.4, index: 10, indexDecay: 2 })   // → Float32Array
bell(440)                                            // Chowning's inharmonic bell/gong
epiano(440)                                          // 2-op DX7-style e-piano
Param Default
freq — Carrier Hz (positional)
ratio 2 Modulator:carrier ratio (single-op form)
index 5 Peak modulation index, radians
indexDecay 0 Index decay time constant, seconds (0 = static)
indexFloor 0 Index floor after decay
feedback 0 Modulator self-feedback, radians
ops — Serial modulator stack [{ratio, index, ...}] — overrides the single-op params
duration 1 Seconds
attack / release 0.005 / 0.1 Seconds
amp 0.8 Peak amplitude
fs 44100 Sample rate

Use when: classic FM timbres (bells, e-piano, brass-ish tones); ops for multi-operator stacks.


Part of @audio/synth — the synth family umbrella.

MIT © audiojs