Skip to content

dsp: six-operator FM, DX7 algorithms 5, 16, 22 and 32 - #332

Merged
mishan merged 2 commits into
masterfrom
fm6
Oct 3, 2026
Merged

mishan merged 2 commits into
masterfrom
fm6

Conversation

@mishan

@mishan mishan commented Oct 3, 2026

Copy link
Copy Markdown
Owner

A DX7-style six-operator FM synth, built as graphs: in keeping with osc::fmop's "the graph is the algorithm", each algorithm is its own file.

  • env::dx (new plugin): the DX7 envelope. Four rates and four levels, 0-99, levels at 0.75 dB a step, and segments moving at a steady dB/s with the rate doubling every ~6.2 steps. Rising segments jump to about -44 dB and then slow as they climb, as the hardware's do. ratescale (0-7) is keyboard rate scaling. play ends once the release reaches an L4 of 0.
  • dsp/dx5.dsp, dx16.dsp, dx22.dsp, dx32.dsp: six osc::fmop and six env::dx each, wired as DX7 algorithms 5, 16, 22 and 32. Per op the knobs are ratio, detune (cents), output level (0-99, in the envelope's dB) and velocity sensitivity (0-7, up to 25 dB), plus four rates and four levels. Each graph also has feedback on op 6, rate scaling and output. A modulator at level 99 swings its target's phase by 8 radians. They ship as an electric piano, a bass, brass and an organ.

Testing

  • ctest -R "dsp|fx|catalog|gencheck|nodes": 18/18 pass. docs/NODES.md is regenerated.
  • The web build (build-web) compiles the new plugin.
  • Rendered a phrase on each graph: no clipping or NaN. A held note on dx5 decays from -21 to -48 dB over 3 s and ends on release.

mishan added 2 commits October 3, 2026 15:24
Four rates and four levels, 0 to 99. Levels are 0.75 dB a step and
segments move at a steady dB a second, the rate doubling every 6.2
steps. A rising segment jumps to -44 dB and slows as it climbs, and
ratescale speeds every segment up the keyboard.
Six osc::fmop and six env::dx per graph, wired as the algorithm, with
the panel's knobs per op: ratio, detune, output level, velocity
sensitivity, four rates and four levels, plus feedback on op 6 and
rate scaling. Each ships as a sound: electric piano, bass, brass,
organ.
@mishan
mishan merged commit 6fbaef9 into master Oct 3, 2026
17 of 19 checks passed
@mishan
mishan deleted the fm6 branch October 3, 2026 22:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant